Snoopy [ML] 9. 하이퍼파라미터 튜닝(2) - Grid Search 주요 파라미터와 어트리뷰트
머신러닝과 딥러닝/ML 개념정리

[ML] 9. 하이퍼파라미터 튜닝(2) - Grid Search 주요 파라미터와 어트리뷰트

Sooyoon Jeong 2022. 11. 3.

grid search는 이전 게시글에서 설명했듯이,

사용자가 지정한 범위 내에서 모든 경우의 수를 완전 탐색하여 최적의 하이퍼 파라미터가 무엇인지 탐색하는

하이퍼파라미터 튜닝 기법의 하나이다.

 

1. Grid Search 주요 파라미터

1) estimator

주로 model, 알고리즘을 입력

 

2) param_grid

dict or list of dictionaries 형태로 입력, Grid Search를 돌릴 파라미터 범위를 지정함

 

3) scoring

str, callable, list, tuple or dict

  ※ default = None

 

4) n_jobs

사용할 CPU 개수로 -1 입력 시 모든 CPU 사용

 

5) cv

교차 검증 시 분할할 조각의 수

  ※ default = None

 

6) verbose

Controls the verbosity: the higher, the more messages.

 

param 설정, 아래와 같은 방식으로 grid search를 진행할 범위를 지정해준다.

max_depth = list(range(3,20,2))
max_features = [0.3, 0.5, 0.7, 0.8, 0.9]

parameters = {"max_depth" : max_depth, "max_features" : max_features}

Gridsearch 라이브러리 로드 및 실행

from sklearn.model_selection import GridSearchCV
clf = GridSearchCV(model, parameters, n_jobs = -1, cv = 5, verbose = 2)
clf.fit(X_train, y_train)

 

2. Grid Search 어트리뷰트

1) cv_results

dict of numpy (masked) ndarrays

{
'param_kernel': masked_array(data = ['poly', 'poly', 'rbf', 'rbf'],
                             mask = [False False False False]...)
'param_gamma': masked_array(data = [-- -- 0.1 0.2],
                            mask = [ True  True False False]...),
'param_degree': masked_array(data = [2.0 3.0 -- --],
                             mask = [False False  True  True]...),
'split0_test_score'  : [0.80, 0.70, 0.80, 0.93],
'split1_test_score'  : [0.82, 0.50, 0.70, 0.78],
'mean_test_score'    : [0.81, 0.60, 0.75, 0.85],
'std_test_score'     : [0.01, 0.10, 0.05, 0.08],
'rank_test_score'    : [2, 4, 3, 1],
'split0_train_score' : [0.80, 0.92, 0.70, 0.93],
'split1_train_score' : [0.82, 0.55, 0.70, 0.87],
'mean_train_score'   : [0.81, 0.74, 0.70, 0.90],
'std_train_score'    : [0.01, 0.19, 0.00, 0.03],
'mean_fit_time'      : [0.73, 0.63, 0.43, 0.49],
'std_fit_time'       : [0.01, 0.02, 0.01, 0.01],
'mean_score_time'    : [0.01, 0.06, 0.04, 0.04],
'std_score_time'     : [0.00, 0.00, 0.00, 0.01],
'params'             : [{'kernel': 'poly', 'degree': 2}, ...],
}

 

2) best_estimator_

지정한 param 중 최적의 성능을 내는 estimator 출력

 

3) best_score_

지정한 param 중 최적의 성능 값 출력

 

4) best_params_

지정한 param 중 최적의 성능을 내는 param 출력

 

5) best_index_

지정한 param 중 최적의 성능을 내는 param의 인덱스를 출력

 

6) scorer_

최적의 성능을 가진 모델을 고르는데 사용한 scorer function 출력

 

7) n_splits_

교차검증 시 분할 수(folds/iterations)

 

8) refit_time_

전체 데이터 셋에서 최적의 모델을 refiting 하는데 걸린 시간

 

9) multimetric_

bool 타입으로 출력

 

10) feature_names_in_

사용된 피처들의 이름을 출력


🔗 참고자료

AIS 7기 오늘코드 박조은 강사님 강의자료

https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.GridSearchCV.html#sklearn.model_selection.GridSearchCV

댓글