始める無料で始める

2次元グリッドサーチ

各ハイパーパラメータを独立にチューニングする欠点は、異なるハイパーパラメータ間に依存関係がある可能性があることです。より良い方法は、考えられるハイパーパラメータの組み合わせをすべて試すことです。ただし、その場合はグリッド探索の空間が急速に拡大します。たとえば、2つのパラメータにそれぞれ10個の候補があると、実験は100回になります。

あなたの目標は、Gradient Boosting モデルにおける max_depthsubsample の最適な組み合わせを見つけることです。subsample は、個々の決定木の学習に使用する観測の割合を表します。

関数 get_cv_score() が与えられています。これは学習用データセットとモデルパラメータの辞書を引数に取り、3分割のクロスバリデーションで得られる全体の検証 RMSE を返します。

この演習はコースの一部です

Pythonで挑むKaggleコンペティション

コースを見る

演習の手順

  • max_depthsubsample の候補グリッドを指定します。max_depth: 3、5、7。subsample: 0.8、0.9、1.0。
  • itertools パッケージの product() 関数をこれらのハイパーパラメータグリッドに適用します。これにより、2つのグリッドのすべての組み合わせが得られます。
  • それぞれのハイパーパラメータ候補の組を、モデルの params 辞書に渡してください。

実践的なインタラクティブ演習

このサンプルコードを完成させて、この演習に挑戦してみましょう。

import itertools

# Hyperparameter grids
max_depth_grid = [____]
subsample_grid = [____]
results = {}

# For each couple in the grid
for max_depth_candidate, subsample_candidate in itertools.____(max_depth_grid, subsample_grid):
    params = {'max_depth': ____,
              'subsample': ____}
    validation_score = get_cv_score(train, params)
    # Save the results for each couple
    results[(max_depth_candidate, subsample_candidate)] = validation_score   
print(results)
コードを編集して実行