All about

제가 공부한 내용을 정리한 글입니다. 제가 나중에 다시 볼려고 작성한 글이다보니 편의상 반말로 작성했습니다. 잘못된 내용이 있다면 지적 부탁드립니다. 감사합니다.


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 을 몇개로 나누느냐를 의미합니다.


아래 내용을 참고해주세요.


출처: Multiple Versus Single Set Validation of Multivariate Models to Avoid Mistakes.



Cross Validation 의 단점

결국에는 Cross validation 은 test 에 있어서 seen data 를 사용하기 때문에 test 결과가 Model 이 정말 General 한 경우가 아닐 확률이 상대적으로 높습니다. 때문에, (1) 전체 Data set 을 최대한 늘리는 것이 가장 좋을 것이고, (2) 처음부터 Data set 에서 일부 Data 를 떼내어 Test 용으로 Unseen 한 상태로 두는 것이 좋습니다.




이 글이 도움이 되셨다면 공감을 표시하는 아래 하트를 눌러주세요. 구독을 눌러주시면 더 좋구요! 감사합니다.

공유하기

facebook twitter kakaoTalk kakaostory naver band
loading