事象
lightgbmの'objective': 'lambdarank'
でランキング学習しようとしたときにLightGBMError例外が発生してしまう問題
.py
model = lgb.train(params, train_set=lgb_train, valid_sets=lgb_eval, verbose_eval=10)
# => LightGBMError: label (31) excel the max range -290077952
解決
事前にラベル(目的変数)をint64
に変換しておく。
30を超える数の順位を使いたいときはparamsにlabel_gain
を渡せば上限数を変えれるようだが、そもそもfloat型だとどうやっても上限数を超えてしまう模様。
pandas.DataFlame.astype
でint型に変換することで解決した。
.py
y_train.dtype()
# => dtype: float64
y_train = test_set['target'].astype(int)
y_train.dtype()
# => dtype: int64