개발 및 공부/네이버 부스트캠프 AI Tech 2기

What is best cross-validation method?

Hㅏㄴ량 2021. 8. 14. 11:37

문제제기

여러 cross-validation 방법들이 있는데 가장 효과가 좋은 방법은 무엇일까?에 대한 의문이 들어서 조사하기 시작함


Cross Validation methods

K-fold Cross Validation


LOOCV(Leave-One-Out Cross Validation)

  • 1개의 data sample만 test set, n-1개는 train set
  • k=1인 K-fold CV로 볼 수도 있다

Nested Cross Validation

  • training set에도 cross validation을 다시 적용해서 best parameter를 찾아 training set에 적용해 train

자료조사

  • Choice of K in K-fold cross-validation

    • variance 줄이려면 repeat/iterate해라
      k가 클수록 bias는 낮아짐. 하지만 너무 크면 iterate를 못한다
      k가 크면 true expected error를 overestimate해서 bias가 작아진다
  • -> overfit?

    • k가 10이면 전체 train 데이터셋의 90%를 학습하는 것이니, learning curve가 충분히 flat
  • -> local minima가 나타나는 울퉁불퉁한 learning curve가 아니라 완만하다의 의미로 flat
    그래서 데이터셋을 쪼갠 subset 임에도 불구하고 전체 데이터셋의 경향을 충분히 포함하고 있으니, 무시해도 될만한 bias다
    그래서 k값으로 10이 reasonable

  • How do I know which method of cross validation is best?

    • 'better'의 기준에 대한 논의, 너가 얻은 model을 믿을 수 있는가?
    • model의 prediction error를 측정하는 법
    • 2-fold를 5번 반복하는 5-2 CV가 가장 밸런스가 좋다?
  • -> Nested CV

  • Optimal number of folds in K-fold cross-validation: is leave-one-out CV always the best choice?

    • LOOCV는 그냥 하기 쉬워서 그렇지, K-fold보다 high variance를 가져서 대부분은 worse하다는 내용
    • overfitting의 위험성에 대한 내용인듯?
    • K를 바꾸면서 K-fold를 반복해서 variance를 줄여라

결론

항상 best인 method는 없으며 data에 따라 맞게 method, parameter를 조정해야함
subset data에 특정 class가 포함되지 않아 bias가 굉장히 커질 수도 있으니 iterate를 통해 방지
보통은 5-2CV, 10-3~5CV 등등을 사용함


참조 링크