본문 바로가기
Analysis/ML

[sklearn] 교차 검증

by 5ole 2021. 5. 11.

 

 

  • 모델이 훈련 세트보다 테스트 세트에서 예측을 잘 하는 것이 중요

 

 

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

댓글