機械学習モデルの解釈可能性【SHAPを使った重要度分析入門】

機械学習モデルの解釈可能性【SHAPを使った重要度分析入門】 AIツール・レビュー

はじめに

機械学習モデルを実務で使うとき「なぜこの予測結果になったのか」を説明できることが重要です。「ブラックボックス」では現場に信頼してもらえず、導入がうまくいかないことがあります。

僕が製造業でMLを使った品質管理プロジェクトに取り組んだとき、「この予測の根拠は何ですか?」という質問に答えられなくて苦労した経験があります。そこで役立ったのがSHAP(シャップ)です。この記事ではSHAPの基本的な使い方を解説します。

SHAPとは

SHAP(SHapley Additive exPlanations)は、機械学習モデルの予測を「各特徴量がどれだけ寄与したか」で説明するライブラリです。ゲーム理論のシャープレイ値を機械学習に応用したもので、理論的な根拠があります。

ランダムフォレストやLightGBMなどの特徴量重要度とは異なり、SHAPは「個別の予測結果に対してどの特徴量がどれだけ影響したか」を正負込みで示してくれます。

インストールと基本的な使い方

pip install shap

TreeExplainer(ランダムフォレスト・LightGBM向け)

import shap
import pandas as pd
from sklearn.ensemble import RandomForestClassifier
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split

# データ準備
data = load_breast_cancer()
X = pd.DataFrame(data.data, columns=data.feature_names)
y = data.target

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# モデル学習
model = RandomForestClassifier(n_estimators=100, random_state=42)
model.fit(X_train, y_train)

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

# 特徴量重要度の可視化(全データ平均)
shap.summary_plot(shap_values[1], X_test, plot_type='bar')

個別の予測を説明する(Waterfall Plot)

# 1件目の予測を説明
shap.waterfall_plot(
    shap.Explanation(
        values=shap_values[1][0],
        base_values=explainer.expected_value[1],
        data=X_test.iloc[0],
        feature_names=X_test.columns.tolist()
    )
)

このグラフは「この患者が悪性と判断された理由」を特徴量ごとに赤(プラス寄与)・青(マイナス寄与)で示してくれます。

Summary Plot(全体傾向の把握)

# 各特徴量の影響の分布を表示
shap.summary_plot(shap_values[1], X_test)

縦軸に特徴量、横軸にSHAP値が並びます。右(プラス)に伸びるほど予測値を上げる方向に働いています。

製造業での活用例

品質管理への応用例を考えます。「今回のロットが不良品と判定された理由は何か」をSHAPで分析すると、現場担当者に対して「温度が高すぎたことが主な原因です」と説明できます。

# 不良品と判定された製品の原因分析
shap_val = explainer.shap_values(X_defective)

print("不良判定の主な原因:")
contributions = pd.Series(
    shap_val[1][0],
    index=feature_names
).sort_values(ascending=False)
print(contributions.head(5))

SHAPのメリット・注意点

  • メリット:個別予測の説明・全体傾向の把握・モデルのデバッグに使える
  • 注意点:計算コストが高い(特にディープラーニング)・特徴量間の相関があると解釈が難しくなる

まとめ

SHAPは機械学習モデルの「なぜ」を答えるためのツールです。現場への説明責任が求められる実務のプロジェクトでは特に重要です。まずはTreeExplainerを使ったsummary_plotから試してみてください。モデルの動きを「見える化」することで、信頼性の高いAI導入につながります。

💼 ITエンジニア転職特化

自分らしく働けるエンジニア転職を目指すなら【strategy career】

年収1000万・残業月30時間以下・リモート可の求人多数

💼 無料で転職相談する →

※アフィリエイト広告を含みます

※本記事にはアフィリエイトリンクが含まれます。

コメント

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