【機械学習】ツリーモデルの変数重要度を理解する

こんにちは。今日はツリーモデルの解釈に使われる変数重要度について、自分でも理解が少しあいまいだったので整理してみようと思います。また、調べるにあたってはなるべく原典の論文を探して読むようにしています。和訳が適切でなく解釈の仕方が間違っている可能性もありますので、ぜひご指摘いただければ幸いです。

変数重要度という概念

変数重要度という考え方は、2001年の Breimanによる論文「Random Forests」で提唱されたようです。さっくりと読んでみると、

変数重要度の種類

変数重要度には以下の3種類の評価方法が存在しています。

  • Gini Importance
  • Split Importance
  • Permutation Importance

Gini Importance

その特徴量で不純度をどれだけ改善できたかという指標で評価する方法。不純度はジニ係数、またはエントロピーで表現される。

Split Importance

ツリーの分割にその特徴量が使われた回数をカウントするという非常にシンプルなもの。使われるケースは・・・あるのか?

Permutation Importance

その特徴量を完全に無効化(データレコード間で値をシャッフルする)したときに、しなかった場合のモデルと比べて精度がどの程度落ちるか(Out-of-Bag)を評価するもの。精度の低下が大きい=その変数は重要という考え方。

*Permutateとは、「並び替える」の意。

前述のBreimanの論文で使われていたのがこの手法のようです。

論文「Please Stop Permuting Features」によれば、データセットの特徴量同士の相関が強い場合には、正しく評価できないという欠点があるとのこと。

つまり、変数Aと変数Bの相関が強く、これらが真に重要な変数の場合に、変数A、Bをそれそれシャッフリングしてももう片方の変数がモデルに残っているために、精度は大きく低下せす、重要度が低く評価されてしまうということですね。

評価方法の使い分け

これは・・・どうなんでしょう・・?
勉強中。分かったら更新します。

LightGBMでの実装

私はLightGBMを使うことが多いので、LightGBMでの設定についても確認しておきます。

上記の重要度評価の方法はLightGBMの関数”feature_importance()”のオプションで指定可能です。

https://lightgbm.readthedocs.io/en/latest/pythonapi/lightgbm.Booster.html#lightgbm.Booster.feature_importance

・・・!なんと、LightGBMのデフォルトはSplitでした!OMG!
Gini Importanceによる評価を行いたい場合は、importance_type=“gain”と指定する必要があるようです。

*gainとありますが、giniによる評価と等価とかいてあります。
https://github.com/Microsoft/LightGBM/issues/1842

ちなみに、Permutation ImportanceについてはLightGBMの実装としては提供されていなさそうだった。(違ってたらごめんなさい) ただ、Scikit-learnのライブラリで提供されているようなので、組み合わせることで算出できそう。

https://www.kaggle.com/yassinealouini/permutation-importance

その他の評価方法

Partial Dependence Plots (PDPs)

モデルの特徴量重要度を解釈する他の方法として、PDPというものもあります。

こちらは2001年のFriedmanの論文「」で提案されたもの。

Individual Conditional Expectation (ICE) Plots

こちらは2015年にGoldsteinらによって提唱されたもので、PDPsをより洗練させたもの、らしい。
詳細はここでは割愛します。

SHAP

個人的には今一番注目している方法です。こちらに説明をまとめましたので、ご覧ください。

この記事を気に入っていただけたらシェアをお願いします!

コメントを残す

メールアドレスが公開されることはありません。

ABOUT US

Yuu113
初めまして。Yuu113と申します。 兵庫県出身、東京でシステムエンジニアをしております。現在は主にデータ分析、機械学習を活用してビジネスモデリングに取り組んでいます。日々学んだことや経験したことを整理していきたいと思い、ブログを始めました。旅行、カメラ、IT技術、江戸文化が大好きですので、これらについても記事にしていきたいと思っています。