# 【図解で解説】LightGBMの仕組みとPythonでの実装を見ていこう！

> 当サイト【スタビジ】の本記事では、最強の機械学習手法「LightGBM」についてまとめていきます。LightGBM の特徴とPythonにおける回帰タスクと分類タスクの実装をしていきます。LightGBMは決定木と勾配ブースティングを組み合わせた手法で、Xgboostよりも計算負荷が軽い手法であり非常によく使われています。

- URL: https://toukei-lab.com/light-gbm
- 公開: 2022.11.29 / 更新: 2026.10.28
- サイト: スタビジ（https://toukei-lab.com）

:::talk{who="umatan"}
当サイト【スタビジ】の本記事では、最強の機械学習手法「LightGBM」についてまとめていきます。LightGBMは決定木と勾配ブースティングを組み合わせた手法で、Xgboostよりも計算負荷が軽い手法であり非常によく使われています。
:::

こんにちは！

データサイエンティストのウマたん([@statistics1012](https://twitter.com/statistics1012?lang=ja))です！

様々な[データ分析コンペティション](/data-competition)で上位入賞しているのが[勾配ブースティング](/gradient-boosting)を使ったモデル！

[決定木](/%e6%b1%ba%e5%ae%9a%e6%9c%a8)とブースティングを用いた[Xgboost](/xgboost)が2014年に考案され、今でも最前線を戦う最強の手法ではあるのですが・・・

そんなXgboostの絶対的地位を脅かす存在がLightGBM！！

LightGBMの構造はXgboostと非常に近いものがありますが、<mark>計算負荷が少なくXgboostから置き換わりつつある手法です。</mark>

:::talk{who="robotan"}
あのXgboostを超える手法が登場！？
:::

:::talk{who="umatan"}
機械学習の世界は進化が非常に早いからねー！
:::

この記事では、そんなLightGBMについて徹底的に見ていきます！

<mark>LightGBMの特徴と理論、Pythonでの実装方法について見ていきましょう！</mark>

[DataDojo](https://data-dojo.org/)というデータ分析コンペの不動産データを使って実践していきつつ、最終的には有名な[Mnist](/mnist)という画像認識データセットを使って[ディープラーニング](/deep-learning)との比較をしていきます！

## LightGBMとは

![Teacher](/wp-content/uploads/2017/11/Teacher-amico-e1617441719965-1024x898.png)

まずはLightGBMの概要について見ていきましょう！

以下の動画でも解説していますのであわせてご覧ください！

::youtube{#BjniSO867ac}

LightGBMは2016年にリリースされ、Xgboostを改良した手法になっています。

Xgboostのgboostは**Gradient boost（勾配ブースティング）**&#x3092;示しており、LightGBMのGBMも同じく**Gradient boosting machine（勾配ブースティング）**&#x3092;示しています。

すなわち両手法とも基本的な考え方は同じ。

どちらも[弱学習器](/weak-learning)である[決定木](/%E6%B1%BA%E5%AE%9A%E6%9C%A8)を勾配ブースティングにより[アンサンブル学習](/ensemble)した手法になります。

> LightGBM speeds up the training process of conventional GBDT by up to over 20 times while achieving almost the same accuracy.\
> （引用:”[Google-LightGBM: A Highly Efficient Gradient Boosting](https://papers.nips.cc/paper/6907-lightgbm-a-highly-efficient-gradient-boosting-decision-tree.pdf)\
> [Decision Tree](https://papers.nips.cc/paper/6907-lightgbm-a-highly-efficient-gradient-boosting-decision-tree.pdf)“）

論文にある通り、LightGBMは通常の決定木を用いた<mark>勾配ブースティングよりも高速で解を求めることができるとあります。</mark>

それゆえにLightという名前が用いられているのですね。

ただ必ずしも精度が良くなるとは結論付けられておりません。

:::talk{who="robotan"}
精度が良くならないなら他の勾配ブースティングでいいんじゃないのー？？
:::

:::talk{who="umatan"}
いやいや、精度が一緒でも解に到達するスピードが速いコトは特徴量精査のPDCAを回しやすく結果的に良い結果を生む可能性が高い！
:::

精度を上げるためには手法の優劣よりも特徴量によって決まるコトが多いです。

その特徴量の精査にかける時間を取るためにはモデル構築の時間が早い手法を使う方が有利なのです。

そのため、<mark>時間の限られたコンペティションではLightGBMを使うユーザーが非常に多くなってきています。</mark>

LightGBMも含めた機械学習の手法について体系的に学びたい方は当メディアが運営す&#x308B;**[スタアカ](https://toukei-lab.com/achademy/)**&#x304C;オススメ！

:::box
[**・06.機械学習概要**](https://toukei-lab.com/achademy/courses/machien-learning-theory/)\
[**・07.機械学習実装**](https://toukei-lab.com/achademy/courses/machien-learning-deploy/)
:::

機械学習の他にもディープラーニングや生成AIのコースも用意しているので是非チェックしてみて下さい。

## LightGBMの特徴

![AI](/wp-content/uploads/2017/12/Artificial-intelligence-amico-min-1024x1024.png)

さてLightGBMの概念について見てきましたが、ここで簡単にLightGBMの特徴と理論について確認しておきましょう！

### 決定木と勾配ブースティングを組み合わせた手法

LightGBMは決定木と勾配ブースティングを組み合わせた手法です。

[決定木](/%E6%B1%BA%E5%AE%9A%E6%9C%A8)とは、ある変数の値によって集団をグループ分けしていく手法です。

例えば、2変数であれば以下のように分けることができます。

![決定木](/wp-content/uploads/2018/01/66c19942ab4ba346fdb64ccc04cde373-3.png)

タイタニック号のデータセットを決定木で分類していく例などが有名でしょう。

ただ決定木は、単体ではそれほど精度が高くなく、[過学習](/over-fitting)もしやすいです。

そのような性能の低い手法を[弱学習器](/weak-learning)と呼びます。

そして弱学習器を最強の手法に生まれ変わらせるのが[アンサンブル学習](/ensemble)という学習方法。

アンサンブル学習では複数の弱学習器を用いて学習をおこなっていきます。

アンサンブル学習の中でもバギングは並列的に、ブースティングは直列的に学習していきます。

バギングは並列に学習を進めて多数決を取るイメージ。

![バギング](/wp-content/uploads/2018/01/66c19942ab4ba346fdb64ccc04cde373-5.png)

決定木×バギングは[ランダムフォレスト](/%E3%83%A9%E3%83%B3%E3%83%80%E3%83%A0%E3%83%95%E3%82%A9%E3%83%AC%E3%82%B9%E3%83%88)と呼ばれ、これも強力な機械学習手法です。

一方、勾配ブースティングでは直列に学習を進めていきます。

![勾配ブースティング](/wp-content/uploads/2019/07/xgboost.jpg)

この学習のプロセスにおけるミソは、前回のモデルで生じた誤差を訓練データとして次の学習が行われるということ。

これにより、より<mark>誤差が少ないモデルが構築されるようになるというわけです。</mark>

そして、この決定木×ブースティングの手法こそLightGBMの根幹です。

### 決定木の学習方法が違う

決定木×勾配ブースティングだけではXgboostもLightGBMも変わりません。

LightGBMの特徴は、その**学習方法**にあります。

Xgboostを含む通常の決定木モデルは以下のように階層をあわせて学習していきます。

それを**Level-wise**と呼びます。

![level-wise学習法](/wp-content/uploads/2020/02/level-wise.jpg)\
（引用元：[LightGBM公式リファレンス](https://lightgbm.readthedocs.io/en/latest/Features.html)）

一方LightGBMは以下のように葉ごとの学習を行います。これを**leaf-wise**法と呼びます。

![leaf-wise学習法](/wp-content/uploads/2020/02/leaf-wise.jpg)\
（引用元：[LightGBM公式リファレンス](https://lightgbm.readthedocs.io/en/latest/Features.html)）

これにより、ムダな学習をしなくても済むためより効率的に学習を進めることができます。

<mark>LightGBMの解到達スピードが速いゆえんはここにあるのです。</mark>

### 過学習しやすい

ただ、先ほどの<mark>leaf-wise法は学習の構造的に過学習に陥りやすいという特徴</mark>があります。

[過学習](/over-fitting)とは訓練データにフィッティングし過ぎて未知データに対する予測精度が下がってしまう現象のことを言います。

<https://toukei-lab.com/over-fitting>

特にデータセットのサンプル数が少ない時は過学習のおそれがあるため注意が必要です。

学習する層の深さを一定以下に抑えるなど<mark>学習過程に制御を加えて過学習をしないようにしましょう！</mark>

### 特徴量ヒストグラム化

LightGBMでは、<mark>特徴量をヒストグラム化して学習を行います。</mark>

ツリーの枝分かれポイントを全網羅的に調べる必要がありましたが、ヒストグラム化することで計算負荷がだいぶおさえることができます。

これにより、**学習がスピードアップし、メモリ使用量が削減されるのです。**

## データコンペの回帰タスクに対してLightGBMをPython実装

![python](/wp-content/uploads/2019/08/Admin-amico-min-e1613730531228-1024x914.png)

それではいざ実践！

まずは、データ分析コンペ [DataDojo](https://data-dojo.org/competitions/0aedc9c6-9bb1-45a5-a4b6-a1be3002dbd3)の「**中古マンション価格予測チャレンジ**」というコンペのデータに対してLightGBMを実装してみたいと思います。

国産データコンペのNishika（2026年3月にサービス終了）で開催されていたトレーニングコンペで、今はDataDojoで同じコンペに無料で参加できます。

Pythonであればいとも簡単に実装することができるんです！

まず [DataDojo](https://data-dojo.org/competitions/0aedc9c6-9bb1-45a5-a4b6-a1be3002dbd3)にGoogleアカウントでログインして、コンペの「データ」タブから学習データ（train.zip）とテストデータ（test.csv）をダウンロードしてください（※ログインしないとデータをダウンロードできません）。

学習データには複数CSVが入っているので、それらをglobで結合させてデータフレーム化していきます。

![Matplotlib](/wp-content/uploads/2021/03/1dba507671ff61d7333c3fad5739b39d.jpg)

globは、ディレクトリに格納されたファイル名を抽出するのに便利なライブラリです。

<https://toukei-lab.com/glob>

```python
import glob
import pandas as pd
import numpy as np
import lightgbm as lgb
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_absolute_error as mae

files = glob.glob("train/*.csv")
data_list = []
for file in files:
    data_list.append(pd.read_csv(file, index_col=0))
df = pd.concat(data_list)
```

カラムを見てみると・・・

![Nishika data2](/wp-content/uploads/2021/03/Nishika-data2-724x1024.jpg)

欠損値があったり、数値型で欲しいデータが文字列型になっていたりするので前処理を施していきます！

```python
def data_pre(df):
    nonnull_list = []
    for col in df.columns:
        nonnull = df[col].count()
        if nonnull == 0:
            nonnull_list.append(col)
    df = df.drop(nonnull_list, axis=1)

    df = df.drop("市区町村名", axis=1)

    df = df.drop("種類", axis=1)

    dis = {
        "30分?60分":45,
        "1H?1H30":75,
        "2H?":120,
        "1H30?2H":105
    }
    df["最寄駅：距離（分）"] = df["最寄駅：距離（分）"].replace(dis).astype(float)

    df["面積（㎡）"] = df["面積（㎡）"].replace("2000㎡以上", 2000).astype(float)


    y_list = {}
    for i in df["建築年"].value_counts().keys():
        if "平成" in i:
            num = float(i.split("平成")[1].split("年")[0])
            year = 33 - num
        if "令和" in i:
            num = float(i.split("令和")[1].split("年")[0])
            year = 3 - num
        if "昭和" in i:
            num = float(i.split("昭和")[1].split("年")[0])
            year = 96 - num
        y_list[i] = year
    y_list["戦前"] = 76
    df["建築年"] = df["建築年"].replace(y_list).astype(float)

    year = {
        "年第１四半期": ".25",
        "年第２四半期": ".50",
        "年第３四半期": ".75",
        "年第４四半期": ".99"
    }
    year_list = {}
    for i in df["取引時点"].value_counts().keys():
        for k, j in year.items():
            if k in i:
                year_rep = i.replace(k, j)
        year_list[i] = year_rep
    df["取引時点"] = df["取引時点"].replace(year_list).astype(float)
    
    for col in ["都道府県名", "地区名", "最寄駅：名称", "間取り", "建物の構造", "用途", "今後の利用目的", "都市計画", "改装", "取引の事情等"]:
                df[col] = df[col].astype("category")
    
    return df
    
df = data_pre(df)
```

この前処理に関してここでは詳細は省きますが、全てが欠損値になっているカラムを削除して、「最寄り駅・面積・建築年・取引時点」に関して変換をおこなっています。

そして前処理をおこなったデータに対してLightGBM を実装！

LightGBM 4.0から`early_stopping_rounds`の引数はなくなったので、`callbacks`で`lgb.early_stopping(100)`を渡しています。

```python
df_train, df_val =train_test_split(df, test_size=0.2)

col = "取引価格（総額）_log"
train_y = df_train[col]
train_x = df_train.drop(col, axis=1)

val_y = df_val[col]
val_x = df_val.drop(col, axis=1)

trains = lgb.Dataset(train_x, train_y)
valids = lgb.Dataset(val_x, val_y)

params = {
    "objective": "regression",
    "metrics": "mae"
}

model = lgb.train(params, trains, valid_sets=valids, num_boost_round=1000, callbacks=[lgb.early_stopping(100)])
```

簡単ですね！

ここでは評価指標にMAE（平均絶対誤差）を使っていて、検証データでの結果は

**0.0764**となりました！

[パラメータチューニング](/hyper-para-tuning)や[特徴量エンジニアリング](/variable-engineering)によってさらに精度が上がりますので是非色々と手を動かしてみてください！

データコンペですのでテストデータで予測値を算出し提出するところまでやってみましょう！

```python
df_test = pd.read_csv("test.csv", index_col=0)
df_test = data_pre(df_test)

predict = model.predict(df_test)
df_test["取引価格（総額）_log"] = predict
df_test[["取引価格（総額）_log"]].to_csv("submit_test.csv")
```

作成した`submit_test.csv`をコンペの「提出」タブからアップロードすると、自動で採点されてリーダーボードに順位が出ます（DataDojoのこのコンペの評価指標はRMSE（二乗平均平方根誤差）で、提出は1日5回までです）。

簡単に実装できましたねー！

全コードは以下になります！

```python title="Light-gbm-mansion.py"
import glob
import pandas as pd
import numpy as np
import lightgbm as lgb
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_absolute_error as mae

files = glob.glob("train/*.csv")
data_list = []
for file in files:
    data_list.append(pd.read_csv(file, index_col=0))
df = pd.concat(data_list)

def data_pre(df):
    nonnull_list = []
    for col in df.columns:
        nonnull = df[col].count()
        if nonnull == 0:
            nonnull_list.append(col)
    df = df.drop(nonnull_list, axis=1)

    df = df.drop("市区町村名", axis=1)

    df = df.drop("種類", axis=1)

    dis = {
        "30分?60分":45,
        "1H?1H30":75,
        "2H?":120,
        "1H30?2H":105
    }
    df["最寄駅：距離（分）"] = df["最寄駅：距離（分）"].replace(dis).astype(float)

    df["面積（㎡）"] = df["面積（㎡）"].replace("2000㎡以上", 2000).astype(float)


    y_list = {}
    for i in df["建築年"].value_counts().keys():
        if "平成" in i:
            num = float(i.split("平成")[1].split("年")[0])
            year = 33 - num
        if "令和" in i:
            num = float(i.split("令和")[1].split("年")[0])
            year = 3 - num
        if "昭和" in i:
            num = float(i.split("昭和")[1].split("年")[0])
            year = 96 - num
        y_list[i] = year
    y_list["戦前"] = 76
    df["建築年"] = df["建築年"].replace(y_list).astype(float)

    year = {
        "年第１四半期": ".25",
        "年第２四半期": ".50",
        "年第３四半期": ".75",
        "年第４四半期": ".99"
    }
    year_list = {}
    for i in df["取引時点"].value_counts().keys():
        for k, j in year.items():
            if k in i:
                year_rep = i.replace(k, j)
        year_list[i] = year_rep
    df["取引時点"] = df["取引時点"].replace(year_list).astype(float)
    
    for col in ["都道府県名", "地区名", "最寄駅：名称", "間取り", "建物の構造", "用途", "今後の利用目的", "都市計画", "改装", "取引の事情等"]:
                df[col] = df[col].astype("category")
    
    return df
    
df = data_pre(df)

df_train, df_val =train_test_split(df, test_size=0.2)

col = "取引価格（総額）_log"
train_y = df_train[col]
train_x = df_train.drop(col, axis=1)

val_y = df_val[col]
val_x = df_val.drop(col, axis=1)

trains = lgb.Dataset(train_x, train_y)
valids = lgb.Dataset(val_x, val_y)

params = {
    "objective": "regression",
    "metrics": "mae"
}

model = lgb.train(params, trains, valid_sets=valids, num_boost_round=1000, callbacks=[lgb.early_stopping(100)])

df_test = pd.read_csv("test.csv", index_col=0)
df_test = data_pre(df_test)

predict = model.predict(df_test)
df_test["取引価格（総額）_log"] = predict
df_test[["取引価格（総額）_log"]].to_csv("submit_test.csv")
```

## 画像認識タスクに対してLightGBMをPython実装！

![Coding](/wp-content/uploads/2017/11/Coding-amico-e1617441754417-1024x921.png)

続いて画像認識タスクに対してLightGBMを適用させていきます！

```python
import lightgbm as lgb
import pandas as pd
import numpy as np
from tensorflow.keras.datasets import mnist
from sklearn.model_selection import train_test_split
```

今回は、[Mnist](/mnist)というよく画像認識に使われるデータセットを用いていきます。

このデータセットには0～9の文字が様々なカタチで書かれたサンプルが入っています。

```python
# Kerasに付属の手書き数字画像データをダウンロード
np.random.seed(0)
(X_train, labels_train), (X_test, labels_test) = mnist.load_data()
```

これにより学習データ60000個とテストデータ10000個に分けられます。

```python
# Training set を学習データ（X_train, labels_train）と検証データ（X_validation, labels_validation）に8:2で分割する
X_train,X_validation,labels_train,labels_validation = train_test_split(X_train_base,labels_train_base,test_size = 0.2)

# 各画像は行列なので1次元に変換→X_train,X_validation,X_testを上書き
X_train = X_train.reshape(-1,784)
X_validation = X_validation.reshape(-1,784)
X_test = X_test.reshape(-1,784)

#正規化
X_train = X_train.astype('float32')
X_validation = X_validation.astype('float32')
X_test = X_test.astype('float32')
X_train /= 255
X_validation /= 255
X_test /= 255
```

さらにこの部分で、データセットの変数を行列から1次元に変換し正規化しています。

```python
# 訓練・検証データの設定
train_data = lgb.Dataset(X_train, label=labels_train)
eval_data = lgb.Dataset(X_validation, label=labels_validation, reference= train_data)

#経過時間計測
import time
start = time.time()

#light gbm モデル構築
params = {
'task': 'train',
'boosting_type': 'gbdt',
'objective': 'multiclass',
'num_class': 10,
}

gbm = lgb.train(
params,
train_data,
valid_sets=eval_data,
num_boost_round=100,
callbacks=[lgb.early_stopping(10)],
)
```

パラメータを決定しLightGBMを回すのはこの部分。

実際にLightGBMで推定してみると・・・

```python
preds = gbm.predict(X_test)
preds
y_pred = []
for x in preds:
  y_pred.append(np.argmax(x))

from sklearn.metrics import accuracy_score
print('accuracy_score:{}'.format(accuracy_score(labels_test, y_pred)))

#経過時間
print('elapsed_timetime:{}'.format(time.time()-start))
```

0.972という推定精度が得られました！

![LightGBM　Mnist](/wp-content/uploads/2020/04/Light-GBM_performance2.jpg)

だいぶ高い正答率！

全コードを以下にまとめておきます。

```python title="Light-gbm.py"
import lightgbm as lgb
import pandas as pd
import numpy as np
from tensorflow.keras.datasets import mnist
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

# Kerasに付属の手書き数字画像データをダウンロード
np.random.seed(0)
(X_train, labels_train), (X_test, labels_test) = mnist.load_data()

# 各画像は行列なので1次元に変換→X_train,X_validation,X_testを上書き
X_train = X_train.reshape(-1,784)
X_test = X_test.reshape(-1,784)

#正規化
X_train = X_train.astype('float32')
X_test = X_test.astype('float32')
X_train /= 255
X_test /= 255

# 訓練・テストデータの設定
train_data = lgb.Dataset(X_train, label=labels_train)
eval_data = lgb.Dataset(X_test, label=labels_test, reference= train_data)

params = {
'task': 'train',
'boosting_type': 'gbdt',
'objective': 'multiclass',
'num_class': 10,
'verbose': 5,
}

gbm = lgb.train(
    params,
    train_data,
    valid_sets=eval_data,
    num_boost_round=50,
)

preds = gbm.predict(X_test)
preds
y_pred = []
for x in preds:
  y_pred.append(np.argmax(x))

accuracy_score(labels_test, y_pred)
```

そして目を見張るべきはこの処理時間！LightGBMでは、178秒で処理が終了しているんです。

[Xgboost](/xgboost)でも同じデータセットを分類していますが、なんと1400秒もかかっています。

![Xgboost　Mnist](/wp-content/uploads/2020/04/xgboost_perfomance2.jpg)

<https://toukei-lab.com/xgboost>

LightGBMとXgboostとCatboostの3大勾配ブースティング手法を比較した記事を以下にまとめていますのでこちらもチェックしてみてください！

<https://toukei-lab.com/gradient-boosting>

ちなみにディープラーニングで回した時の推定精度は、0.9696！

以下がディープラーニングのコードになります。

```python title="Deep-learning.py"
import numpy as np
from sklearn.model_selection import train_test_split
import tensorflow as tf
from tensorflow.keras.datasets import mnist
from tensorflow import keras
from tensorflow.keras.layers import Dense, Activation
from tensorflow.keras.models import Sequential
from tensorflow.keras.utils import to_categorical


# Kerasに付属の手書き数字画像データをダウンロード
np.random.seed(0)
(X_train_base, labels_train_base), (X_test, labels_test) = mnist.load_data()

# Training set を学習データ（X_train, labels_train）と検証データ（X_validation, labels_validation）に8:2で分割する
X_train,X_validation,labels_train,labels_validation = train_test_split(X_train_base,labels_train_base,test_size = 0.2)

# 各画像は行列なので1次元に変換→X_train,X_validation,X_testを上書き
X_train = X_train.reshape(-1,784)
X_validation = X_validation.reshape(-1,784)
X_test = X_test.reshape(-1,784)

#正規化
X_train = X_train.astype('float32')
X_validation = X_validation.astype('float32')
X_test = X_test.astype('float32')
X_train /= 255
X_validation /= 255
X_test /= 255

# labels_train, labels_validation, labels_test をダミー変数化して y_train, y_validation, y_test に格納する
y_train = to_categorical(labels_train)
y_validation = to_categorical(labels_validation)
y_test = to_categorical(labels_test)

# パラメータの設定
n_features = 784
n_hidden   = 100
bias_init = 0.1

# 学習率
rate       = 0.01

# Sequentialクラスを使ってモデルを準備する
model = Sequential()

# 隠れ層を追加
model.add(Dense(n_hidden,activation='relu',input_shape=(n_features,)))
model.add(Dense(n_hidden,activation='relu'))
model.add(Dense(n_hidden,activation='relu'))

# 出力層を追加
model.add(Dense(10,activation='softmax'))

# TensorFlowのモデルを構築
model.compile(optimizer=tf.optimizers.Adam(rate),
              loss='categorical_crossentropy', metrics=['mae', 'accuracy'])

# Early stoppingを適用してフィッティング
log = model.fit(X_train, y_train, epochs=3000, batch_size=100, verbose=True,
                callbacks=[keras.callbacks.EarlyStopping(monitor='val_loss', 
                                                     min_delta=0, patience=10, 
                                                         verbose=1)],
                validation_data=(X_validation, y_validation))

# Test dataで予測を実行。
pred_test = model.predict_classes(X_test)

validation = (pred_test == labels_test)
size       = validation.size
size
correct    = np.count_nonzero(validation)
print(f"{correct}/{size} correct ({correct*100/size:.3f}%)")
```

詳しくは以下の記事でまとめています！

<https://toukei-lab.com/deep-learning>

<mark>LightGBMの強力さが分かっていただけたと思います。</mark>

:::talk{who="umatan"}
圧倒的に処理速度が速くて、精度も高い手法なんだ！
:::

## LightGBM　まとめ

ここまでご覧いただきありがとうございました！

本記事では。**LightGBM**について見てきました！

LightGBMは<mark>強力な手法ですがPythonで比較的簡単に実装できます。</mark>

最後にLightGBMの特徴についてまとめておきましょう！

:::point
**・決定木と勾配ブースティングを組み合わせた手法**\
**・決定木の学習方法が違う**\
**・過学習しやすい**
:::

データセットによっては、ディープラーニングを作り込むよりも勾配ブースティングの方が強力なコトは多いです。

LightGBMについてもっと勉強したい方は、当メディアでLightGBMを含めた様々な機械学習手法やデータサイエンスの知識を体系的に学べる[スタアカ（スタビジアカデミー）](https://toukei-lab.com/achademy/)というスクールを展開していますので是非チェックしてみてください！

#### [スタアカ（スタビジアカデミー）](https://toukei-lab.com/achademy/)

[![スタアカ（スタビジアカデミー）のトップページ](/wp-content/uploads/2026/10/achademy-top.jpg)](https://toukei-lab.com/achademy/)

公式サイト：<https://toukei-lab.com/achademy/>

<table class="table">
<tbody>
<tr>
<th>【価格】</th>
<td>ライトプラン：1,280円/月（全コースが受講し放題）<br>
プレミアムプラン：129,800円（通常149,800円・買い切り）</td>
</tr>
<tr>
<th>【オススメ度】</th>
<td><span class="stars" role="img" aria-label="5点中5点" data-value="5"></span></td>
</tr>
<tr>
<th>【サポート体制】</th>
<td><span class="stars" role="img" aria-label="5点中4点" data-value="4"></span></td>
</tr>
<tr>
<th>【受講形式】</th>
<td>オンライン形式</td>
</tr>
<tr>
<th>【学習範囲】</th>
<td>統計学・機械学習・ディープラーニングを網羅的に学ぶ<br>
生成AI（LLM・RAG・プロンプトエンジニアリング）を学ぶ<br>
SQLとPythonを組み合わせて実データを使った様々なワークを行う<br>
実践的なビジネスフレームワークを学ぶ<br>
マーケティングの実行プラン策定</td>
</tr>
</tbody>
</table>

ウォルマートのデータを使って商品の予測分析をしたり、実務で使うことの多いGoogleプロダクトのBigQueryを使って投球分析をしたり、データサイエンティストに必要なビジネス・マーケティングの基礎を学んでマーケティングプランを作ってもらったりする盛りだくさんの内容になってます！

:::box
**・BigQuery上でSQL、Google Colab上でPythonを使い野球の投球分析**\
**・世界最大手小売企業のウォルマートの実データを用いた需要予測**\
**・ビジネス・マーケティングの基礎を学んで実際の企業を題材にしたマーケティングプランの策定**\
**・生成AIのAPIを使ってチャットボットやAIエージェントを作る**
:::

::button[スタアカの受講はこちら]{href="https://toukei-lab.com/achademy/" note="＼今すぐ試す／"}

また、LightGBMを使ったデータ分析については以下のUdemy講座でより詳しく解説していますので是非チェックしてみてください！

#### [【初学者向け】データ分析コンペで楽しみながら学べるPython×データ分析講座](https://www.udemy.com/course/python-data/?referralCode=06466D9A805A034B1A97)

[![Udemy-course](/wp-content/uploads/2020/04/Udemy-me-min-1024x543.jpg)](https://www.udemy.com/course/python-data/?referralCode=06466D9A805A034B1A97)

<table class="table">
<tbody>
<tr>
<th>【オススメ度】</th>
<td><span class="stars" role="img" aria-label="5点中5点" data-value="5"></span></td>
</tr>
<tr>
<th>【講師】</th>
<td><span>僕自身！今なら購入時に「NZWCLGF4BTZENY6E」という講師クーポンコードを入れると90%オフ以上の割引価格になりますのでぜひご受講ください！</span></td>
</tr>
<tr>
<th>【時間】</th>
<td><span>4時間</span></td>
</tr>
<tr>
<th>【レベル】</th>
<td><span>初級～中級</span></td>
</tr>
</tbody>
</table>

僕自身がUdemyの色んなコースを受けてみた中で、<mark>他のコースにはないこんなコースあったらいいなみたいなコースを作ってみました。</mark>

このコースは、**なかなか勉強する時間がないという方に向けてコンパクトに分かりやすく必要最低限の時間で重要なエッセンスを学び取れるように**作成しています。

**アニメーションを使った概要編**と**ハンズオン形式で進む実践編**に分かれており、概要編ではYoutubeの内容をより体系的にデータ分析・機械学習導入の文脈でまとめています。

データサイエンスの基礎について基本のキから学びつつ、なるべく堅苦しい説明は抜きにしてイメージを掴んでいきます。

統計学・機械学習の基本的な内容を学び各手法の詳細についてもなるべく概念的に分かりやすく理解できるように学んでいきます。

そしてデータ分析の流れについては実務に即した[CRISP-DM](/crisp-dm)というフレームワークに沿って体系的に学んでいきます！

データ分析というと機械学習でモデル構築する部分にスポットがあたりがちですが、それ以外の工程についてもしっかりおさえておきましょう！

続いて実践編ではデータコンペの中古マンションのデータを題材にして、実際に手を動かしながら機械学習手法を実装していきます。

ここでは、探索的にデータを見ていきながらデータを加工し、その上で[Light gbm](/light-gbm) を使ってモデル構築までおこなっていきます。

是非興味のある方は受講してみてください！

Twitterアカウント([@statistics1012](https://twitter.com/statistics1012?lang=ja))にメンションいただければ2000円以下になる講師クーポンを発行いたします！

::button[このコースを見てみる]{href="https://www.udemy.com/course/python-data/?referralCode=06466D9A805A034B1A97" note="＼30日以内なら返金無料／"}

他の勾配ブースティング手法やディープラーニングについては以下の記事でまとめています。

<https://toukei-lab.com/gradient-boosting>

<https://toukei-lab.com/deep-learning>

また、機械学習全般の手法を以下にまとめていますのでこちらもあわせて見てみてください！

<https://toukei-lab.com/machine-learning-fresh>

機械学習やデータサイエンス、Pythonの勉強ロードマップは以下です！

<https://toukei-lab.com/machine-learning-study>

<https://toukei-lab.com/data-scientist>

<https://toukei-lab.com/python-learn>