티스토리 뷰

 

[교차검증의 의미]

  • 머신러닝 모델의 성능을 평가하고 과적합(Overfitting) 등의 문제를 방지하기 위해 데이터를 반복적으로 나누어 학습 및 테스트하는 방법
  • 모델 선택 및 하이퍼 파라미터 튜닝 과정에 유용하게 활용 가능

 

[주요 개념]

  • 훈련 데이터와 테스트 데이터의 분리
    • 모델이 학습한 데이터에 과도하게 적합하지 않도록, 데이터를 훈련 데이터와 테스트 데이터로 적절히 나누는 것이 중요함
    • 한 번의 데이터 분할로는 모델에 대한 평가가 불안정할 수 있으므로, 반복적으로 다양한 데이터 분할을 통해 모델을 평가함.

[주요 교차검증 방법]

  • K-Fold Cross-Validation
    • 데이터를 K개의 균등한 부분으로 나누고, 각 부분을 한 번씩 테스트 세트로 사용하고 나머지는 훈련 세트로 활용하는 방식
    • 모델을 K번 훈련 및 평가하여 성능의 평균을 계산함.
  • Leave-On-Out Cross-Validation
    • 데이터셋에서 한 개의 데이터를 테스트 세트로 사용하고 나머지를 훈련 세트로 사용하는 방식
    • 데이터량이 적을 때 유용하지만, 계산 비용이 높다는 것이 단점
  • Stratified K-Fold
    • 데이터 클래스의 비율을 유지하면서 데이터를 나눔.
    • 분류문제에 적합하지만 선형 회귀에서는 불균형 데이터에서 사용 가능
  • Time-Series Cross-Validation
    • 시간 순서가 중요한 경우, 과거 데이터를 사용해 훈련하고 미래 데이터를 테스트하는 방식

[주요 함수]

  • 데이터 분할 함수 : KFold()
  • 데이터 분할 및 학습, 성능평가 함수 : cross_val_score()

 

[cross_val_score() 함수 설명]

scores = cross_val_score(model, X, y, cv=5, scoring='r2')

 

  • model:
    • 평가할 머신러닝 모델 객체
    • 예시에서는 LinearRegression 모델이 사용됨
    • 모델은 sklearn 라이브러리의 알고리즘 객체로 제공됨.
  • X:
    • 입력 데이터(특징)
    • Numpy 배열 또는 Pandas DataFrame 형태로 제공되며, 각 행은 샘플이고 각 열은 입력 변수(특징)를 나타냄.
  • y:
    • 출력 데이터(목표 값)
    • 예측하고자 하는 종속 변수로, 회귀 분석에서는 연속적인 값
  • cv=5:
    • 교차검증의 Fold 개수
    • 데이터를 5개의 폴드로 나누어 5번 교차검증을 수행함.
    • 각 폴드마다 데이터의 80%는 훈련에, 나머지 20%는 테스트에 사용됨.
  • scoring='r2':
    • 성능 지표(평가지표)
    • r2는 결정 계수(R-squared)로, 모델이 데이터를 얼마나 잘 설명하는지를 나타냄.
    • R-squared 값은 1에 가까울수록 모델의 성능이 우수함을 나타냄.

 

[결정계수(scores, )의 값에 따른 해석 방법]

  • R² = 1: 모델이 데이터의 변동성을 완벽하게 설명함.
  • R² = 0: 모델이 데이터를 전혀 설명하지 않으며, 단순히 평균값을 예측하는 것과 동일함.
  • R² < 0: 모델이 평균값보다 못한 성능을 보이고 있다는 의미하며, 예측 모델이 실제로 모델을 사용하지 않고 예측하는 것보다 더 나쁜 성능을 보인다는 의미임.

예시 코드

반응형