「機械学習におけるモデルの解釈性においてSHAP値の使用」

Using SHAP values for model interpretability in machine learning

機械学習の解釈性

機械学習の解釈性とは、機械学習モデルが予測を行う方法を説明し理解するための技術のことです。モデルが複雑になるにつれて、内部の論理を説明し、振る舞いを理解することがますます重要になります。

これは重要なことです。なぜなら、機械学習モデルは、医療、金融、刑事司法など、現実世界の結果をもたらす意思決定に使用されることが多いからです。解釈性がないと、機械学習モデルが良い意思決定を行っているのか、バイアスがあるのかを判断することが困難になります。

機械学習の解釈性には、さまざまな技術があります。一つの人気な手法は、特徴の重要度スコアを決定することで、モデルの予測に最も大きな影響を与える特徴を明らかにすることです。SKlearnモデルはデフォルトで特徴の重要度スコアを提供しますが、SHAP、Lime、Yellowbrickなどのツールを利用すると、機械学習の結果をより良く視覚化し理解することができます。

このチュートリアルでは、SHAP値とSHAP Pythonパッケージを使用して機械学習の結果を解釈する方法について説明します。

SHAP値とは何ですか?

SHAP値は、ゲーム理論のシャプリー値に基づいています。ゲーム理論では、シャプリー値は協力ゲームにおいて各プレイヤーが総支払額にどれだけ貢献したかを決定するのに役立ちます。

機械学習モデルでは、各特徴は「プレイヤー」と見なされます。特徴のシャプリー値は、特徴が全ての特徴の組み合わせにおいてどれだけ貢献するかの平均の大きさを表します。

具体的には、SHAP値は、特定の特徴が存在する場合と存在しない場合のモデルの予測を比較することで計算されます。これは、データセット内の各特徴と各サンプルに対して反復的に行われます。

各予測に対して各特徴に重要度の値を割り当てることで、SHAP値はモデルの振る舞いの局所的かつ一貫した説明を提供します。これにより、特定の予測に最も影響を与える特徴がどれであるか(肯定的または否定的に)が明らかになります。これは、深層ニューラルネットワークなどの複雑な機械学習モデルの理由を理解するために貴重です。

SHAP値の始め方

このセクションでは、KaggleのMobile Price Classificationデータセットを使用して、マルチ分類モデルを構築し分析します。RAM、サイズなどの特徴に基づいて、モバイル電話の価格を分類します。目的変数は、0(低コスト)、1(VoAGIコスト)、2(高コスト)、3(非常に高コスト)の値を持ちます。

注意: コードのソースと出力はDeepnoteワークスペースで利用できます。

SHAPのインストール

システムに<code>shap</code>をインストールするのは非常に簡単です。<code>pip</code>または<code>conda</code>コマンドを使用します。

pip install shap

または

conda install -c conda-forge shap

データの読み込み

データセットは、ラベルエンコーダーを使用してカテゴリを数値に変換したクリーンで整理されたものです。

import pandas as pd

mobile = pd.read_csv("train.csv")
mobile.head()

 

モデルのトレーニングと評価 

 

その後、トレーニングセットを使用してランダムフォレスト分類器モデルをトレーニングし、テストセットでのパフォーマンスを評価します。正確度は87%で非常に良く、モデル全体としてバランスが取れています。

from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import classification_report

# モデルの適合
rf = RandomForestClassifier()
rf.fit(X_train, y_train)

# 予測
y_pred = rf.predict(X_test)

# モデルの評価
print(classification_report(y_pred, y_test))

 

              precision    recall  f1-score   support

           0       0.95      0.91      0.93       141
           1       0.83      0.81      0.82       153
           2       0.80      0.85      0.83       158
           3       0.93      0.93      0.93       148

    accuracy                           0.87       600
   macro avg       0.88      0.87      0.88       600
weighted avg       0.87      0.87      0.87       600

 

SHAP値の計算

 

この部分では、SHAPツリーエクスプレイナーを作成し、それを使用してテストセットのSHAP値を計算します。 

import shap
shap.initjs()

# SHAP値の計算
explainer = shap.TreeExplainer(rf)
shap_values = explainer.shap_values(X_test)

 

サマリープロット

 

サマリープロットは、モデルの各特徴の特徴重要度をグラフィカルに表示するものです。モデルが予測を行う方法や最も重要な特徴を特定するための有用なツールです。

この場合、価格帯を決定するのに「ram」、「battery_power」、および電話のサイズが重要な役割を果たしていることが示されています。

# 特徴の影響をまとめる
shap.summary_plot(shap_values, X_test)

 

 

次に、「0」クラスの特徴重要度を視覚化します。予測するためにram、バッテリー、および電話のサイズがネガティブな影響を与えることが明確にわかります。

shap.summary_plot(shap_values[0], X_test)

   

依存プロット

 

依存プロットは、特定の特徴がモデルの予測にどのように影響するかを表示する散布図の一種です。この例では、「battery_power」が特徴です。

プロットのx軸には「battery_power」の値が表示され、y軸にはshap値が表示されます。バッテリー電力が1200を超えると、下位のモバイル電話モデルの分類に否定的な影響を与え始めます。

shap.dependence_plot("battery_power", shap_values[0], X_test,interaction_index="ram")

   

フォースプロット

 

特定のサンプルに焦点を当てます。具体的には、12番目のサンプルを詳しく調べて、どの特徴が「0」の結果に貢献したかを見てみましょう。そのために、フォースプロットを使用し、期待値、SHAP値、およびテストサンプルを入力します。

結果として、ram、電話のサイズ、およびクロック速度がモデルにより高い影響を与えることがわかります。また、f(x)が低いため、モデルは「0」クラスを予測しないことも観察されました。

shap.plots.force(explainer.expected_value[0], shap_values[0][12,:], X_test.iloc[12, :], matplotlib = True)

 

 

これからクラス「1」のフォースプロットを可視化します。右のクラスであることがわかります。

shap.plots.force(explainer.expected_value[1], shap_values[1][12, :], X_test.iloc[12, :], matplotlib = True)

 

 

テストセットの12番目のレコードを確認することで、予測を確認できます。

y_test.iloc[12]
>>> 1

 

決定プロット

 

決定プロットは、機械学習モデルの意思決定プロセスを理解するための有用なツールです。これにより、モデルの予測に最も重要な特徴量や潜在的なバイアスを特定することができます。

クラス「1」の予測に影響を与えた要因をより良く理解するために、決定プロットを調べます。このプロットに基づくと、電話の高さはモデルに対して負の影響を与え、RAMは正の影響を与えたようです。

shap.decision_plot(explainer.expected_value[1], shap_values[1][12,:], X_test.columns)

 

 

結論

 

このブログ投稿では、機械学習モデルの出力を説明するためのSHAP値という手法を紹介しました。SHAP値を使用して個別の予測とモデルの全体的なパフォーマンスを説明する方法を示しました。また、SHAP値を実践的に使用する例も提供しました。

機械学習が医療、金融、自動運転などの敏感な領域に拡大するにつれて、解釈性と説明可能性はますます重要になります。SHAP値は、予測とモデルの振る舞いを説明する柔軟かつ一貫したアプローチを提供します。予測がどのように行われるか、潜在的なバイアスを特定し、モデルのパフォーマンスを向上させるための洞察を得るために使用できます。Abid Ali Awan(@1abidaliawan)は、機械学習モデルの構築が大好きな認定データサイエンティストです。現在、コンテンツ作成と機械学習およびデータサイエンス技術に関する技術ブログの執筆に注力しています。Abidはテクノロジーマネジメントの修士号と通信工学の学士号を取得しています。彼のビジョンは、メンタルヘルスの問題を抱える学生向けにグラフニューラルネットワークを使用したAI製品を開発することです。

We will continue to update VoAGI; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more

データサイエンス

「機械学習と人工知能を利用した在庫管理の改善」

「人工知能(AI)は在庫管理システムの効果を大幅に向上させることができます需要予測をサポートし、在庫レベルを最適化し、...

AIニュース

OpenAIの需要急増により、ChatGPT Plusの申し込みを一時停止します

人工知能のパイオニアであるOpenAIは、需要の急増に苦しんでおり、そのためプレミアムChatGPT Plusサービスの新規申し込みを...

AIニュース

AIを使用してKYC登録が簡単になりました

キャピタルマーケットのプレーヤーは、CAMSKRAのAI組み込みKYCソリューションのおかげで、長くて手間のかかるKYC登録プロセス...

機械学習

「SIEM-SOAR インテグレーションによる次世代の脅威ハンティング技術」

NLP、AI、およびMLは、データ処理の効率化、自動化されたインシデント処理、コンプライアンス、および積極的な脅威検知を通じ...

人工知能

関数呼び出し:GPTチャットボットを何にでも統合する

OpenAIのGPTの新しい関数呼び出し機能を探索し、チャットボットが外部ツールやAPIと対話できるようにしますAIパワーを活用し...

人工知能

生成AIを使用して検索(およびブラウジング)しながら学びます

「Search Generative Experience(SGE)の新しいアップデートにより、人々はオンラインで検索しながら新しいことを簡単に学び...