グリッドサーチの出力を理解する

Pythonでのハイパーパラメータチューニング

Alex Scriven

Data Scientist

出力の分析

GridSearchCV の出力を分析します。

GridSearchCV のプロパティは3グループに分かれます:

  • 結果ログ
    • 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_ 列は、その行で試した各パラメータを保持します(パラメータごとに1列)。

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 スコア

Pythonでのハイパーパラメータチューニング

.cv_results_ の 'rank_test_score' 列

 

rank 列は mean_test_score を良い順に並べます:

rank test score

Pythonでのハイパーパラメータチューニング

最良行の抽出

 

rank_test_score 列を使えば、cv_results_ から最良のグリッドを簡単に取得できます。

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

最良行

Pythonでのハイパーパラメータチューニング

.cv_results_ の 'train_score' 列群

その後、test_score 列群は training_scores に対しても繰り返されます。

注意点:

  • 訓練スコア列を含めるには return_train_score を True にする必要があります。

  • 訓練スコアには順位付け列はありません。重視するのはテスト性能だからです。

Pythonでのハイパーパラメータチューニング

最良グリッドの情報

 

最良のグリッドについては、次の3つで要約されます。

  • best_params_: 最高スコアを出したパラメータ辞書。

  • best_score_: その最高スコア。

  • best_index_: cv_results_.rank_test_score の最良行のインデックス。

Pythonでのハイパーパラメータチューニング

best_estimator_ プロパティ

 

best_estimator_ は、最良パラメータで学習した推定器です。

ここでは Random Forest 推定器です:

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でのハイパーパラメータチューニング

Passons à la pratique !

Pythonでのハイパーパラメータチューニング

Preparing Video For Download...