교차검증
• 모델의 일반화 성능을 평가하기 위해 사용되는 방법. • 머신러닝 모델의 일반화 성능을 평가하는 데 유용한 기법이며, 모델 선택, 매개 변수 조정 등 다양한 상황에서 활용될 수 있습니다. • 일반적으로 데이터를 학습 세트와 검증 세트로 나누어 학습과 검증을 수행하는 것과는 달리, Cross-Validation은 데이터를 여러 개의 폴드(fold)로 나누어 모델을 여러 번 학습하고 평가하는 방식입니다. • 과정 ◦ 데이터 준비: 전체 데이터를 훈련 데이터 세트와 테스트 데이터 세트로 나눕니다. ◦ K-Fold 분할: ◦ 모델 학습 및 검증: The model is then trained on k-1 folds, and the performance of the model is evaluated on the remaining fold. This process is repeated k times, and the average performance of the model is reported. ◦ 성능 측정: 각 반복에서의 모델 성능을 평가하여 평균 성능을 계산합니다. 주로 평균 정확도, 평균 F1 점수, 평균 로그 손실 등을 사용합니다. • 장점 ◦ 데이터를 효율적으로 활용할 수 있어 모델의 일반화 성능을 더 정확하게 평가할 수 있습니다. ◦ Overfitting을 방지할 수 있습니다. 검증 데이터 세트를 사용하여 모델의 성능을 평가하기 때문에 검증 데이터에만 과적합되는 것을 방지할 수 있습니다. ◦ 모델의 안정성을 평가할 수 있습니다. K번의 반복을 통해 얻은 성능 평가 결과의 변동성을 확인하여 모델의 일관성을 판단할 수 있습니다. • drawback ◦ 추가적인 계산 비용을 요구하며, 모델 학습 시간이 늘어날 수 있다. 또한 데이터가 편향되어 있는 경우에는 적절한 분할 방법을 선택하여 편향을 최소화해야 합니다. ◦ It can be difficult to interpret the results.
K-Fold 분할
| 구분 | K-Fold (평가 중심) | OOF (활용 중심) |
|---|---|---|
| 핵심 결과 | K개 정확도의 평균점수 | 학습 데이터 전체에 대한 예측값 리스트 |
| 목적 | 내 모델의 성능이 얼마나 좋은가? 확인 | 이 예측값을 다음 모델의 입력으로 써야지! |
| 관점 | 모델 검증 (Validation) | 데이터 생성 (Stacking / Ensemble) |
데이터를 개의 폴드로 나눈다. 일반적으로 는 5 또는 10을 많이 사용한다.
StraifiedKFold(shuffle=True)- 폴드를 나눌 때 데이터를 섞는다. 일반적으로는 섞는게 성능이 높다.
- 시계열 데이터는 절대 섞으면 안된다. 순서가 중요하므로. 데이터를 섞으면 순서에 담긴 의미가 사라진다.
OOF 예측 (Out of Fold)
OOF는 k-fold 과정 중 검증용 Fold로 선택된 데이터를 통해 얻은 예측값 그 자체를 말한다. 즉, 모델이 학습할 때 보지 못했던(Out-of-fold) 데이터에 대한 예측값. 이 예측값을 모아서 모델 개선에 사용.
- 전체 학습 데이터에 대한 예측값 생성: k번의 반복이 끝나면 모든 데이터가 한 번씩은 검증 데이터가 되었으므로, 결과적으로 전체 학습 데이터에 대한 예측값 리스트를 얻는다.
- 앙상블(Ensemble) 및 스태킹(Stacking): 이 OOF 예측값을 다른 모델의 입력 피처로 사용되어 성능을 더 높이는 스태킹 기법의 핵심 재료로 사용. 단일 모델로 1번만 예측하는 것보다, 개의 결과를 평균내는 것이 일반적으로 더 정확하므로.
- 과적합 방지: 모델이 학습 과정에서 본 데이터가 아닌, 보지 못한 데이터에 대해 예측한 값이기 때문에 더 신뢰할 수 있음.