はじめに
Optunaにはimportして使うだけでLightGBMのパラメータ探索までやってくれる便利なモジュールが存在する。それがOptunaのintegrationに入っている。しかし、公式ドキュメントを見てもGitHubのコードに飛ばされるだけで、どのパラメータをどの範囲で探索しているのかは公開されていない。
そこでデフォルトの探索範囲をしっかり確認してみようと思う。
結論
パラメータ探索範囲
{
"lambda_l1": {"min": 1e-8, "max": 10.0, "log": True},
"lambda_l2": {"min": 1e-8, "max": 10.0, "log": True},
"num_leaves": {"min": 2, "max": 16},
"feature_fraction": {"min": 0.4, "max": 1.0 + 1e-12},
"bagging_fraction": {"min": 0.4, "max": 1.0 + 1e-12},
"bagging_freq": {"min": 1, "max": 7},
"min_child_samples": {"min": 5, "max": 100}
}
説明
まず、pip show optuna
を使用して、パッケージをインストールしているディレクトリに移動する。
.../site-packages/optuna/integration/lightgbm_tuner/optimize.py
というファイルがあると思うので、この198行目から226行目あたり(バージョンによっては違うかも)に_preprocess
という関数が定義されている。
定数として45, 48行目くらいに、_DEFAULT_TUNER_TREE_DEPTH = 8
と、_EPS = 1e-12
と定められています。
これらの部分からパラメータを抽出すると、以上のような結果になります。