2026-04-30·実装·⏱ 約 5 分
モデル解釈性 入門 ─ SHAP・LIME・Permutation Importance
ブラックボックス ML モデルの予測理由を説明する 3 大手法を実装と直感で解説。規制業界・社内説明・モデル改善に必須のスキル。
ML モデルが高精度でも、『なぜその予測になったか』が説明できない と実務では使えない場面が増えています。Explainable AI(XAI) はその課題に対する手法群。
なぜ解釈性が必要か
- 規制対応: 金融(BIS)・医療(FDA)・EU AI Act
- 社内説明: 経営層・現場担当・顧客への説明責任
- バイアス検出: 性別・人種による不公平な予測の発見
- モデル改善: 重要特徴量の特定 → 特徴量エンジニアリング
- 信頼構築: ユーザーが意思決定に使える
1. SHAP(SHapley Additive exPlanations)
ゲーム理論の Shapley 値 に基づき、各特徴量の予測への貢献度を 公平に分配。理論的にきれい + 局所/全体の両方で使える。
SHAP の基本
import shap
import lightgbm as lgb
model = lgb.LGBMClassifier()
model.fit(X_train, y_train)
explainer = shap.TreeExplainer(model)
shap_values = explainer(X_test)
# 1 サンプルの説明
shap.plots.waterfall(shap_values[0])
# 全体の重要度
shap.plots.beeswarm(shap_values)
# 依存プロット(部分依存と相互作用)
shap.plots.scatter(shap_values[:, 'age'])💡 Shapley 値の直感
あるチームの勝利貢献を、各メンバーが入る・抜けるパターンの平均で計算 ─ これが Shapley 値。ML では『この特徴量がモデルにあるとき/ないときの平均的な予測差』。
2. LIME(Local Interpretable Model-agnostic Explanations)
予測したい点の 近傍 で、予測モデルを 線形モデル で近似。局所的に解釈可能なモデルで説明。
LIME の例
import lime
import lime.lime_tabular
explainer = lime.lime_tabular.LimeTabularExplainer(
X_train.values, feature_names=X_train.columns,
class_names=['no', 'yes'], discretize_continuous=True,
)
exp = explainer.explain_instance(
X_test.iloc[0].values, model.predict_proba, num_features=10
)
exp.show_in_notebook()3. Permutation Importance
ある特徴量の値を シャッフル したときに精度がどれだけ下がるか。シンプルだが頑健。
scikit-learn で
from sklearn.inspection import permutation_importance
result = permutation_importance(
model, X_test, y_test, n_repeats=10, random_state=42
)
importance = pd.DataFrame({
'feature': X_test.columns,
'importance': result.importances_mean,
}).sort_values('importance', ascending=False)本質的に解釈可能なモデル
事後説明より、最初から解釈可能なモデルを使う選択肢:
- 線形 / ロジスティック回帰: 係数 = 特徴量の重み
- 決定木: 分岐ルールが直接読める
- EBM(Explainable Boosting Machine): 高精度 + 解釈性
- ルールベース: スコアカード方式
Deep Learning の解釈
- Grad-CAM: 画像分類で『どこに注目したか』のヒートマップ
- Attention 可視化: NLP の Transformer で関連語
- Integrated Gradients: 入力勾配を積分
- Captum(PyTorch): DL 解釈の総合ライブラリ
実務での使い方
- 学習時: SHAP で重要特徴量を確認 → 不要なものを削除
- 評価時: 偽陽性 ・ 偽陰性ケースを SHAP で深掘り
- 本番運用: 個別予測の説明をユーザーに表示
- 監査時: バイアスや漏洩がないかチェック
- 改善時: 期待と異なる重要度 → モデル or データの問題
学習リソース
- [scikit-learn 入門](/blog/sklearn-introduction)
- [因果推論 入門](/blog/causal-inference-introduction)
- [MLOps 基礎](/blog/mlops-basics)
- [E 資格 ロードマップ](/certs/e-shikaku/roadmap)
Related Articles
関連記事
- 2026-04-30実装OpenAI API 実装入門 ─ Chat / Embeddings / Function CallingOpenAI API を使ったプロダクション開発の基礎。Chat Completion・Embedding・Function Calling・ストリーミング・コスト管理まで実装パターンを網羅。
- 2026-04-30実装Vercel で AI アプリをデプロイする ─ Next.js + AI SDK 入門Vercel にデプロイする最短ルート。Next.js の AI SDK + AI Gateway で OpenAI/Claude を統合し、ストリーミングチャット UI を 1 時間で公開する手順。
- 2026-04-30実装Streamlit で 1 時間で ML デモアプリ ─ 転職に効くポートフォリオPython だけで動くインタラクティブな ML デモを Streamlit で作る方法。データ可視化・ファイルアップロード・モデル予測 UI までの最小実装。