[머신러닝] 교차검증 (Cross Validation)

Soo·2023년 10월 25일
0
post-thumbnail

✏️ 교차 검증이란?

  • 모델 학습 시 데이터를 훈련용과 검증용으로 교차하여 선택하는 방법
  • 종류
    • K-Fold Cross-Validation
    • Hold-out Cross-Validation
    • Leave-p-Out Cross-Validation(LpOCV)
    • Leave-One-Out CV(LOOCV)
  • accuracy 검증시, 항상 같은 값이 나오는 것이 아니지만, np.mean(평균값)이 대표값을 확인 할 수 있다.

💡 이유

  • 과적합을 피하면서 파라미터를 튜닝하고 일반적인 모델을 만들고 더 신뢰성 있는 모델 평가를 진행하기 위함
  • 그 어떤 글보다 아래 글이 가장 잘 정리되어 있는 것 같아서 캡쳐했다.

💡 장단점

장점단점
특정 데이터셋에 대한 과적합 방지
더욱 일반화된 모델 생성 가능모델 훈련 및 평가 소요시간 증가(반복 학습 횟수 증가)
데이터셋 규모가 적을 시 과소적합 방지

✏️ K-Fold Cross-Validation

  • 전체 데이터셋을 K개의 fold로 나누어 K번 다른 fold 1개를 test data로, 나머지 (K-1)개의 fold를 train data로 분할하는 과정을 반복함으로써 train 및 test data를 교차 변경하는 방법론
  • 학습 데이터 세트와 검증 데이터 세트를 점진적으로 변경하면서 마지막 K번째까지 학습과 검증을 수행하는 것
from sklearn.model_selection import KFold
kf=KFold(n_splits=보통 3 or 5)

💡 특징

  • K는 하이퍼파라미터로서 주로 5~10 fold 사용
  • 최적의 K값을 찾기 위한 실험적 검증 필요
  • 가장 일반적인 교차검증 방법론
  • k가 적어질 수록 bias는 커질 것이고 k가 커진다면 variance가 커짐. 또한 k가 크다면 시간도 많이 걸릴 것
  • 학습 데이터 (Training set) - 문제집의 문제은행
    검증 데이터 (Validation set) - 문제집에 속한 기출 모의고사 (성능 검증 / 학습에는 활용되지 않음)
    시험 데이터(Test set) - 실제 시험

💡 절차

  1. 전체 데이터를 K개 fold로 분할
  2. 분할된 fold 중 test data로 할당된 적이 없는 fold 1개를 test data로 할당
  3. 위 2. 과정을 K번 반복
  4. K개의 모델 성능 평가 결괏값을 평균 내어 최종 결괏값으로 활용

💡 장단점

장점단점
모든 데이터를 train 및 test에 활용 → 과적합/과소적합 탐지 및 더욱 일반화된 모델 생성 가능아래와 같은 경우에는 CV 수행 시 오히려 모델 성능이 악화될 수 있습니다.
- 순서가 고려된 데이터가 shuffle 되어 있지 않은 경우
- 데이터 불균형(Data Imbalance) → 층화 교차검증(Stratified K-fold CV)을 통해 보완
- 각기 다른 fold에 같은 데이터(i.e., duplicate)가 존재할 경우
- Natural Group(e.g., 같은 사용자/머신 데이터) 데이터가 여러 fold에 shuffle 된 경우

💡 예시: k = 5인 경우

  • k를 5로 지정(k는 변동 가능), 전체 데이터를 임의로 1/5로 나누어서 validation set을 한 번씩 번갈아가면서 데이터셋을 구성
  • 각 데이터를 학습하고 validation으로 평가를 한 다음 5개의 결과에 대해 평균을 내어 최종 성능을 구함

✏️ Stratified K-fold Cross Validation

  • 층화 K-fold CV는 기존 K-fold CV와 비슷한 방법으로 수행되나 계층을 고려하는 방법

✏️ Train score 확인

from sklearn.model_selection import cross_validate
cross_validate(estimator, X, y=None, cv=skfold, return_train_score=True)

✏️ 출처

'제로베이스 데이터 취업 스쿨' 수강중
[Machine learning] 쉽게 설명하는 Cross Validation 교차검증
[머신러닝] 교차검증(Cross-validation) 필요성 및 장단점
파이썬 머신러닝 교차검증 - KFold, StratifiedKFold, cross_val_score, GridSearchCV
[바람돌이/머신러닝] 교차검증(CV), Cross Validation, K-fold, TimeSeries 등 CV 종류 및 이론|작성자 바람돌이

profile
데린이인데요 ໒꒰ྀ ˶ • ༝ •˶ ꒱ྀིა (잘못 된 부분은 너그러이 알려주세요.)

0개의 댓글

관련 채용 정보