0'エラーシステムトレード関連でLightGBMRegressorのパラメータをScikit-learnのRandomizedSearchCVでチューニングをしていてはまりました。Overflow(英語)にも上げたんですが、なかなか回答がないので、日本語でも書いておくことにしました。システムトレード関連でLightGBMRegressorのパラメータをScikit-learnのRandomizedSearchCVでチューニングをしていてハマりました。Overflow(英語)にも上げたんですが、なかなか回答がないので、日本語でも書いておくことにしました。RandomizedSearchCVソースコード実際のコードとは少し違うんですが、こんな感じのチューニングされたLightGBMRegressorのモデルを返す関数を実装しました。rscv.best_estimator_学習データ学習データはXの方が1631日分、1565変数(=特徴量ってやつ?)です。中身としては、数年分の指数、為替などですね。変化率とかその辺を入れてますが、マクロな指標などは使っていません。エラーすごく長いので、全部は載せられないのですが、大まかに3つに大別できるような気がします。本質的には、RandomizedSearchCVで生成したパラメータでLightGBMが落ちたんだと思ってます。at...どうやらBoosterを生成する前にチェックをしているようで、そこでエラーが発生しているようです。問題点LightGBMが木構造であることイテレーションを増やしたときに発生していることこれらの状況から、学習データを木構造で分岐できないパラメータが選ばれたときに発生するんじゃないかなと考えています。学習データの特徴とGBDTのアルゴリズムを考慮し、適切なパラメータ範囲を設定するよくわからんけど、エラーが発生しても無視して次のパラメータを選択し、継続する現実的には2.かなと思っています。1.の学習データの特徴を捉えることは出来そうですが、GBDTを理解するには、自分ではスペック不足な気がします。知っておくほうが幅は広がりますが、結果的に使えれば良いのです。見た感じ、引数などで回避できなさそうなので、LightGBMのPythonのソースに手を入れる必要がありそうです。Overflowに質問上げましたが、エラーが上記の予想通り学習データとパラメータの関係で起きているエラーなのだとすれば、データ解析もやってくれ、と言っているようなものですので、無謀でした。RandomizedSearchCVとりあえず、上に書いた解決策2.をやるべく引続き調査を進めていこうと思います。2018/3/9追記bagging_fractionとfeature_fractionが小さすぎたのが原因かもしれません。乱数の範囲を下記のように変更してからは発生しなくなりました。小さすぎるとランダムに選択する際にデータが0件になる?そんな感じなのかな。