2次元グリッドサーチ
各ハイパーパラメータを独立にチューニングする欠点は、異なるハイパーパラメータ間に依存関係がある可能性があることです。より良い方法は、考えられるハイパーパラメータの組み合わせをすべて試すことです。ただし、その場合はグリッド探索の空間が急速に拡大します。たとえば、2つのパラメータにそれぞれ10個の候補があると、実験は100回になります。
あなたの目標は、Gradient Boosting モデルにおける max_depth と subsample の最適な組み合わせを見つけることです。subsample は、個々の決定木の学習に使用する観測の割合を表します。
関数 get_cv_score() が与えられています。これは学習用データセットとモデルパラメータの辞書を引数に取り、3分割のクロスバリデーションで得られる全体の検証 RMSE を返します。
この演習はコースの一部です
Pythonで挑むKaggleコンペティション
演習の手順
max_depthとsubsampleの候補グリッドを指定します。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)