본문 바로가기

Lecture ML

머신러닝 강좌 #2] 교차검증에 대해

반응형

알고리즘을 학습시키는 학습 데이터와 이에 대한 예측 성능을 평가하기 위한 별도의 테스트용 데이터가 필요합니다. 이를 위해 train_test_split 함수를 많이 사용을 하는데요. 하지만 이 방법 역시 과적합(Overfitting)에 취약한약점을 가지고 있습니다. 

 

하지만 이 방법 역시 과적합(Overfitting)의 우려가 있습니다. 과적합은 모델이 학습 데이터에만 과도하게 최적화되어, 실제 예측을 다른 데이터로 수행할 경우에는 예측 성능이 떨어지는 경우를 말합니다. 이런 과적합의 오류를 수정하기 위해 교차 검증은 이러한 데이터 편증을 막기 위해서 별도의 여러 세트로 구성된 학습 데이터 세트와 검증 데이터 세트에서 학습과 평가를 수행하는 것입니다. 

 

이런 교차검증 방법에는 K-Fold,  Stratified K-Fold 방법이 있습니다. 

 


1. K-Fold

 

K-Fold 검증은 가장 보편적으로 사용되는 교차 검증 방법으로 K개의 데이터 세트를 만들어서 K번만큼 각 세트에 학습과 검증 평가를 하는 방법을 말합니다.  

 

위와 같이 원데이터 세트에서 5개의 폴드된 데이터 세트를 학습과 검증을 위한 데이터 세트로 변경하면서 5번 평가를 수행한 뒤, 이 5개의 평가를 평균한 결과를 가지고 예측 성능을 평가합니다.

 

 

2. Stratified K-Fold

Stratified K-Fold는 불균형한(imbalanced) 분포도를 가진 레이블 집합을 나누기 위한 방법으로 

 

K-Fold 검증은 가장 보편적으로 사용되는 교차 검증 방법으로 K개의 데이터 세트를 만들어서 K번만큼 각 세트에 학습과 검증 평가를 하는 K-Fold 방법을 말합니다.  불균형한 분포도를 가진 데이터 집합은 특정 레이블 값이 특이하게 많거나 매우 적어서 값의 분포가 한쪽으로 치우치는 것을 말합니다.

 

Stratified K-Fold은 이처럼 K폴드가 레이블 데이터 집합이 원본 데이터 집합의 레이블 분포를 학습 및 테스트 세트에 제대로 분배하지 못하는 경우의 문제를 해결해 줍니다.

 

3. cross_val_score 

이런 교차검증을 손쉽게 하기 위해 scikit에서는 cross_val_score을 제공합니다. 자세한 사항은 아래를 클릭, 참고로 cross_val_score는 Stratified K-Fold 방식으로 손쉽게 교차검증을 하도록 제공한다.

 

train_test_split()의 사용과 교차 검증 cross_val_score 이용하기

train_test_split() train_test_split()은 데이터 세트를 학습 데이터와 테스트 데이터로 분리할 때 사용하는 함수입니다. from sklearn.model_selection import train_test_split from sklearn.datasets import l..

nicola-ml.tistory.com

 

반응형