予測の説明
モデルがなぜその予測を行ったかを理解することは、予測結果と同様に重要です。MLOps Desktopは、モデルを解釈するための複数の説明可能性ツールを提供しています。
- 分類モデルの学習を完了済み
- Pythonパッケージ:
pip install shap matplotlib
説明可能性の重要性
Section titled “説明可能性の重要性”ローン審査モデルで「承認」「却下」を予測する場合を考えます。説明可能性がなければ、以下の質問に答えられません。
- なぜこの申請者は却下されたのか
- どの特徴量が最も重要か
- モデルは特定のグループに偏っていないか
説明可能性ツールはこれらの質問に回答します。
-
学習済みパイプラインを開く
TrainerとEvaluatorを含むパイプラインを読み込みます。
-
パイプラインを実行
Runをクリックしてモデルを学習します。
-
Evaluatorノードをクリック
学習完了後、Evaluatorノードに結果が表示されます。
-
Explainタブを開く
結果パネルのExplainタブをクリックします。
3種類の可視化が表示されます。
- Feature Importance(特徴量重要度)
- SHAP Summary(SHAPサマリー)
- Partial Dependence(部分依存)
特徴量重要度
Section titled “特徴量重要度”表示内容: 各特徴量が予測全体にどの程度貢献しているか
Feature Importance (Random Forest)━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━petal length (cm) ████████████████████ 0.45petal width (cm) ██████████████ 0.35sepal length (cm) ████ 0.12sepal width (cm) ███ 0.08解釈方法:
- 棒が長いほど重要な特徴量
- Random Forestの場合、各特徴量がすべての木で不純度をどれだけ減少させるかで計算
SHAP (SHapley Additive exPlanations) は、各特徴量が予測をどのように押し上げ/押し下げるかを示すことで、個々の予測を説明します。
サマリープロット
Section titled “サマリープロット”全予測にわたる特徴量の影響を表示します。
SHAP Summary Plot━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ← 予測を下げる 予測を上げる →petal length ●●●●●●●○○○○○○○○●●●●●●●●●●petal width ●●●●●○○○○○○○○●●●●●●●sepal length ●●●○○○○○●●●sepal width ●●○○○●●各点は1つのサンプルを表します。
- 横位置: 特徴量が予測に与える影響
- 色: 特徴量の値(青=低い、赤=高い)
プロットの読み方:
- 高いpetal length(右側の赤い点)→ 予測を上げる
- 低いpetal length(左側の青い点)→ 予測を下げる
ウォーターフォールプロット
Section titled “ウォーターフォールプロット”単一の予測をステップごとに説明します。
予測: Class 2 (Virginica)
基準値: 0.33(全クラスの平均)
petal length = 5.1 +0.35 ▶▶▶▶▶▶▶petal width = 1.8 +0.25 ▶▶▶▶▶sepal length = 6.3 +0.05 ▶sepal width = 2.5 -0.02 ◀
最終値: 0.96 → Class 2このサンプルがVirginicaに分類された理由が明確にわかります。
部分依存プロット
Section titled “部分依存プロット”表示内容: 他の特徴量を一定に保ちながら、1つの特徴量を変化させたときに予測がどう変わるか
1つの特徴量と予測の関係を表示します。
Partial Dependence: petal length━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━予測 │ ╭───────── │ ╱ │ ╱ │─────╯ └────────────────────→ petal length 1 3 5 7解釈: petal lengthが約2.5を超えると、モデルは異なるクラスを予測する
2つの特徴量の相互作用を表示します。
Partial Dependence: petal length × petal width━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━petal width │ ░░░░░████████ │ ░░░░░████████ │ ░░░░░████████ │ ░░░░░░░░░████ └──────────────→ petal length
░ = Class 0 █ = Class 2クラス間の決定境界が可視化されます。
以下の点を確認してください。
- 重要な特徴量はドメイン知識と一致しているか
- 予想外に重要でない特徴量はあるか
- 決定境界は妥当か
以下の点を確認してください。
- 関係は線形か非線形か
- 閾値効果(急激な変化)はあるか
- 特徴量間の相互作用は妥当か
注意すべきパターン
Section titled “注意すべきパターン”| 警告サイン | 考えられる問題 |
|---|---|
| ランダムな特徴量が最重要 | データ漏洩または過学習 |
| IDカラムの重要度が高い | モデルが丸暗記している |
| 予期しない特徴量の相互作用 | データ品質の問題 |
説明のエクスポート
Section titled “説明のエクスポート”Exportをクリックすると、可視化を画像として保存できます。
feature_importance.pngshap_summary.pngpartial_dependence.png
次のステップ
Section titled “次のステップ”トラブルシューティング:
- 「shap が見つかりません」 —
pip install shapを実行 - SHAPが遅い — 大規模データセットでは時間がかかります。自動的にサンプリングされますが、ツリーベースのモデルを使用するとより高速です
- プロットが表示されない —
matplotlibがインストールされているか確認:pip install matplotlib