알고리즘을 학습시키는 학습 데이터와 이에 대한 예측 성능을 평가하기 위한 별도의 테스트용 데이터가 필요합니다. 이를 위해 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 방식으로 손쉽게 교차검증을 하도록 제공한다.
'Lecture ML' 카테고리의 다른 글
머신러닝 강좌 #9] 머신러닝 모델 성능 평가 - F1, ROC-AUC (0) | 2021.05.24 |
---|---|
머신러닝 강좌 #8] 머신러닝 모델 성능 평가 - 정밀도(Precision), 재현율(Recall) (0) | 2021.05.21 |
머신러닝 강좌 #7] 머신러닝 모델 성능 평가 - 정확도 (Accuracy), Confusion Matrix (0) | 2021.05.20 |
머신러닝 강좌 #6] 타이타닉 생존자 예측 실습 (0) | 2021.05.19 |
머신러닝 강좌 #5] 피처스케일링 (표준화 / 정규화) / StandardScler, MinMaxScaler (0) | 2021.05.17 |
머신러닝 강좌 #4] 데이터 전처리 - 레이블 인코딩, 원-핫 인코딩 (0) | 2021.05.15 |
머신러닝 강좌 #3] GridSearchCV - 교차 검증과 최적 하이퍼 파라미터 튜닝을 한 번에 (0) | 2021.05.15 |
머신러닝 강좌 #1] 나의 첫번째 머신러닝 프로그램 (0) | 2021.05.11 |