728x90

1. 과대적합이란?
▶ 과대적합
: 한 데이터를 과도하게 학습하는 바람에 그 데이터 내의 예측 및 분류 문제만 잘 맞추고,
새로운 데이터를 가져오면 모델이 제대로 예측 또는 분류하지 못하는 현상을 말함

- 예측 또는 분류를 위해 모형 복잡도를 설정함
- 모형이 지나치게 복잡하면 → 과대 적합이 될 수 있음
- 모형이 지나치게 단순하면 → 과소 적합이 될 수 있음
▶ 과대적합이 되는 이유(원인)
- 모델의 복잡도가 높은 경우
- 데이터의 양이 불충분한 경우
- 학습 반복이 많은 경우 (딥러닝)
- 데이터 비율이 불균형한 경우 (ex. A : B가 95 : 5인 경우)
2. 과대적합 해결방법
2-1) train / test 데이터로 나누기
▶ 테스트 데이터의 분리

▶ train / test 데이터 분리
- 학습 데이터 (Train Data) : 모델을 학습(fit) 하기 위한 데이터
- 테스트 데이터 (Test Data) : 모델을 평가하기 위한 데이터
▶ 사용 함수
- sklearn.model_selection.train_test_split
- 파라미터
- train_size : 학습 데이터 세트 크기
- test_size : 테스트 데이터 세트 크기
- shuffle : 데이터 분리 시 섞기
- random_state : 호출할 때마다 동일한 학습 / 테스트 데이터를 생성하기 위한 난수 값
데이터 분리를 할 때마다 동일한 데이터 세트로 분리하기 위해 숫자를 고정시켜야 함
- 반환 값 (순서 중요!)
- X_train, X_test, y_train, y_test
2-2) 교차 검증과 GridSearch
▶ 교차 검증이 필요한 이유
: 앞서 살펴본 train / test 데이터를 분리하는 방법에서도 테스트 데이터가 고정되어 있기 때문에 과대적합에 취약할 수 있음
: 이를 방지하고자 교차검증을 사용함
▶ 교차 검증 (Cross Validation)
: 데이터셋을 여러 하위 집합으로 나누어놓고, 돌아가면서 검증 데이터로 사용하는 방법
- K-Fold Validation
: Train Data를 K개의 하위 집합으로 나누어 모델을 학습시키고, 모델을 최적화 하는 방법

- K는 분할 개수
- Split 1 : 학습용(Fold 2~5), 검증용(Fold1)
- Split 2 : 학습용(Fold 1, 3~5), 검증용(Fold2)
- Split 3 : 학습용(Fold 1,2,4,5), 검증용(Fold3)
- Split 4 : 학습용(Fold 1~3,5), 검증용(Fold4)
- Split 5 : 학습용(Fold 1~4), 검증용(Fold5)
- 사용 함수
- skelarn.model_selection.KFold
- sklearn.model_selection.StrifiedKFold (불균형한 레이블(y)를 가지고 있을 때 사용)
- 특징
- 데이터가 부족할 경우 유용 (반복 학습)
▶ GridSearchCV _ 하이퍼 파라미터 자동 적용하기
- 하이퍼 파라미터 (Hyper Parameter)란,
모델을 구성하는 입력 값 중 사람이 임의적으로 바꿀 수 있는 입력값을 말함 - 하이퍼 파라미터를 바꿔가며 실험을 해볼 수 있음
- 이런 과정을 자동화 해주는 것이 Grid Search 임
* 파라미터와 하이퍼파라미터
[참고 게시글]
머신러닝 모델의 파라미터와 하이퍼파라미터
머신러닝 모델이 성공적으로 학습하고 예측을 수행하려면 여러 요소들이 결합되어야 합니다. 그중에서도 '파라미터(parameter)'와 '하이퍼파라미터(hyper-parameter)'는 모델의 성능을 결정하는 주요
mozenworld.tistory.com
728x90
댓글