👋
OptunaのLightGBMTunerに学ぶ、LightGBMのハイパーパラメーターのチューニング方法
概要
OptunaのLightGBMTunerを読んでいたら、LightGBMTunerにハイパラチューニングのナレッジがぶっこまれていたのでシェア。
何をチューニングすればいいの?
以下に「feature fraction, num_leaves, bagging_fraction および bagging_freq のいずれかによる変化が大きく」と記載がある。
日本語にすると「変数選択の割合、葉の数、標本抽出の割合と頻度」の4つ。
どの順番でチューニングするとよいのか?
PFNのページに「重要なハイパーパラメータから順に最適なハイパーパラメータをチューニングする」と書いてある。この順番については明記がないが、ソースコードも合わせて見ると、以下の順番のようだ。
日本語でまとめると、以下の順番でチューニングしていることになる。
「変数選択の割合 → 葉の数 → 標本抽出の割合(と頻度)→ 正則化 → 葉に含まれるデータ数」
feature_fraction
num_leaves
-
bagging_fraction
,bagging_freq
-
feature_fraction
(2回目) -
lambda_l1
,lambda_l2
min_data_in_leaf
チューニングする順番、範囲、回数のまとめ
同じく、上記のソースコードからまとめました。回数はoptunaで試行する回数を指します。
工程 | 範囲 | 回数 |
---|---|---|
feature_fraction |
0.4-1.0 | 7回 |
num_leaves |
2-256 | 20回 |
bagging_fraction , bagging_freq
|
bagging_fraction : 0.4..1.0, bagging_freq : 1..7 |
10回 |
feature_fraction (2回目) |
1回目±0.08 | 6回 |
lambda_l1 , lambda_l2
|
lambda_l1 : 1e-8..10.0, lambda_l2 : 1e-8..10.0 |
20回 |
min_data_in_leaf |
5,10,25,50,100 | 5回 |
変数選択の割合は2回チューニングしていることからもかなり重視されていることがわかります。
感想
こういう、ある程度やってたらわかる勘どころを公開してくれているのは非常に助かります(しかも日本最強格のKagglerが作ってくれているので本当に土下座ものです🙇♂)。
個人的には、 変数選択の割合 → 葉の数 → 標本抽出の割合(と頻度)→ 正則化 → 葉に含まれるデータ数 という順番でチューニングしていくという流れ自体が非常に参考になりました(!)
Discussion