- 모델이 훈련 세트보다 테스트 세트에서 예측을 잘 하는 것이 중요
1. 교차 검증 (Cross-Validation)
- K-kold가 대표적 - K개의 데이터로 분할
- train_test_split 은 무작위로 한번 나누는 것
- 교차검증은 최악의 경우와 최선의 경우를 짐작 가능하게 함
- 데이터를 효과적으로 사용 가능, 연산 비용이 늘어남
- 모델을 만드는 것이 아닌, 잘 일반화될지 평가하는 것
from sklearn.model_selection import cross_val_score
- cross_val_score( model, X_data, y_data, cv =n )
- 적어도 5겹 이상 사용할 것
- 주로 scores.mean() 으로 평균내어 최종 검증 정확도 사용
- 계층별 k-겹 사용
from sklearn.model_selection import cross_validate
- cross_validate(model, X_data, y_data, cv =n, return_train_score = True )
- cross_val_score과 유사하지만 분할마다 훈련과 테스트 시간 딕셔너리 반환
- cross_val_score는 cross_validate 함수 사용, test_score 만 반환
from sklearn.model_selection import KFold
- k_fold = KFold( n_split=n, shuffle=True, random_state = n )
- cross_val_score( model, X_data, y_data, cv = k_fold)
from sklearn.model_selection import LeaveOneOut
- loo = LeaveOneOut()
- scores = cross_val_score( model, X_data, y_data, cv=loo)
- 폴드 하나에 샘플 하나만 들어있는 k겹 교차 검증
- 작은 데이터셋에서 좋은 결과, 오랜 시간
from sklearn.model_selection import ShuffleSplit
- ShuffleSplit( test_size=0.n, train_size= 0.n, n_splits = n )
- scores = cross_val_score( model, X_data, y_data, cv=shuffle_split )
- train size만큼 훈련 세트 만들고, test size만큼 테스트 세트 만들도록 분할
- n_splits 만큼 분할 반복
- 반복횟수를 훈련세트와 테스트세트 크기에 독립적 조절하며 부분 샘플링
from sklearn.model_selection import GroupKFold
- groups 배열은 훈련 세트와 테스트 세트로 분리되지 않아야 할 그룹 지정 - 같은 사람
- scores = cross_val_score( model, X_data, y_data, groups, cv=GroupKFold(n_splits=n) )
- 훈련 세트와 테스트 세트에 서로 다른 사람의 정보가 들어가도록 배열 - 클래스와는 다름
2. 그리드 서치
from sklearn.model_selection import GridSearchCV
- 그리드 서치로 관심있는 매개변수 대상 모든 조합 시도해보는 것
- param_grid = { 'C' : [0.001,0.1,1,10] }
- grid_search = GridSearchCV( model, param_grid, cv=n, return_train_score = True )
- grid_search.fit( X_train, y_train ) : 예측, 매개변수 찾기, 가장 좋은 매개변수로 새로운 모델 자동 생성
- grid_search.score( X_test, y_test ) : 일반화 성능 평가
- grid_search.best_params_ : 최상의 매개변수
- grid_search.best_score_ : 최상의 교차검증 정확도
- grid_search.best_estimator_ : 계수, 특성 중요도 등 자세한 사항 살펴볼 때
- grid_search.cv_results_ : 그리드 서치 결과, 시각화
+ 참고 자료 및 출처
(한빛미디어) 안드레아스 뮐러, 세라 가이도 < 파이썬 라이브러리를 활용한 머신러닝 >
'Analysis > ML' 카테고리의 다른 글
[sklearn] 특성 공학 (0) | 2021.05.11 |
---|---|
[sklearn] 비지도학습 (0) | 2021.05.10 |
[sklearn] 지도학습 (0) | 2021.05.10 |
[sklearn / statsmodels] 선형회귀 Linear Regression (0) | 2021.01.31 |
댓글