문제제기
여러 cross-validation 방법들이 있는데 가장 효과가 좋은 방법은 무엇일까?에 대한 의문이 들어서 조사하기 시작함
Cross Validation methods
K-fold Cross Validation
- n개의 data를 균등하게 섞고 k개의 그룹으로 나눠서 1개만 test set, k-1개는 train set
- K-fold를 나누는 방법:
https://scikit-learn.org/stable/auto_examples/model_selection/plot_cv_indices.html - -> 정리 필요
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가 작아진다
- variance 줄이려면 repeat/iterate해라
-> overfit?
- k가 10이면 전체 train 데이터셋의 90%를 학습하는 것이니, learning curve가 충분히 flat
-> local minima가 나타나는 울퉁불퉁한 learning curve가 아니라 완만하다의 의미로 flat
그래서 데이터셋을 쪼갠 subset 임에도 불구하고 전체 데이터셋의 경향을 충분히 포함하고 있으니, 무시해도 될만한 bias다
그래서 k값으로 10이 reasonableHow 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 등등을 사용함
참조 링크
교차 검증과 정규화
K-fold, LOOCV 참고Nested Cross Validation for Algorithm Selection
Nested CV 참고
'개발 및 공부 > 네이버 부스트캠프 AI Tech 2기' 카테고리의 다른 글
Python으로 Slack에 알림 보내기 (0) | 2021.09.01 |
---|---|
MLE(최대우도법)과 MAP(최대사후법) 정리 (0) | 2021.08.26 |
Matplotlib에서 tick locator와 set tick의 차이 (0) | 2021.08.25 |
Weight initialize를 하는 이유? (0) | 2021.08.14 |
후기) 네이버 AI 부스트캠프 2기 합격 후기 (4) | 2021.08.04 |