AI

교차 검증(cross validation)

땅콩새싹 2021. 7. 27. 13:59

 


 

교차 검증(cross validation)

지금까지는 모델을 훈련하고 평가할 때 train set과 test set을 사용했습니다. test set에서 얻은 점수를 보고 일반화 성능을 가늠해 볼 수 있습니다. 그러나 test set을 사용해 자꾸 성능을 확인하다 보면 점점 test set에 맞는 모델을 만들어 가는 것이기 때문에 test set을 계속 사용하는 것은 좋지 않을 수 있습니다. 모델을 만들고 최종적으로 한 번만 사용하는 것이 가장 좋습니다. 이를 해결하고자 교차 검증을 사용해보겠습니다. 교차검증은 train set에서 train set + validation set으로 데이터를 한 번 더 나누어 주고 validation set을 사용해 검증하는 방식입니다.

validation set을 사용해 모델을 훈련시키면 모든 데이터셋을 훈련에 활용해 정확도가 향상되고 데이터 부족으로 생기는 과소 적합이나 test set에 과대 적합되는 것을 방지할 수 있습니다. 즉 좀 더 일반화 된 모델을 만들 수 있습니다. 그러나 모델 훈련 횟수가 늘어나 시간이 오래 걸린다는 단점이 있습니다.

 

  • K-Fold Cross Validation (k-겹 교차 검증)

K-Fold는 가장 일번적으로 사용되는 교차 검증 방법입니다. 보통 회귀 모델에 사용되며 데이터가 독립적이고 동일한 분포를 가진 경우에 사용됩니다.

먼저 전체 데이터를 train set과 test set으로 나누고 train set을 train set과 validation set으로 사용하기 위해 k개의 Fold로 나누어 줍니다. 첫 번째 Fold를 validation Set으로 사용할 때 나머지 Fold는 train set으로 사용합니다. 모델을 training 한 뒤, 첫 번 째 validation set으로 평가합니다. 차례대로 다음 Fold들을 Validation Set으로 사용합니다. 이런 과정이 지나면 총 k개의 성능 결과가 나오며 이 k개의 성능 평균을 해당 학습 모델의 성능이라고 볼 수 있습니다.

 

  • 예제 코드

 

github 코드 첨부

https://github.com/erdnussretono/Cross-Vaidation_scikit-learn/blob/main/Cross%20validation.ipynb

 

GitHub - erdnussretono/Cross-Vaidation_scikit-learn

Contribute to erdnussretono/Cross-Vaidation_scikit-learn development by creating an account on GitHub.

github.com

 

'AI' 카테고리의 다른 글

랜덤 포레스트 (Random Forest)  (0) 2021.08.02
AutoML(Grid Search, Random Search)  (1) 2021.07.29
결정 트리 (Decision Tree) 실습  (0) 2021.07.23
결정 트리 (Decision Tree)  (0) 2021.07.22
SGD 실습(SGDClassifier scikit-learn)  (0) 2021.07.21