그리드 서치 출력 이해하기

Python에서의 하이퍼파라미터 튜닝

Alex Scriven

Data Scientist

출력 분석하기

GridSearchCV 출력을 분석해 보겠습니다.

GridSearchCV 속성은 세 그룹입니다:

  • 결과 로그
    • cv_results_
  • 최적 결과
    • best_index_, best_params_, best_score_
  • 추가 정보
    • scorer_, n_splits_, refit_time_
Python에서의 하이퍼파라미터 튜닝

객체 속성 접근하기

 

속성은 점 표기법으로 접근합니다.

예:

grid_search_object.property

여기서 property는 가져오려는 실제 속성입니다.

Python에서의 하이퍼파라미터 튜닝

.cv_results_ 속성

cv_results_ 속성:

DataFrame으로 읽어 출력·분석합니다:

cv_results_df = pd.DataFrame(grid_rf_class.cv_results_)

print(cv_results_df.shape)

(12, 23)

  • 12행은 그리드의 12개 셀, 즉 실행한 12개 모델을 의미합니다.
Python에서의 하이퍼파라미터 튜닝

.cv_results_의 'time' 열들

time 열은 모델을 학습(및 채점)하는 데 걸린 시간을 의미합니다.

5-폴드 교차 검증을 수행했음을 기억하십시오. 5번 실행되어 평균과 표준편차(초 단위)를 저장합니다.

time 열

Python에서의 하이퍼파라미터 튜닝

.cv_results_의 'param_' 열들

 

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

param 열

Python에서의 하이퍼파라미터 튜닝

.cv_results_의 'param' 열

params 열에는 모든 하이퍼파라미터의 딕셔너리가 담겨 있습니다:

pd.set_option("display.max_colwidth", -1)
print(cv_results_df.loc[:, "params"])

params 열

Python에서의 하이퍼파라미터 튜닝

.cv_results_의 'test_score' 열들

 

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

test score

Python에서의 하이퍼파라미터 튜닝

.cv_results_의 'rank_test_score' 열

 

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

rank test score

Python에서의 하이퍼파라미터 튜닝

최적 행 추출하기

 

rank_test_score 열을 사용해 cv_results_에서 최상의 그리드 셀을 쉽게 선택할 수 있습니다.

best_row = cv_results_df[cv_results_df["rank_test_score"] == 1]
print(best_row)

best row

Python에서의 하이퍼파라미터 튜닝

.cv_results_의 'train_score' 열들

test_score 열들은 training_scores에 대해서도 동일하게 반복됩니다.

유의할 점:

  • 학습 점수 열을 포함하려면 return_train_scoreTrue로 설정해야 합니다.

  • 학습 점수에는 순위 열이 없습니다. 우리는 테스트 성능만 고려합니다.

Python에서의 하이퍼파라미터 튜닝

최적 그리드 셀

 

최적 그리드 셀 정보는 다음 세 속성에 요약됩니다:

  • best_params_: 최적 점수를 낸 파라미터 딕셔너리

  • best_score_: 그 최적 점수

  • best_index_: cv_results_.rank_test_score에서 최적이었던 행 인덱스

Python에서의 하이퍼파라미터 튜닝

best_estimator_ 속성

 

best_estimator_는 그리드 서치의 최적 파라미터로 학습된 추정기입니다.

여기서는 랜덤 포레스트 추정기입니다:

type(grid_rf_class.best_estimator_)

sklearn.ensemble.forest.RandomForestClassifier

이 객체를 바로 추정기로 사용해도 됩니다.

Python에서의 하이퍼파라미터 튜닝

best_estimator_ 속성

print(grid_rf_class.best_estimator_)

best estimator 코드 출력

Python에서의 하이퍼파라미터 튜닝

추가 정보

다음 속성에서 추가 정보를 확인할 수 있습니다:

  • scorer_

홀드아웃 데이터에 사용된 스코어러 함수 (여기서는 AUC)

  • n_splits_

교차 검증 분할 개수 (여기서는 5)

  • refit_time_

전체 데이터로 최적 모델을 재학습하는 데 걸린 초 단위 시간

Python에서의 하이퍼파라미터 튜닝

연습해 봅시다!

Python에서의 하이퍼파라미터 튜닝

Preparing Video For Download...