Python에서의 하이퍼파라미터 튜닝
Alex Scriven
Data Scientist
GridSearchCV 출력을 분석해 보겠습니다.
GridSearchCV 속성은 세 그룹입니다:
cv_results_best_index_, best_params_, best_score_scorer_, n_splits_, refit_time_
속성은 점 표기법으로 접근합니다.
예:
grid_search_object.property
여기서 property는 가져오려는 실제 속성입니다.
cv_results_ 속성:
DataFrame으로 읽어 출력·분석합니다:
cv_results_df = pd.DataFrame(grid_rf_class.cv_results_)
print(cv_results_df.shape)
(12, 23)
time 열은 모델을 학습(및 채점)하는 데 걸린 시간을 의미합니다.
5-폴드 교차 검증을 수행했음을 기억하십시오. 5번 실행되어 평균과 표준편차(초 단위)를 저장합니다.

param_ 열에는 각 행에서 테스트한 파라미터가 저장됩니다. 파라미터마다 한 열씩 있습니다.

params 열에는 모든 하이퍼파라미터의 딕셔너리가 담겨 있습니다:
pd.set_option("display.max_colwidth", -1)
print(cv_results_df.loc[:, "params"])

test_score 열에는 각 교차 폴드의 테스트 셋 점수와 요약 통계가 포함됩니다:

mean_test_score를 최고에서 최저로 정렬한 순위를 담은 rank 열:

rank_test_score 열을 사용해 cv_results_에서 최상의 그리드 셀을 쉽게 선택할 수 있습니다.
best_row = cv_results_df[cv_results_df["rank_test_score"] == 1]
print(best_row)

test_score 열들은 training_scores에 대해서도 동일하게 반복됩니다.
유의할 점:
학습 점수 열을 포함하려면 return_train_score를 True로 설정해야 합니다.
학습 점수에는 순위 열이 없습니다. 우리는 테스트 성능만 고려합니다.
최적 그리드 셀 정보는 다음 세 속성에 요약됩니다:
best_params_: 최적 점수를 낸 파라미터 딕셔너리
best_score_: 그 최적 점수
best_index_: cv_results_.rank_test_score에서 최적이었던 행 인덱스
best_estimator_는 그리드 서치의 최적 파라미터로 학습된 추정기입니다.
여기서는 랜덤 포레스트 추정기입니다:
type(grid_rf_class.best_estimator_)
sklearn.ensemble.forest.RandomForestClassifier
이 객체를 바로 추정기로 사용해도 됩니다.
print(grid_rf_class.best_estimator_)

다음 속성에서 추가 정보를 확인할 수 있습니다:
scorer_홀드아웃 데이터에 사용된 스코어러 함수 (여기서는 AUC)
n_splits_교차 검증 분할 개수 (여기서는 5)
refit_time_전체 데이터로 최적 모델을 재학습하는 데 걸린 초 단위 시간
Python에서의 하이퍼파라미터 튜닝