교차검증 (Cross-Validation)
데이터를 반복적으로 나누어 모델의 일반화 성능을 평가하는 기법
과적합을 방지하고 새로운 데이터에 대한 예측 능력을 검증 가능
- 과적합 방지: 모델이 특정 데이터셋에 의존하는 것을 막음
- 일반화 성능 측정: 새 데이터에 대한 예측 능력 평가
- 데이터 효율성: 적은 데이터로도 학습과 평가가 가능
*과적합(Overfitting): 학습 데이터에는 성능이 좋지만, 새로운 데이터에는 성능이 낮은 경우
K-Fold 교차검증
- 전체 데이터를 K개의 폴드(fold)로 나눔
- 각 Fold가 한번씩 검증용으로 사용되고 나머지는 학습용으로 사용
- 총 K번 학습 및 평가를 수행 후, 그 평균을 최종 성능으로 평가
K-Fold 교차검증의 평균 정확도
𝔄 = (A₁ + A₂ + … + Aₖ) / K
𝔄ᵢ: i번째 Fold의 정확도 (Accuracy)
𝔄: 전체 평균 정확도
K: Fold의 개수
K=5일 경우
Fold | 학습 데이터 | 검증 데이터 |
1 | Fold2~Fold5 | Fold1 |
2 | Fold1, Fold3~Fold5 | Fold2 |
3 | Fold1, Fold2, Fold4, Fold5 | Fold3 |
4 | Fold1~Fold3, Fold5 | Fold4 |
5 | Fold1~Fold4 | Fold5 |
Scikit-learn 사용 예시코드
from sklearn.model_selection import KFold
from sklearn.metrics import accuracy_score
kf = KFold(n_splits=5)
accuracies = []
for train_idx, val_idx in kf.split(X):
X_train, X_val = X[train_idx], X[val_idx]
y_train, y_val = y[train_idx], y[val_idx]
model.fit(X_train, y_train)
preds = model.predict(X_val)
acc = accuracy_score(y_val, preds)
accuracies.append(acc)
mean_accuracy = sum(accuracies) / len(accuracies)
'⊢ DeepLearning' 카테고리의 다른 글
PyTorch 문법 정리 (0) | 2025.03.22 |
---|---|
하이퍼파라미터 튜닝 (0) | 2025.03.22 |
과적합(Overfitting) 방지 기법 (0) | 2025.03.22 |
전이학습(Transfer Learning) (0) | 2025.03.22 |
생성형 모델(Generative Models) (0) | 2025.03.22 |