LoginSignup
1
1

More than 1 year has passed since last update.

【機械学習】sklearnによるGrid Searchの実践

Posted at

はじめに

Grid Searchについてまとめました。

Grid Search

Grid Searchは複数ハイパーパラメータの各組み合わせでモデルを学習、検証する手法です。
複雑なモデルになるほど複数のハイパーパラメータが必要になり、モデル精度を向上させるためにこのような手法が使われます。
また、Cross Validationと組み合わせて使われます。

sklearnではGridSearchCVという関数が用意されています。
GridSearchCVを使うことで、指定したパラメータの全組合せの中からCross Validationで最適なパラメータを求めることができます。

GridSearchCVの主なプロパティとしては以下のものがあります。

  • estimator: チューニングを行うモデル
  • param_grid: パラメータ候補パラメータ名: [候補リスト]
  • scoring: 評価指標
  • cv: Cross Validationの分割数(default: 3)
  • verbose: ログ出力レベル
  • n_jobs: 同時実行数(-1: コア数で並列実行)
  • refit:  trueのとき最良のパラメータで再学習

実践

Elastic Net回帰モデル(よろしければ以下の記事をご覧ください)にGridSearchCVを適用してみます。

以下の場合、alphaの候補が6個、l1_ratioの候補が7個あるため、42個の組み合わせから最適なパラメータを選ぶことになります。
また、Cross Validationで5分割するため、210(42☓5)回計算を行います。

from sklearn.linear_model import ElasticNet
from sklearn.model_selection import GridSearchCV

# モデルの定義
base_elastic_model = ElasticNet()

# パラメータ候補の定義
param_grid = {'alpha':[0.1,1,5,10,50,100],
              'l1_ratio':[.1, .5, .7, .9, .95, .99, 1]}

# パラメータチューニング
grid_model = GridSearchCV(estimator=base_elastic_model,
                          param_grid=param_grid,
                          scoring='neg_mean_squared_error',
                          cv=5,
                          verbose=2)

grid_model.fit(X_train,y_train)

best_perams_メソッドで、{'alpha': 0.1, 'l1_ratio': 1}が最適なパラメータとして選択されたことを確認できます。

そして、テストデータの予測を以下のように行います。

y_pred = grid_model.predict(X_test)
mean_squared_error(y_test,y_pred)

参考資料

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1