모델 일반화 성능을 평가하는 “교차검증”에 대한 페이지입니다.
개념
- 학습-평가 데이터를 골고루 설정하여 모델의 안정성을 높이고 과대적합을 감소시키는 통계적 기법
- train 데이터 내에서 다시 학습용(train)과 검증용(validation) 데이터로 분리하여 검증하는 과정
- TIP) test 와 validation 은 다른 것이오 ~ 헷갈리지 마시오 ~ 정리) train (train/validation) / test
- 5개로 분리된 데이터들이 모두 비슷한 정확도를 보인다면 모델이 일반화 되었다고 판단. 5개의 결과가 차이가 난다면 불안정한 모델이라고 판단.
- 왜 사용하냐? 한정된 데이터가 있으니까 ㅜㅜ
- ❗주의사항
(O) 교차검증을 통해 일반화를 확인(검증)하는 과정!
(X) 교차검증을 통해 모델을 일반화 할 수 있다!
- 일반적인 경우
- test 데이터에 맞게 하이퍼 파라미터 튜닝하다보니, 또 “과대적합” 발생할 가능성 존재! → 그래서 교차검증 실행해야 함!
- 교차검증 방법
- 검증 Data 를 하나로 고정하지 않고, Test 데이터의 모든 부분을 사용!
장담점
- 장점
- 모든 데이터 셋을 학습과 평가에 활용하기 때문에 안정적이고 정확함
- → 통계적 기법으로 과대적합을 감소시킴 (일반화에 도움이 됨)
- 모델이 훈련 데이터의 변경에 대해 얼마나 민감한지 파악가능
- 데이터 셋의 크기가 충분히 크지 않은 경우에도 유용하게 사용 가능
- 단점
- 여러 번 학습하고 평가하는 과정을 거치기 때문에 계산량이 많아짐
K-fold cross-validation

- 1개: 검증용 데이터(validation)
- k-1개: 학습용 데이터(train)
- → 총 k번 반복!
- → 반복하여 나온 모든 결과의 평균 구하기
사용법
from sklearn.model_selection import cross_val_score
score = cross_val_score(model, X, y, cv=나눌 개수)
score