STUDY_SEONMIN
DAY59 - 모형 최적화 본문
데이터분석에서 적절한 모형을 선택하고 난 뒤에는 하이퍼 파라미터 튜닝을 통해 모형을 최적화 시켜야 합니다.
하이퍼 파라미터 튜닝 with Scikit-learn
sklearn 패키지에서는 하이퍼 파라미터 튜닝을 위한 도구를 지원합니다.
1) validation curve
단일 하이퍼 파라미터 튜닝 시 사용할 수 있는 도구
from sklearn.model_selection import validation_curve
train_scores, test_scores = validation_curve(
base_model, X, y,
param_name = , param_range = ,
cv = , scoring = , n_jobs =
)
# base_model : 하이퍼 파라미터 튜닝을 할 모형
# param_name : 튜닝할 하이퍼 파라미터 이름(모형에서 사용되는 파라미터 이름을 문자열로 넣으면 됩니다.)
# param_range : 하이퍼 파라미터 튜닝 시 고려할 후보 범위
# cv : 하이퍼 파라미터 별로 cross_validation할 때의 숫자
# scoring : 서로 다른 하이퍼 파라미터 적용한 모델을 평가할 방법
# n_jobs : 병렬처리 여부(본인 CPU의 코어 수만큼 병렬처리가 가능합니다.)
param_range에는 보통 np.logspace를 사용해서 넓은 범위를 체크합니다.
2) GridSearchCV
복수개의 하이퍼 파라미터 튜닝 시 사용할 수 있는 도구
from sklearn.model_selection import GridSearchCV
gs = GridSearchCV(
estimator = , # 사용할 모형
param_grid = , # list of dictionary, dictionary : {"파라미터1 이름":param_range, ...}
scoring = , # 평가 기준
cv = , # cross_validation
n_jobs = , # 병렬 처리
)
gs.fit(X, y)
GridSearchCV 객체를 데이터를 이용해 학습시킨 후 가장 최고 점수, 최고 점수를 낸 파라미터, 최고 점수를 낸 모형은 각각 best_score_, best_params_, best_estimaor_ 속성에 저장되어 있습니다.
실제로 예제 데이터를 이용해 validation_curve 와 GridSearchCV를 사용해보겠습니다.
1) validation_curve
RBF 서포트벡터머신에서는 감마값이 커질 수록 분류를 잘 하게 됩니다. 하지만 감마값이 지나치게 커질 경우 train data에 과적합 되는 문제가 발생하게 됩니다.
위와 같이 validation_curve를 이용해 감마값을 변화시키면서 cross-validation을 진행할 수 있습니다. 그 결과 감마값이 약 $10^{-3}$일 때 train score와 cross-validation score가 모두 준수한 것을 알 수 있습니다.
보통 이렇게 큰 범위로 1차적으로 적절한 하이퍼 파라미터 값을 구한 뒤 해당 값 주변에서 2차 하이퍼 파라미터 튜닝을 통해 최적의 값을 찾아나가는 방법을 사용합니다.
2) GridSearchCV
digits 데이터 분류문제를 SVM모델로 해결할 때 GridSearchCV를 이용해 하이퍼 파라미터 튜닝을 하였더니 위와 같은 결과가 나왔습니다.
'EDUCATION > DSS Online 6기' 카테고리의 다른 글
DAY59 - 비대칭 데이터 다루기 (0) | 2021.04.19 |
---|---|
DAY59 - Feature Selection (0) | 2021.04.17 |
DAY58 - 커널 서포트 벡터머신 (0) | 2021.04.16 |
DAY58 - 서포트 벡터 머신 (0) | 2021.04.14 |
DAY57 - 앙상블 모델(부스팅) (0) | 2021.04.13 |