train-test데이터 나누기를 여러번 반복해서 모델의 안정성을 높이고, 과대적합을 감소시키는 통계적 기법
기존의 검증방법에서 결국 test 데이터로 train하게되는 잘못된 결과가 생긴다. 그래서 교차검증으로 최종 평가 데이터를 단 1번만 사용하게끔 해야 한다. 예를들어 학습 : 검증 : 평가 = 5 : 3 : 2로 학습 데이터와 검증 데이터를 반복해서 학습하고 검증하면서 결과가 괜찮다싶으면 평가 데이터는 무조건 1번만 사용해서 결과를 확인한다. 검증 데이터를 하나로 고정하지 않고, 학습 데이터의 모든 부분을 사용한다.
# 교차검증 라이브러리 꺼내오기
from sklearn.model_selection import cross_val_score
cross_val_score(tree_model, X_onehot, y, cv=5)
# mean 함수 사용
cross_val_score(tree_model, X_onehot, y, cv=5).mean()
# 기존 평가에서는 1이나왔지만
# 교차검증을 해보니 0.944정도가 나옴
동작 원리는 데이터 set을 k개로 나눈다. 각 세트에 대해 구했던 평가 결과의 평균을 구한다. ex) 1번세트가 test데이터라면 나머지는 train 데이터, 2번 세트가 test 데이터라면 1, 3, 4, 5 train 데이터 ...
교차검증에서 사용되는 함수는 score( )가 아닌 cross_val_score( )함수를 사용한다. cv가 data set의 개수를 뜻한다.
'머신러닝' 카테고리의 다른 글
[머신러닝] 선형회귀 (2) | 2023.09.04 |
---|---|
[머신러닝] 특성 선택 (0) | 2023.08.29 |
[머신러닝] 알고리즘 시각화 (graphviz) (0) | 2023.08.25 |
[머신러닝] 결정 트리 버섯데이터 실습 (One-hot 인코딩) (0) | 2023.08.25 |
[머신러닝] 머신러닝 Decision Tree(결정 트리) 모델 (0) | 2023.08.24 |