Practice makes perfect!

[모두의 딥러닝] 13장 과적합 피하기 본문

Study/딥러닝

[모두의 딥러닝] 13장 과적합 피하기

na0dev 2021. 5. 29. 19:39

과적합

  • 모델이 학습 데이터셋 안에서는 일정 수준 이상의 예측 정확도를 보이지만, 새로운 데이터에 적용하면 잘 맞지 않는 것을 말함
  • 층이 너무 많거나 변수가 복잡해서, 또는 테스트셋과 학습 셋이 중복될 때 발생

해결방법

  • 학습 데이터셋과 테스트 데이터셋을 완전히 구분한 후, 학습과 테스트를 동시에 병행하며 진행
  • 머신러닝의 최종 목적은 과거의 데이터를 토대로 새로운 데이터를 예측하는 것 -> 테스트셋을 만들어 정확한 평가를 병행하는 것이 중요! -학습이 깊어져서 학습셋 내부에서의 성공률은 높아져도 테스트셋에서는 효과가 없다면 과적합이 일어나고 있는 것. 학습을 진행해도 테스트 결과가 더 이상 좋아지지 않는 지점에서 학습을 멈춰야 함.

# 학습 셋과 테스트 셋의 구분
  테스트 셋을 30%로 설정

X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=0.3, random_state=seed)

 

k겹 교차검증

  • 머신러닝 작업에 있어 알고리즘을 충분히 테스트했어도 데이터가 충분하지 않으면 좋은 결과를 내기 어렵다.
  • k겹 교차검증을 통해 데이터셋을 여러 개로 나눠 하나씩 테스트셋으로 사용하고 나머지를 모두 합해 학습셋으로 사용한다.
  • 이를 통해 갖고있는 데이터의 100%를 테스트셋으로 사용할 수 있다.

데이터를 원하는 숫자만큼 쪼개 각각 학습셋과 테스트셋으로 사용할 수 있게 하는 StratifiedKFold()

from sklearn.model_selection import StratifiedKFold

# 10개의 파일로 쪼갬 

n_fold = 10 skf = StratifiedKFold(n_splits=n_fold, shuffle=True, random_state=seed)

 

 

 

반응형
Comments