Hyperopt を使ったベイズ的ハイパーパラメータチューニング
この演習では、パッケージ Hyperopt(すでに hp としてインポート済み)を使って、ベイズ的ハイパーパラメータ最適化を設定・実行します。まず探索ドメイン(グリッドサーチでのグリッド設定に相当)を定義し、続いて目的関数を作成します。最後に、最適化器を20イテレーション実行します。
次の値でドメインを設定してください:
max_depthは quniform 分布(2 から 10、2 刻み)learning_rateは uniform 分布(0.001 から 0.9)
この演習では、データサンプルサイズや hyperopt・GBM の反復回数を小さくしてあります。 ご自身の環境で試す場合は、探索空間を広げ、試行回数やCV回数、データセットサイズを増やして、この方法の効果をしっかり確認してみてください。
この演習はコースの一部です
Pythonでのハイパーパラメータチューニング
演習の手順
- 上記のドメインに基づいて
space辞書を定義します。 - 勾配ブースティング分類器を使って目的関数を定義します。
- アルゴリズムを20回評価で実行します(スライドで推奨されている既定のアルゴリズムをそのまま使ってください)。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Set up space dictionary with specified hyperparameters
space = {'max_depth': hp.____('max_depth', ____, ____, ____),'learning_rate': hp.____('learning_rate', ____,____)}
# Set up objective function
def objective(params):
params = {'max_depth': int(params[____]),'learning_rate': params[____]}
gbm_clf = ____(n_estimators=100, **params)
best_score = cross_val_score(gbm_clf, X_train, y_train, scoring='accuracy', cv=2, n_jobs=4).mean()
loss = 1 - ____
return ____
# Run the algorithm
best = fmin(fn=____,space=space, max_evals=____, rstate=np.random.default_rng(42), algo=tpe.suggest)
print(____)