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 으로 놓고 성능을 측정해보며, 성능이 어느정도 수렴하거나, 또는 학습을 반복 할 수록 성능이 오히려 떨어지는 지점을 오버피팅의 시작으로 간주한다.
'Research > Machine Learning' 카테고리의 다른 글
ROC curve, ROC_AUC, PR_AUC, 민감도, 특이도 (15) | 2014.06.11 |
---|---|
조건부 독립과 응용 (0) | 2014.06.06 |
Linearity, Non-Linearity, Linear Regression, Logistic Regression (0) | 2014.06.06 |
Parametric vs Non-parametric (0) | 2014.06.05 |
Regression 모델의 성능 평가, 회귀분석 결과 확인 (0) | 2014.05.16 |
댓글