機械学習の中でも高いパフォーマンスを誇るLightGBM。このアルゴリズムを使うとき、「特徴量重要度(Feature Importance)」という言葉をよく耳にします。この記事では、LightGBMの特徴量重要度について、中学生でもわかるように簡単に、さらに具体的な計算方法まで詳しく解説します!
1. LightGBMとは?
LightGBM(ライトジービーエム)は、データからルールや傾向を学び、問題を解決するための機械学習アルゴリズムです。例えば、テストの点数を予測する場合、「勉強時間」や「過去のテスト結果」などのデータから未来の結果を予想する手助けをします。
2. 特徴量と特徴量重要度とは?
特徴量とは、データの中にある「ヒント」のようなものです。例えば、テストの点数を予測するとき、次のような情報がヒントになります。
- 毎日何時間勉強したか
- 過去のテストの点数
- 睡眠時間
- 塾に通っているかどうか
これらを機械学習では「特徴量」と呼びます。
一方、特徴量重要度は、「どのヒントがどれだけ役立ったか」を数値化したものです。これにより、モデルが予測する際にどの特徴量が重要だったかが分かります。
3. 特徴量重要度の計算方法
LightGBMでは、特徴量重要度を算出する方法がいくつかあります。以下では、具体的な計算方法を解説します。
3.1 分割回数による重要度(Split Count Importance)
この方法では、特徴量が「決定木の分割に使用された回数」を重要度とします。
計算式
$
\text{Feature Importance (Split)}_j = \sum _{t \in T} 1(f_t = j)
$
- $\ T $: 決定木のすべてのノード
- $\ f_t $: ノード $( t )$ で使用された特徴量
- $\ 1 $: 指定した特徴量が使われた場合に1、それ以外は0を返す関数
特徴
単純で分かりやすいですが、同じ特徴量が何度も使われる場合、過大評価される可能性があります。
3.2 情報利得による重要度(Gain Importance)
情報利得(Gain)は、分割により損失関数がどれだけ改善されたかを示す値です。この改善量を重要度として計算します。
計算式
$
\text{Feature Importance (Gain)}_j = \sum _{t \in T_j} \Delta \text{Loss}_t
$
- $ T_j $: 特徴量 $\ j $ が分割に使われたノードの集合
- $\Delta \text{Loss}_t $: ノード $ t $ での損失関数の減少量
特徴
モデルの性能向上に寄与した度合いを反映しているため、非常に実用的。ただし、値の大きい特徴量が過大評価されることがあります。
3.3 カバーによる重要度(Cover Importance)
カバー(Cover)は、分割時にどれだけのデータが関わったかを示す指標です。
計算式
$
\text{Feature Importance (Cover)}_j = \sum _{t \in T_j} w_t
$
- $ w_t $: ノード $ t $ に割り当てられたデータの重み
特徴
各分割でカバーされたデータ量を重視するため、実際のデータ分布を反映した重要度を算出できます。
4. 実際に特徴量重要度を計算する流れ
LightGBMは、上記の各計算を決定木ごとに行い、それをすべての木で合計します。具体的には、次のような流れです。
- 各決定木内のノードごとに、使用された特徴量を記録する。
- 各ノードで得られる「分割回数」「情報利得」「カバー」を計算する。
- 森全体でこれらを合計して、特徴量ごとの重要度スコアを算出する。
最終的に、モデルにどの特徴量が重要だったかを示す「ランキング」が得られます。
5. 特徴量重要度の使い方
特徴量重要度は、モデルの解釈や改善に非常に役立ちます。以下はその具体例です。
- 重要な特徴量の把握:モデルが何を重視しているのかを確認できます。
- 特徴量の選択:重要度が低い特徴量を削除してモデルをシンプルにできます。
- 業務への応用:例えば、「勉強時間が重要」と分かれば、「勉強時間を増やす」アクションを提案できます。
6. まとめ
LightGBMの特徴量重要度は、「どの特徴量がモデルにとって重要だったか」を可視化する便利なツールです。特に以下の3つの計算方法を理解しておくと、LightGBMを使いこなせるようになります。
- 分割回数による重要度
- 情報利得による重要度
- カバーによる重要度
これらを活用して、より効果的な機械学習モデルの構築を目指しましょう!