본문 바로가기
Research/Machine Learning

Overfitting, Underfitting, Cross-validation

by IMCOMKING 2014. 6. 6.

Overfitting (과적합) : training 데이터 셋에 대해서는 매우 높은 성능을 보이지만, 학습할 때 사용되지 않은 test 데이터 셋에 대해서는 정확도가 떨어지는 문제.

Underfitting : training 데이터를 충분히 학습하지 못하여, test 데이터 뿐만 아니라, training 데이터에서 조차도 성능이 낮은 문제.


K-Fold Cross-validation (교차검증, 교차타당화) : 전체 데이터 셋에서 training과 test 성능을 통계적으로 타당하게 측정하는 방법. 

전체 데이터를 랜덤하게 나누어 K 등분을 하고, K개 중 1번 째 데이터를 test 셋으로, 나머지 전부를 training 셋으로 사용하여 학습한 모델의 성능을 측정한다. 그다음 다시 K개중 2번 째 데이터를 test 셋으로, 나머지 전부를 training 셋으로 사용하여 성능을 측정.

이러한 과정을 모든 K개의 데이터 셋에 대해 수행한다음, 결과들을 다시 평균내어 최종적인 성능 지표로 사용한다.


이는 K 등분을 한 데이터 중 어떤 우연히 특정한 training과 test셋에서만 성능이 잘 나올 수 있기 때문에 모든 K개의 데이터 셋을 트레이닝과 테스트에 최소 한번 씩 사용된다는 장점이 있다.

또한 이러한 K-Fold Cross-validation 자체를 또다시 N번 반복하여, 랜덤하게 K 등분하는 과정을 또다시 반복하여 정말 엄밀하게 가능한 경우에 대한 training과 test를 다 해보기도 한다. 이 경우 (K등분*N번 반복)의 모델 training과 test가 일어나 수행 시간이 매우 오래걸리지만, 대신 가장 통계적으로 정확한 성능 평가를 할 수 있다.

http://en.wikipedia.org/wiki/Cross-validation_(statistics) 에서 k-fold cross-validation를 확인


* Cross-validation 에서 주의 할 점 : time-series 데이터 및 sequential 데이터에서는 크로스 벨리데이션이 쓰여서는 안되는 경우가 있다. 예를 들어 30fps의 동영상 데이터를 학습하여 각 장면별로 classification 하는 문제에서 전체 동영상 데이터를 크로스 벨리데이션 할 경우, 무작위적으로 경계가 나누어지더라도 1초에 찍힌 장면이 training 데이터에 들어가고, 1.01초에 찍힌 장면이 test 데이터에 들어가는 경우가 발생할 수 있다.
이러한 시퀀셜한 데이터의 경우 1초와 1.01초의 데이터가 거의 유의미한 정도로 같다고 볼 수 있으므로, training에 쓰인 데이터와 거의 동일한 데이터를 test에 사용하는 것이 되어 성능이 매우 높은 것 처럼 보일 수 있다.
따라서 이 경우는 크로스 벨리데이션이 아닌 완전히 training과 test셋 데이터를 split하여 성능 측정을 해야한다.



Validation set : overfitting인지, underfitting인지를 확인하기 위해 사용되는 데이터 셋. Training 데이터셋 중의 일부를 validation set 으로 놓고 성능을 측정해보며, 성능이 어느정도 수렴하거나, 또는 학습을 반복 할 수록 성능이 오히려 떨어지는 지점을 오버피팅의 시작으로 간주한다.


댓글