Python

LightGBMでモデル構築:特徴量の重要度を可視化する

スポンサーリンク

 

この記事はこんな方におススメです
  • Pythonを始めたばかりで基本から学びたい方
  • Pythonの基本的な部分を速習してまずは全体像を把握しておきたい方

▶ 初学者向けにデータ分析に関する記事を書いています

はじめに

LightGBMではモデルに使った特徴量の重要度を簡単に確認することができます。この重要度は、「各特徴量(各変数)がモデルの精度にどれだけ影響を与えたか」を表します。初期値のまま使うと、決定木の分岐を使用した数になります。

前回、Titanicデータで作成したモデルの特徴量の重要度を見ることにしましょう。Titanicデータを使ったモデル構築については以下の記事をご覧ください。今回は↓で作成したモデル「clf」から特徴量の重要度を確認していきます。

環境

  • Python 3.8.8
  • pandas 1.2.4
  • numpy: 1.20.1
  • matplotlib: 3.3.4

特徴量の重要度

特徴量の重要度は学習済みモデルから簡単に取得することができます。LightGBMの場合は、各特徴量の数値を取得できるだけでなく、描画する関数も用意されています。順にみていきましょう。

各特徴量の重要度を数字で確認する

特徴量の重要度は学習済みモデルから簡単に取り出せます。まず、書式を確認しておきましょう。

model.feature_importances_

たったこれだけです。簡単ですね。やってみましょう。

clf.feature_importances_
特徴量の重要度

このように「重要度」の数値を簡単に取得することができますが、どの特徴量の重要度なのかがわかりにくいですね。そのため、通常は次のように扱います。

# 特徴量の重要度の算出
pd.Series(clf.feature_importances_,index=X_train.columns)
各特徴量の重要度

各特徴量と重要度の値が対応しているのでわかりやすいですね。あるいは次のようにデータフレームにして扱うことも多いので、覚えておきましょう。

# 特徴量の重要度の算出(データフレーム)
pd.Series(clf.feature_importances_,index=X_train.columns).to_frame(name='重要度')
特徴量の重要度の算出(データフレーム)

各特徴量の重要度を可視化する

次に可視化する方法も確認しておきましょう。こちらもたった1行のコードです。

lgb.plot_importance(model)

早速やってみましょう。

# 特徴量の重要度を棒グラフで可視化
lgb.plot_importance(clf)

特徴量の重要度:棒グラフで可視化

これは便利ですね。グラフ周りの設定を特にしなくても、このように表示してくれます。特徴量が多すぎる場合には、max_num_featuresで数を指定することもできます。

# 特徴量の重要度を棒グラフで可視化:表示件数を指定
lgb.plot_importance(clf, max_num_features=4)
# 特徴量の重要度を棒グラフで可視化:表示件数を指定
スポンサーリンク

まとめ

今回はLightGBMではモデルに使った特徴量の重要度を確認する方法を扱いました。可視化すると視覚的に捉えることができるし、数値も同時に確認できるので便利ですね。

コメント

タイトルとURLをコピーしました