- 모델 학습 시 데이터를 훈련용과 검증용으로 교차하여 선택하는 방법
- 종류
- K-Fold Cross-Validation
- Hold-out Cross-Validation
- Leave-p-Out Cross-Validation(LpOCV)
- Leave-One-Out CV(LOOCV)
- accuracy 검증시, 항상 같은 값이 나오는 것이 아니지만, np.mean(평균값)이 대표값을 확인 할 수 있다.
장점 | 단점 |
---|---|
특정 데이터셋에 대한 과적합 방지 | |
더욱 일반화된 모델 생성 가능 | 모델 훈련 및 평가 소요시간 증가(반복 학습 횟수 증가) |
데이터셋 규모가 적을 시 과소적합 방지 |
- 전체 데이터셋을 K개의 fold로 나누어 K번 다른 fold 1개를 test data로, 나머지 (K-1)개의 fold를 train data로 분할하는 과정을 반복함으로써 train 및 test data를 교차 변경하는 방법론
- 학습 데이터 세트와 검증 데이터 세트를 점진적으로 변경하면서 마지막 K번째까지 학습과 검증을 수행하는 것
from sklearn.model_selection import KFold
kf=KFold(n_splits=보통 3 or 5)
장점 | 단점 |
---|---|
모든 데이터를 train 및 test에 활용 → 과적합/과소적합 탐지 및 더욱 일반화된 모델 생성 가능 | 아래와 같은 경우에는 CV 수행 시 오히려 모델 성능이 악화될 수 있습니다. - 순서가 고려된 데이터가 shuffle 되어 있지 않은 경우 - 데이터 불균형(Data Imbalance) → 층화 교차검증(Stratified K-fold CV)을 통해 보완 - 각기 다른 fold에 같은 데이터(i.e., duplicate)가 존재할 경우 - Natural Group(e.g., 같은 사용자/머신 데이터) 데이터가 여러 fold에 shuffle 된 경우 |
- 층화 K-fold CV는 기존 K-fold CV와 비슷한 방법으로 수행되나 계층을 고려하는 방법
from sklearn.model_selection import cross_validate
cross_validate(estimator, X, y=None, cv=skfold, return_train_score=True)
'제로베이스 데이터 취업 스쿨' 수강중
[Machine learning] 쉽게 설명하는 Cross Validation 교차검증
[머신러닝] 교차검증(Cross-validation) 필요성 및 장단점
파이썬 머신러닝 교차검증 - KFold, StratifiedKFold, cross_val_score, GridSearchCV
[바람돌이/머신러닝] 교차검증(CV), Cross Validation, K-fold, TimeSeries 등 CV 종류 및 이론|작성자 바람돌이