[ML] 데이터 분리 | 과적합

·2025년 1월 20일

ML

목록 보기
9/18

과적합 Overfitting

국소적인 문제를 해결하는 것에 집중한 나머지 일반적인 문제를 해결하지 못하는 현상
데이터를 너무 과도하게 학습한 나머지 해당 문제만 잘 맞추고 새로운 데이터를 제대로 예측 혹은 분류하지 못하는 현상

과적합의 원인

  1. 모델의 복잡도

    모델이 지나치게 복잡할 때: 과적합
    모델이 지나치게 단순할 때: 과소적합

  2. 데이터의 양이 충분하지 않음

  3. 학습 반복이 과도하게 많음 (딥러닝의 경우)

  4. 데이터의 불균형 (ex. 정상환자-암환자 비율이 95:5)

해결 방법 - 테스트 데이터 분리 ⭐️

  • 학습 데이터와 테스트 데이터를 분리하여 모델이 과적합 되었는지 확인

  • 학습 데이터(Train Data): 모델을 학습(fit)하기 위한 데이터
  • 테스트 데이터(Test Data): 모델을 평가 하기 위한 데이터
  • 함수 및 파라미터 설명
    • sklearn.model_selection.train_test_split
      • 파라미터
        • test_size: 테스트 데이터 세트 크기
        • train_size: 학습 데이터 세트 크기
        • shuffle: 데이터 분리 시 섞기
        • random_state: 호출할 때마다 동일한 학습/테스트 데이터를 생성하기 위한 난수 값. 수행할 때 마다 동일한 데이터 세트로 분리하기 위해 숫자를 고정 시켜야 함
      • 반환 값(순서 중요) ⭐️
        • X_train, X_test, y_train, y_test

실습

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(titaninc_df[['Fare','Sex']],
                                                    titaninc_df[['Survived']],
                                                    test_size = 0.3, shuffle= True,
                                                    random_state = 42,
                                                    stratify=titaninc_df[['Survived']])
  • stratify = 컬럼
    : 해당 컬럼의 비율을 유지하여 train-test 분리가 이루어지도록 조정.
    ex) 전체 데이터의 survived 비율이 6:4라면, train set과 test set의 survived 비율도 6:4.

업로드중..

profile
To Dare is To Do

0개의 댓글