機械学習ツリーアンサンブルモデルの解釈可能性問題を解決する方法

機械学習ツリーアンサンブルモデルの解釈可能性問題を解決する方法

01 機械学習モデルが説明できない理由

数日前、あるピア交換グループで熱く議論されたトピックがありました。それは、機械学習モデルをどう説明するかというものでした。リスク管理の分野では、モデルをうまく説明できないと、通常は承認されません。これは特に銀行でよくあることなので、ほとんどのピアはLRを使用してモデル化します。しかし、機械学習のモデルアルゴリズムは数多く存在します。それを使わないのはもったいないと思いませんか?さらに、XGBoost、GBDT、Adaboost など、少なくとも効果の面では非常に使いやすいアルゴリズムもあります。

すると、なぜこれらのアルゴリズムは説明できないのかと疑問に思う学生もいるかもしれません。実際はこんな感じです。先ほど挙げたモデルはどれも統合モデルで、複雑なツリー構造で構成されています。人間にとって、なぜこの顧客が悪いのかを直感的に説明するのは難しいです。彼を悪いものにしている特徴は何でしょうか?

02 特徴重要度手法の一覧

実際、XGBoost のようなモデルは依然として解釈可能です。情報ゲインとノード分割の数を使用して機能の重要性を測定する人をよく見かけますが、これは本当に合理的でしょうか?

それが合理的かどうかを説明する前に、普及させる必要がある 2 つの概念があります。

1) 一貫性

これはモデルの機能の重要度を指し、特定の機能を変更してもその重要度は変化しません。たとえば、モデル A の特徴 X1 の重要度は 10 です。モデル内の特徴 X2 に重みを追加してその重要度を高めた場合、重要度を再計算した後も、特徴 X1 の重要度は 10 のままです。一貫性がないと、重要度の高い機能が、重要度の低い機能よりも重要度が低くなる可能性があります。

2) 個別化

つまり、データセット全体をまとめて計算しなくても、個々の重要度を計算できるということです。

さて、上記を理解した上で、特徴の重要度を計算する一般的な方法を見てみましょう。

1) ツリー SHAP : ゲーム理論とローカル解釈の統一されたアイデアに基づく Shapley 加法解釈は、ツリー統合と加法的な方法を通じて特徴属性の SHAP 値をアクティブ化します。

2) Saabas:パーソナライズされたヒューリスティックな特徴帰属方法。

3) mean(|Tree SHAP|):パーソナライズされたヒューリスティック SHAP 平均化に基づくグローバル属性メソッド。

4) ゲイン: ゲインはBreimanらが提案したグローバルな特徴重要度計算法です。XGBoostやscikit learnなどのパッケージで呼び出すことができます。これは、分割時に特定の特徴がもたらす不純度の削減値であり、特徴選択によく使用されます。

5) 分割数:分割数とは、特定の機能が分割に使用される回数を指します (重要度が高いほど引用されやすくなるため、論文の引用の原則に似ています)。

6) 順列:特徴をランダムに配置して、モデル効果の誤差の変化を確認することを指します。特徴が重要な場合、モデル誤差は大幅に変化します。

このうち、個別化されているのは 1 ~ 2 個のみですが、3 ~ 6 個はグローバル統計であるため、計算にはデータ セット全体が必要になります。

一貫性のケースについては、それを証明する例があります。

モデルはモデルAとモデルBの2つあります。AとBは全く同じですが、予測値を計算するときに、モデルBの特徴「咳」に強制的に10ポイントを追加します。下の図の通りです(クリックすると拡大画像が表示されます)。

上記の 6 つの方法の違いは、実験結果からわかります。

1) Saabas、Gain、Split Count は一貫性の要件を満たしていません。特徴の重みを変更すると、元の特徴の重要度が変わり、重要度のランキングが直接変わります。

2) 一貫性の要件を満たす唯一の方法は Tree SHAP と Permutation であり、Permutation はグローバル メソッドであるため、Tree SHAP のみが残ります。

03 SHAP は解決策となるかもしれません。SHAP とは何でしょうか?

SHAP (Shapley Additive exPlanation) は、あらゆる機械学習モデルの出力を説明するための統一されたアプローチです。 SHAP はゲーム理論とローカルな説明を結び付け、期待値の観点から唯一可能な一貫性がありローカルに正確な加法的な特徴帰属方法を表現します。

上記は公式の定義です。一見すると意味が分からないかもしれませんので、論文(Consistent Individualized Feature Attribution for Tree Ensembles)と合わせて読む必要があるかもしれません。

定義2.1. 加法的な特徴帰属法では、2値変数の線形関数である説明モデルgが用いられる。

Mは入力特徴の数であり、ϕi'は特徴の寄与です。 ϕ0は定数です(すべてのサンプルの予測平均を指します)。 SHAP 値には固有の解があり、ローカル精度、欠損値、一貫性という 3 つの特性もあります。

1) ローカル精度: ローカル精度は、各機能の重要度の合計が関数全体の重要度に等しいことを意味します。

2) 欠損値: 欠損値は、特徴量の重要性に寄与しないことを意味します。

3) 一貫性: 一貫性とは、モデルを変更しても機能の重要性は変わらないことを意味します。

つまり、SHAP 値が私たちの要件を満たす唯一の方法である可能性があり、上で述べた XGBoost、GBDT などはすべてツリー モデルであるため、ここでは TREE SHAP を使用します。

04 SHAP ケーススタディ

0401 SHAPのインストール

インストールは非常に簡単です。ターミナルで pip または conda を使用してインストールできます。

  1. pip インストール shap  
  2. または 
  3. conda インストール -c conda-forge shap

0402 樹木アンサンブルモデルの解釈的プレゼンテーションを提供する

現在、TREE SHAP は XGBoost、LightGBM、CatBoost、scikit-learn のツリー モデルをサポートしています。以下のデモをご覧ください。

  1. xgboostをインポートする 
  2. インポートシェイプ 
  3. # JS 視覚化コードをノートブックにロードする 
  4. shap.initjs()  
  5. 「XGBoost モデルをトレーニングします。関連するデータセットは SHAP で提供されます」  
  6. X, y = shap.datasets.boston ()である。  
  7. モデル= xgboost.train ({"learning_rate": 0.01}, xgboost.DMatrix(X, label = y ), 100)  
  8. 「」  
  9. SHAP値を使用した予測の説明 
  10. (同じアプローチはLightGBM、CatBoost、scikit-learnモデルにも適用されます)  
  11. 「」  
  12. explainer = shap.TreeExplainer (モデル)  
  13. shap_values = explainer.shap_values (X)  
  14. # 視覚化の説明 (Javascript を回避するにはmatplotlib = Trueを使用します)  
  15. shap.force_plot(explainer.expected_value, shap_values[0,:], X.iloc[0,:])

出力:

上の図は、各特徴の重要度を示しています。事前に平均値を計算して、赤側では予測値が高くなり、青側ではその逆になります。

このデータセットには、次の機能があります: 'CRIM'、'ZN'、'INDUS'、'CHAS'、'NOX'、'RM'、'AGE'、'DIS'、'RAD'、'TAX'、'PTRATIO'、'B'、'LSTAT'

  1. # トレーニングセットの予測を視覚化する 
  2. shap.force_plot(explainer.expected_value, shap_values, X)

出力:

上の図は、各機能間の相互作用を示しています (出力グラフはインタラクティブです)。

しかし、単一の特徴がモデルの出力にどのように影響するかを理解するために、その特徴の SHAP 値をデータセット内のすべての例の特徴値と比較することができます。 SHAP 値はモデル出力における特徴の変化を表すため、次のプロットは RM (エリア内の住宅あたりの平均部屋数) が変化すると予測住宅価格がどのように変化するかを表しています。

単一の RM 値の垂直分散は、他のフィーチャとの相互作用を示します。これらのインタラクティブな依存関係を明らかにするために、dependency_plot は色分けする別の機能を自動的に選択します。たとえば、RAD の色分けを使用すると、RAD 値が高い地域では RM (1 世帯あたりの平均部屋数) が住宅価格に与える影響が小さいことが強調されます。

  1. 「データ セット全体における単一の機能のパフォーマンスを示す SHAP グラフを作成します。各ポイントはサンプルを表します」  
  2. shap.dependence_plot("RM", shap_values, X)

出力:

全体的なレベルで各機能の重要度を取得するには、すべてのサンプルのすべての機能の SHAP 値をプロットし、SHAP 値の合計に従って降順に並べ替えます。色は機能の重要度 (赤は高、青は低) を表し、各ポイントはサンプルを表します。

  1. 「すべての機能の重要度ランキングチャートを描画します」  
  2. shap.summary_plot(shap_values, X)

出力:

すべてのサンプルの SHAP 値の平均を表示し、棒グラフを描くこともできます。

  1. shap.summary_plot(shap_values, X, plot_type = "bar" )

出力:

参考文献

[1] モデル予測を解釈するための統一的なアプローチ

http://papers.nips.cc/paper/7...

[2] ツリーアンサンブルの一貫した個別特徴の帰属

https://arxiv.org/pdf/1802.03...

[3] 解釈可能な機械学習

https://christophm.github.io/…

[4] SHAPE公式文書

https://github.com/slundberg/…

この記事は、ブログ投稿公開プラットフォームである OpenWrite によって公開されています。

<<:  【専門家がここにいるエピソード3】大量ログ分析とインテリジェントな運用・保守

>>:  なぜ中国はアメリカや日本を抜いて人工知能で世界をリードしているのでしょうか?

ブログ    
ブログ    
ブログ    
ブログ    

推薦する

Nature サブジャーナル: 機械学習を使用してヒトの遺伝子制御の背後にある「文法」を明らかにする

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...

...

スタンフォード大学の研究によると、AIチャットボットChatGPTのパフォーマンスは非常に不安定であることが判明

9月7日、スタンフォード大学の新たな研究により、人気の生成型人工知能(AI)チャットボット「Chat...

賈陽青氏がフェイスブックを辞任し、アリババ・シリコンバレー研究所の副社長に就任したことが明らかになった。

[[258639]] 3月2日の夜、知书でAI人事異動に関する大きなニュースが報じられた。Caff...

AIプロジェクトが失敗する6つの理由

人工知能が人間の生活と市場に与える影響は計り知れません。世界経済統計によると、人工知能は2030年ま...

自動車業界における人工知能の活用方法

[[431746]]自動車業界は、新しい技術の最前線に立つことが多いです。業界では数十年にわたって組...

デジタル技術が自動車産業をどう変えるのか

自動車業界のデジタル変革により、車両の構想、組み立て、運用の方法が再定義されています。 テクノロジー...

マルチモーダル生体認証の利点は何ですか?

マルチモーダル生体認証とは何ですか? マルチモーダル生体認証は、さまざまなシナリオやセキュリティ レ...

自動運転車が「すべての人を助ける」ことができるようになるには、15の課題を乗り越える必要がある

[[251351]]自動運転車の将来は、交通手段に革命を起こすと予測されていた電動スクーターの歴史と...

ニューラルネットワークのデバッグは難しすぎる。6つの実用的なヒントをご紹介します

ニューラル ネットワークに基づくプロジェクトにおけるボトルネックは通常、ネットワークの実装ではありま...

...

ライブ放送室で見る高解像度1080Pは720Pほど良くないかもしれない

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...

ワンクリックで細い毛を切り取る。これはAdobeの最新のAI切り抜きアルゴリズムで、近日公開予定

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...

掃除ロボットに抜け穴がある!あるいは数秒で盗聴ツールに変わる可能性もある

先日、陝西省西安市は「サイバーセキュリティは人々のためのものであり、サイバーセキュリティは人々に依存...