ITエンジニア ノイのブログ

ITエンジニアのノイです。 YouTubeで ITエンジニアのお勉強という学習用の動画を公開しています。チャンネル登録お願いします!https://m.youtube.com/channel/UCBKfJIMVWXd3ReG_FDh31Aw/playlists

LightGBM ~回帰問題~

LightGBMとは

LightGBMは、勾配ブースティングを基にしたアルゴリズムで、特徴量の重要性の計算や欠損値の取り扱いを自動的に行い、回帰および分類の問題に適用できるモデルです。LightGBMは、XGBoostを超えると言われる強力な機械学習アルゴリズムの一つです。

LightGBMの特徴

LightGBMは、高速な決定木の構築を実現するために4つの特徴があります。

  1. Leaf-wiseアルゴリズム: LightGBMは、最も損失を下げるノードから分割を進める方法を採用しており、これにより早くモデルの精度を向上させることができます。

  2. ヒストグラムベースのアルゴリズム: 連続値の特徴量の値をヒストグラム化し、ヒストグラムのbin(区間)ごとに分岐点を考えることで、分岐点の候補を減らし、高速化を実現します。

  3. Gradient-based One-Side Sampling (GOSS): 勾配(残差)の小さなデータポイントをランダムにサンプリングすることによって、学習データを削減し、高速化を実現します。これにより、計算コストが低減し、高速な学習が可能です。

  4. Exclusive Feature Bundling (EFB): 相互に排他的な特徴量を束ねて一つの特徴量バンドルにまとめることで、実質的に特徴量の数を減少させ、高速化を実現します。この方法により、モデルの複雑性を低減させつつ、高速な学習が可能です。

これらの工夫により、LightGBMは高速で効率的なモデル学習を実現し、XGBoostなどの他のブースティングアルゴリズムと競り合う強力な機械学習ツールとなっています。

データセット

palmerpenguins.load_penguinsを使います。これはペンギンのデータです。🐧

GitHub - mcnakhaee/palmerpenguins: Easily load the Palmer Penguins dataset in python

penguins

問題設定

今回はフリッパーを回帰問題として予測します。 ペンギンの翼はフリッパーと言います。 ちなみに海の中を泳ぐので、ほかの鳥とは違い、堅くオール状になっています。

池袋サンシャインシティ水族館の空飛ぶペンギン

コード

!pip install palmerpenguins
import lightgbm
import pandas as pd
import palmerpenguins

# dataの読み込み
df = palmerpenguins.load_penguins()
df.shape 

X = df.drop(['species', 'island', 'flipper_length_mm'], axis=1)
X['sex'] = X['sex'].astype('category')
y = df['flipper_length_mm']
df.head()

penguinsのデータ(dataframe)
データの中身を見てみると、このようになっています

# 学習の実行
model = lightgbm.LGBMRegressor(n_estimators=2, num_leaves=8)
model.fit(X, y)
lightgbm.plot_tree(model, tree_index=0);

学習結果(tree)
num_leavesは8としました。ハイパーパラメータですので、必要に応じて調整をします。 lightgbm.plot_treeのindexを省略すると0番目の木が表示されます。必要な木を表示させてください。

lightgbm.plot_importance(model)

説明変数の重要度
LightGBMでは説明変数の重要度を得ることができます。機械学習ではブラックボックスになりがちなので、重要度が分かる手法は説明性に優れています。

lgb.booster_.trees_to_dataframe()

木の構造をデータフレームで表示
気の構造は複数あるため、dataframeにして表示をしました。

youtu.be

深層学習教科書 ディープラーニング G検定(ジェネラリスト)公式テキスト 第2版 (EXAMPRESS) [ 一般社団法人日本ディープラーニング協会 ]

価格:3,080円
(2023/8/16 20:42時点)
感想(5件)