HyperoptとOptunaによるハイパーパラメータチューニングの例

機械学習において、作成したモデルの精度を高めるためのテクニックのひとつがハイパーパラメータのチューニング(調整)です。
ハイパーパラメータのチューニングの方法としては、手動、グリッドサーチ、ランダムサーチ、ベイズ最適化などの方法があります。
今回は、ベイズ最適化による方法でよく使われるライブラリであるHyperoptOptunaの使い方を比較するため、同じ問題(Boston house prices dataset)に対して、同じモデル(リッジ回帰; sklearn.linear_model.Ridge)を用いて、簡単なコードを作成してみました。(あくまでHyperoptとOptunaの使用例を示すためのもので、この問題の解法を示しているわけではございませんので、ご了承ください。)

上がHyperoptのコード例、下がOptunaのコード例です。コードを比較するとわかるように、Hyperoptの方は最適化するモデル(関数)とは別にハイパーパラメータの範囲を定義してfmin関数に関数とハイパーパラメータの範囲を定義したものを渡していますが、Optunaの方は最適化するモデル(関数)の中でハイパーパラメータの範囲を定義しています。

今回の例では、以下の通り、実行結果はほぼ同じになりました。

HyperoptとOptunaは、TPE(Tree-structured Parzen Estimator)という同一の最適化エンジンを使っていますが、枝刈りの機能の貢献により、Optuna の方が効率的に最適化の処理をするようです。

HyperoptとOptunaについての詳しい情報は、以下のリンクをご参照ください。

参照