LightGBM
LightGBMとは
LightGBMとは決定木アルゴリズムに基づいた勾配ブースティング(Gradient Boosting)の機械学習フレームワークです。LightGBMは米マイクロソフト社がスポンサーをしています。
LightGBMの仕組み
「決定木」、「アンサンブル学習」、「勾配ブースティング」
引数の種類
.
objective(目的関数)
regression
回帰を解く.
metric(誤差関数の測定方法)としては,
絶対値誤差関数(L1)ならばmae,
2乗誤差関数(L2)ならばmseと指定.
binary
二値分類.ラベルは 0 or 1.
metricとしては,
binary_logloss(クロスエントロピー)とbinary_error(正答率)の2つ.
multiclass
多クラス分類.
metricとしては,
multi_logloss(softmax関数)とmulti_error(正答率)の2つ.
また,クラスの数をnum_classとして設定することが推奨されている.
learning_rate
学習率.デフォルトは0.1.大きなnum_iterationsを取るときは小さなlearning_rateを取ると精度が上がる.
num_iterations
木の数.他に num_iteration, n_iter, num_tree, num_trees, num_round, num_rounds, num_boost_round, n_estimators という名前で呼び出すことも可能.デフォルトは100.
num_leaves
木にある分岐の個数.sklearnのmax_depth
との関係は
num_leaves=2max_depth
デフォルトは31.大きくすると精度は上がるが過学習が進む.
max_depth
木構造の深さを限定するための変数.データが少ないときに過学習を防ぐために設定する.デフォルト値は-1で0以下の値は制限なしを意味する.
verbosity
学習途中の中継的な情報を表示するかしないか.
デフォルトでは表示になっており,-1を指定すると表示しなくなる.
マニアックな引数
max_bin
一つの分岐に入るデータ数の最大値を指定.小さい数を指定することで強制的なデータ間の分離を可能にして精度を上げることができるが,大きな数を指定することにより一般性を強めることができる.結果として過学習抑制につながる.
min_data_in_bin, min_data_in_leaf
正直,違いがわからないが設定されている値のオーダーが異なるので別物.
大きくすることでデータと分岐が1対1対応することを防ぎ,結果として過学習を抑制する.
feature_fraction
学習の高速化と過学習の抑制に使用される.データの特徴量のfeature_fraction * 100 % だけ使用する.
weight_column
重要なデータとそうでないデータを重みによって差別化可能.
使い方はよくわかっていないので知っている方がいらっしゃったらコメントをいただきたいです.
見た限りだと,
[data0, data1, data2,..., dataN]に対して,
[1.0, 0.5, 0.7, ..., 0.4]というような重みをつけることが可能らしい.
参照Qiita
LightGBM 徹底入門 – LightGBMの使い方や仕組み、XGBoostとの違いについて
https://www.codexa.net/lightgbm-beginner/
LightGBMのパラメータ(引数)
https://qiita.com/nabenabe0928/items/6b9772131ba89da00354