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

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

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】大量ログ分析とインテリジェントな運用・保守

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

ブログ    

推薦する

ChatGPTのiOS版はBing検索機能を統合しており、有料会員のみが利用可能

6月28日、OpenAIは今年5月にリリースしたChatGPTアプリのiOS版をリリースした。このア...

主流のブロックチェーンコンセンサスアルゴリズムの包括的なガイド

あらゆる優れた暗号通貨の背後には、優れたコンセンサス アルゴリズムが存在します。完璧なコンセンサス ...

「検索」は終わり、「レコメンド」も終わるのか?

ザッカーバーグ氏は最近、苦境に立たされている。 Facebookが名前を「Meta」に変更して以来、...

機械学習の収益は2023年までに803億ドルに達すると予想されている

機械学習を活用したソリューションとプロセスは、医療、情報技術 (IT)、農業、教育、エレクトロニクス...

...

清華大学特別賞焦建涛のビッグモデル起業:GPT-4ツールの使用における画期的進歩、オープンソースのシードラウンドで7000万ドルの資金調達

清華大学の卒業生 2 人によって作成されたこのツールは、ツールの使用においてGPT-4 の主要な利点...

RealAIは、業界の信頼できる発展を促進するために人工知能セキュリティ技術ツールを作成します。

4月26日、中国サイバースペース管理局の主催で「人工知能-社会実験の観点から見た社会ガバナンス」を...

...

...

...

コンパクトなBEVインスタンス予測フレームワーク: PowerBEV

この記事は、Heart of Autonomous Driving の公開アカウントから許可を得て転...

ソースディレクトリ内のファイルをプレフィックスに応じて異なるディレクトリに分散するためのアルゴリズム設計と C コードの実装

1. 要件の説明Linux システムのソース ディレクトリには、同じサフィックスを持つファイルがいく...