Cross Validation
Validation
Cross Validation 을 이해하려면 먼저 Validation 을 이해해야 합니다. Model 을 학습시킨 뒤 평가할 때 Test 와 Validation 이라는 2가지의 Phase 가 있습니다.
Test 는 Unseen data 가 입력되었을 때, 학습결과와 유사한 결과가 나오는지 확인하는 과정입니다. Generalization(일반화) 성능을 평가한다고 할 수 있죠. Model 이 Overfitting(과적합) 되었는지 확인한다고 할 수 있습니다.
Validation 은 Model 의 Hyper parameter(사용자가 임의로 지정할 수 있는 Parameter, 예를 들어 Learning rate(학습률) 같은)를 조정하는 Phase 입니다. Validation data set 을 Model 에 입력해보며 Hyper parameter 를 조정해서 Model 의 학습 방향을 정한다고 할 수 있습니다.
Cross Validation
제가 이해하고 있는 Cross validation 은 보통 Validation 보단 Test 의 목적으로 쓰이는 방법론으로, 준비된 Training data 가 적을 경우 사용합니다. 전체 Data set(표본)의 양 자체가 적은 경우 Data set 이 모집단을 잘 표현하지 못하고 편향되어 있을 수 있습니다. 당연히 전체 Data set 의 부분 집합인 Test data set 에 대한 성능 평가의 신뢰성도 떨어지게 됩니다.
다른 말로 표현하면 전체 Data set 이 적어서 Test data set 을 어떻게 잡느냐에 따라 성능이 상이하게 평가된다면 모델 평가 지표에 편향이 생겼다고 할 수 있습니다.
Cross validation 은 이런 경우를 극복하기 위한 아이디어입니다.
위 그림은 전체 Data set 을 5개로 나눈 경우입니다. 이미 학습이 완료된 Model 을 Iteration 1 에서는 E data 를 통해 test 를 수행하고, Iteration 2 에서는 D, Iteration 3 에서는 C, ... 로 진행하여 총 5번의 test 결과의 평균으로 Model 을 평가합니다.
Cross Validation 방법으로 Validation 을 한다면 위 그림의 iteration 을 모두 수행해서 나온 5개의 정확도의 평균을 구하여 첫번째 hyper parameter set 의 평가지표로 삼고 이것을, 일부 수정한 두번째 hyper parameter set 을 가지고 동일한 작업을 거쳐 구한 정확도의 평균과 비교하여 최적의 hyper parameter set 을 찾아 나갑니다.
위의 경우가 5-fold cross validation 입니다. 일반적으로 K-fold cross validation 이라고 하였을 때, K 는 Data set 을 몇개로 나누느냐를 의미합니다.
아래 내용을 참고해주세요.
Cross Validation 의 단점
결국에는 Cross validation 은 test 에 있어서 seen data 를 사용하기 때문에 test 결과가 Model 이 정말 General 한 경우가 아닐 확률이 상대적으로 높습니다. 때문에, (1) 전체 Data set 을 최대한 늘리는 것이 가장 좋을 것이고, (2) 처음부터 Data set 에서 일부 Data 를 떼내어 Test 용으로 Unseen 한 상태로 두는 것이 좋습니다.
source:
'Machine Learning' 카테고리의 다른 글
Momentum, AdaGrad, RMSProp, Adam --- NEED TO CHECK (0) | 2019.09.18 |
---|---|
MGD(Mini-batch gradient descent) vs SGD(stochastic gradient descent) (0) | 2019.09.18 |
Normalization (0) | 2019.09.18 |
L1 Regularization, L2 Regularization (0) | 2019.09.18 |
Generative VS Discriminative Models (0) | 2019.08.15 |
댓글