LoginSignup
0
1

More than 3 years have passed since last update.

Optunaで同じパラメータに異なる分布を指定した時の話

Last updated at Posted at 2020-03-08

はじめに

Optunaはベイズ最適化により、ハイパーパラメータの最適化を行うライブラリである。本記事は、Optunaを使って同じパラメータに異なる分布を指定しようとした時に遭遇したエラーのメモである。

なぜ、このようなことをしたいと思ったかというと、scikit-learnのRandomForest (https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.RandomForestClassifier.html) のmax_featuresのように、int型、float型、カテゴリーの3種類の指定方法が用意されているパラメータについて、どの方法で指定するかも含めて、まとめてOptunaに最適化してもらえば、何も考えず楽できると思ったからである。

当初考えたやり方

https://optuna.readthedocs.io/en/latest/tutorial/configurations.html の「Branches and Loops」を参考に、2段階でsuggestさせればよいと考えた。

まず、最初にfloat、int, カテゴリの3つのどれかsuggest_categoricalにより提案してもらう。

次にその提案結果により、以下のように呼び出すsuggestを変えてみる。

  • float の場合は suggest_uniformやsuggenst_loguniform等
  • int の場合は suggest_int
  • カテゴリの場合は suggest_categorical

やってみた。

Trial中に以下のエラーが出て終了~。

cannot set different distribution kind to the same parameter name.

考察

ベイズ最適化では、パラメータの分布というものを前提としているわけで、同じパラメータに別の分布を与えると都合が悪いのだろう。
というわけで、結論としては、指定方法の種類の数だけパラメータチューニングの処理を実行するしかないようだ。

0
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
0
1