n_estimatorsやepochsをパラメータサーチしてはいけないのかこの広告は、90日以上更新していないブログに表示しています。LightGBMハイパーパラメータを探索するため、グリッドサーチやOptunaなどを利用することがあると思います。パラメータサーチの対象にしてはいけません。いけません、というか、すごく無駄なことをしています。n_estimatorsやepochsを探索すると無駄なのか理由はシンプルで、これらのパラメータは「大きい値で精度確認する過程で小さい値の結果も分かる」からです。LightGBMのn_estimatorsは構築する決定木の数を表しています。(こんな小さい値で学習することはないですが、簡単のため)で学習を行ったとします。学習の過程で、n_estimators=1のスコアも、n_estimators=2のスコアも確認することができます。5とn_estimatorsを振って確認した場合、合計15個の木を構築する必要がありますが、正しくやれば5個の木で十分です。単純計算で3倍、探索を高速化することができるでしょう。n_estimatorsは学習率によっては5000程度になることもざらにあります。5000と500刻みに探索した場合、合計で27500個の木を構築することになります。本当なら5000個で済むのに。500刻みで探索していた場合、最適な点を見逃す可能性もあります。Kerasのepochsに代表される、ニューラルネットワークのepoch数も同様です。epochs=100で学習した場合、その過程で1epochから100epochまでのすべての学習状態を取得することができます。すればいいのか?一般的なのはEarlyStoppingを使用することでしょう。テストデータとは別にバリデーションデータを用意し、バリデーションで対しての精度がサチったら(一定epochのあいだ向上が見られなかったら)終わりにするという方法です。interfaceを使っているなら、eval_setとearly_stopping_roundsを指定すれば動きます。n_estimatorsは大きめに取っておくとよいでしょう。interfaceを使っていないなら、lgb.train関数にvalid_sets、early_stopping_roundsを設定すれば動きます。num_boost_roundはn_estimatorsと同様、大きめに取っておきましょう。early_stopping_rounds=100)KerasでEarlyStoppingを行うならkeras.callbacks.EarlyStoppingを使います。使う場合はkeras.callbacks.ModelCheckpointと組み合わせ、最も良いモデルを保存するようにしておくと良いでしょう。y_valid)]PyTorchなど、他のフレームワークの場合もEarlyStoppingの仕組みは実装されています。まとめ学習の途中経過が全て確認可能な手法を使うとき、n_estimatorsやepochsのような「学習回数」のパラメータを調整するのは時間がもったいないです。他にもやりがちな例で各種ライブラリのverboseをチューニングしてしまう、というものがあります。verboseは学習中にどれくらいメッセージを吐き出すかというパラメータで、モデルの精度には一切影響を与えません。精度が変わらないので、もちろんチューニングする必要はありません。機械学習モデルをチューニングする時はそれぞれのパラメータの意味を理解した上で行うようにしましょう。使っているアルゴリズムに対しての理解を深めることも助けになるでしょう。Recommendationコンペに参加し...2019-01-10決定木は本当に変換に依存しないのか?決定木をベースとしたモデル(RandomForestやXGBoost、LightGBM...2018-12-20コピペで使える。2018の20日目の記事です。»プロフィールえじといいます。渋谷でデータサイエンティストとして働いています。Masterになりました。