0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

LightGBMパラメータ

Last updated at Posted at 2025-09-07

はじめに

LightGBMのパラメータについて生成AIに聞きながら少し勉強したので記録。

パラメータ例(AIに重要なものを出してもらった)

params = {
    "objective": "binary",           # 目的関数(二値分類)
    "metric": "binary_error",        # 評価指標(誤分類率)

    # --- 学習制御 ---
    "learning_rate": 0.05,           # 学習率(小さいと安定、大きいと速いが過学習しやすい)
    "n_estimators": 1000,            # 木の本数(大きめに設定し early_stopping で止める)

    # --- 木の構造 ---
    "num_leaves": 31,                # 葉の数(木の複雑さを決める)
    "max_depth": 6,                  # 木の深さ(深すぎると過学習)
    "min_data_in_leaf": 20,          # 葉に必要な最小データ数(大きいほど過学習防止)

    # --- サンプリング ---
    "feature_fraction": 0.8,         # 特徴量のサブサンプリング率
    "bagging_fraction": 0.8,         # データのサブサンプリング率
    "bagging_freq": 5,               # サブサンプリングの頻度

    # --- 正則化 ---
    "lambda_l1": 0.1,                # L1 正則化(不要な特徴量を抑制)
    "lambda_l2": 0.1,                # L2 正則化(過学習を防ぐ)
}

model = lgb.LGBMClassifier(**params)

基本設定

目的関数(objective)

"binary" → 2値分類(例:良い/悪い、0/1)

"multiclass" → 多クラス分類(例:犬/猫/鳥)

"regression" → 回帰(数値予測、例:家の価格)

metric 評価指標(metric)

"binary_error" → 分類の誤り率(accuracyの逆)

"auc" → ROC-AUCスコア(分類性能によく使われる)

"rmse" → 回帰用の平均二乗誤差

"mae" → 回帰用の平均絶対誤差

出力の表示レベル(verbosity)

-1 → 余計なログを表示しない

0 → 警告だけ表示

1 → 重要な情報を表示

2 → 詳細なログを表示

ブースティング手法(boosting_type)

"gbdt" → 一般的な勾配ブースティング(デフォルト)

"dart" → Dropouts meet Multiple Additive Regression Trees(過学習に強い)

"goss" → Gradient-based One-Side Sampling(高速学習用)

1. 学習率と木の数

・learning_rate

1ステップごとの学習の大きさ。小さいほど学習は遅いが安定する。

一般に 0.01 ~ 0.1 を試すことが多い。

小さくしたら n_estimators を増やしてカバーする必要あり。

・n_estimators / num_iterations

木の本数。大きく設定して、early_stopping_rounds で止めるのが定石。

2. 木の複雑さ

num_leaves

木の葉っぱの数。大きいほど複雑なモデルになる。

多すぎると過学習、小さすぎると表現力不足。

max_depth

木の深さの上限。デフォルトは -1(制限なし)。

過学習しやすいので通常は 3〜12 程度に設定。

min_data_in_leaf

1つの葉に必要な最小サンプル数。

値を大きくすると「小さい葉」ができずに過学習防止になる。

3. サンプリング

feature_fraction

各木を学習するときに使う特徴量の割合。

例: 0.8 → 特徴量の80%をランダムに使用。

ランダム性を入れることで汎化性能アップ。

bagging_fraction

各木を学習するときに使うデータの割合(行サンプル)。

例: 0.8 → データの80%をランダムに使用。

bagging_freq とセットで使う。

4. 正則化(過学習防止)

lambda_l1

L1 正則化。特徴量選択の効果を持つ。

lambda_l2

L2 正則化。モデルの重みを小さく抑え、安定性を上げる。

min_split_gain

新しい分割を行うために必要な「最小の利得」。

値を大きくすると分割が厳しくなり、木がシンプルになる。

最後に

ちょっとした記録でした。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?