Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
175
Help us understand the problem. What are the problem?

LightGBMのパラメータ(引数)

LightGBMにはsklearnを利用したパッケージとオリジナルが存在する.これらのパッケージはパラメータ名が異なるので備忘として記録.

インストール方法

以下の記事を参考にした.
https://qiita.com/tackey/items/fa3e4ca37beecb1c7842

実行方法

import lightgbm as lgbm

lgb_params = {"objective":"binary", 
              "metric":"binary_logloss", 
              "verbosity": -1}

lgb_train = lgbm.Dataset(
                 x_train, 
                 y_train)

lgb = lgbm.train(lgb_params, lgb_train)

lgb.predict(x_test)

引数の種類

参照はMicrosoftのドキュメントLightGBM's documentation
以下の詳細では利用頻度の高い変数を取り上げパラメータ名と値の対応関係を与える.

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

木にある分岐の個数.${\bf sklearnのmax\_depth}$との関係は
$num\_leaves = 2^{max\_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]というような重みをつけることが可能.

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
175
Help us understand the problem. What are the problem?