Skip to content

アプリケーション内で をクリックすると、お使いのDataRobotバージョンに関する全プラットフォームドキュメントにアクセスできます。

SHAPリファレンス

SHAPは、精度と説明可能性のジレンマに対処するために使用されるオープンソースのアルゴリズムです。SHAP(SHapley Additive exPlanations)は、ノーベル賞を受賞した経済学者Lloyd Shapleyによる協力ゲーム理論のフレームワークであるShapley値に基づきます。Shapleyは、

各メンバーがさまざまな貢献をした協力チーム間で支払いをどのように分割すべきでしょうか。

Shapley値は次のような答えを提供します。

  • メンバー X のShapley値はメンバーが取得するクレジットの量です。
  • 各サブチームにおいて、メンバー X がサブチームに参加するときにどれだけの限界価値が追加されるでしょうか。Shapley値は、この限界価値の加重平均です。
  • 支払い総額は、メンバーのShapley値の合計です。

Scott Lundbergは、SHAP Pythonパッケージのプライマリー作者であり、予測を説明するプログラミング手法を提供しています。

モデル予測のクレジットを特徴量で分割することが可能です!

特徴量の各値がゲームの「プレーヤー」であると想定すると、予測は支払いになります。SHAPは、「支払い」を特徴量間で公平に配分する方法を説明します。

SHAPは、以下を開発したSHAPオープンソースパッケージのおかげで人気が高まっています。

  • フリーアンサンブル法のための高速正確アルゴリズム
  • ディープラーニングモデル用の高速近似アルゴリズム
  • 任意のモデルのShapley値を推定する、モデルにとらわれないアルゴリズム

SHAPの以下の主要なプロパティは、DataRobot機械学習に特に適しています。

  • ローカル精度:特徴量の属性の合計は、DataRobotが「説明」するモデルの出力に等しくなります。
  • 欠損:すでに欠損している機能のインパクトはありません。
  • 一貫性:モデルへのインパクトが大きくなるように特徴量を変更しても、その特徴量に割り当てられている属性が減少することはありません。

追加の資料を以下に示します。

SHAPは、モデルの説明可能性に次のように貢献します。

  • 特徴量のインパクト:SHAPは、モデルの決定を促進している特徴量を高レベルで示します。SHAPがない場合、結果はサンプルサイズの影響を受けやすく、サンプルが非常に大きい場合を除き、再計算すると変化する可能性があります。ディープダイブを参照してください。

  • 予測の説明:すべての列の結果を生成することに適さない、特定のタイプのデータがあります。これは、銀行や保険など規制の厳しい業界では特に問題になります。SHAPは、特定の予測が平均と異なる予測において各特徴量が寄与する割合を説明します。たとえば、Xドルで販売されると予測された不動産レコードがある場合、SHAP予測の説明は、各特徴量がその価格にどれだけ貢献しているかを示します。ディープダイブを参照してください。

備考

SHAPベースの特徴量のインパクトまたは予測の説明の視覚化を取得するには、モデル構築前に高度なオプションのSHAP値をサポートするモデルのみを含めるを有効にする必要があります。

特徴量のインパクト

特徴量のインパクトは、モデルによって使用される各特徴量(j)に有用性を割り当てます。

SHAPあり

モデルといくつかの観測値(トレーニングデータで最大5000行)が提供された場合、各特徴量jに対する特徴量のインパクトは次のように計算されます。

のサンプル平均abs(shap_values for feature j)

上位の特徴量のインパクトが100%になるように値を正規化します。

置換あり

モデルといくつかの観測値(既定では2500、最大100,000)が提供された場合、実際のデータに基づいてモデルの指標を計算します。各列に対して以下の処理を行いますj

  • jの値を置換します。
  • 置換されたデータの指標を計算します。
  • 有用性 = metric_actual - metric_perm

最大の結果値で正規化します(オプション)。

予測の説明

SHAP予測の説明は加法性です。SHAP値の合計は、次の値と完全に等しくなります。

[prediction - average(prediction)]

XEMPとSHAPのどちらかを選択するときは、精度と解釈性およびパフォーマンスの必要性を考慮してください。XEMPでは、すべてのブループリントがオートパイロットに含まれているので、結果の精度はわずかに高くなる可能性があります。しかし、SHAPはすべての_主要_なブループリントをサポートするので、これはすべてのケースに当てはまるわけではなく、精度が同じであることがあります。SHAPは、より高い解釈性とパフォーマンスを提供します。

  • 結果は直感的です
  • すべての機能に対して計算されます
  • 多くの場合、結果は5〜20倍速く返されます
  • 加法性です
  • オープンソースの特性は透明性を提供します

予測の説明における加法性

場合によっては、SHAP値が予測に加算されないことがあります。これはSHAP値が直接モデル出力の単位において加法性であり、いくつかの理由で予測の単位とは異なる場合があるからです。

  • ほとんどの二値分類問題では、SHAP値は確率空間とは異なるスケール[0,1]に対応します。これは、これらのアルゴリズムが(最も一般的にはロジスティック関数prob = logistic(y)のような非線形関数を使用して)直接出力yを常に0と1の間の値にマッピングすることに起因します。(専門用語では、モデルの「リンク関数」はlogit(p)で、logistic(y)の逆です。)この一般的な状況では、SHAP値は、最終確率空間ではなく、リンク前の「余裕空間」で加法性です。これはsum(shap_values) = logit(prob) - logit(prob_0)を意味します。ここでprob_0はモデルの予測のトレーニング平均です。

  • 歪んだターゲットを含む連続値問題は自然対数log()を同様のリンク関数として使用する場合があります。

  • モデルは(リンクの前に適用される)オフセットおよび(リンクの後に適用される)エクスポージャーを指定している場合があります。

  • モデルは、その予測を「制限」または「監査」します(それらを負以外の値に強制するなど)。

次の疑似コードは、これらのケースで加法性を検証するために使用できます。

# shap_values = output from SHAP prediction explanations
# If you obtained the base_value from the UI prediction distribution chart, first transform it by the link.
base_value = api_shap_base_value or link_function(ui_shap_base_value)
pred = base_value + sum(shap_values)
if offset is not None:
    pred += offset
if link_function == 'log':
    pred = exp(pred)
elif link_function == 'logit:
    pred = exp(pred) / (1 + exp(pred))
if exposure is not None:
    pred *= exposure
pred = predictions_capping(pred)
# at this point, pred matches the prediction output from the model

オープンソースの加法性に関する注意

SHAPとXGBoostライブラリの相互作用には既知の(稀な)問題があり、これによりSHAPによって若干正しくない値が追加される可能性があります。ほとんどのXGBoostモデルは、加法性に従うSHAP値を生成し、自動チェックによって検証されます。SHAP GitHubページで報告されている例を参照してください。

備考

GitHub にログインしてからこれらのGitHub リソースにアクセスしてください。

DataRobotでは、加法性の違反が1%未満の場合(モデル予測に正規化)、注意が表示され、SHAP値が提供されます。違反が1%より大きい場合、エラーが返され、(間違っている可能性のあるので)SHAP値は提供されません。

SHAPおよびKerasモデルとSELUおよびSwishを含む特定のアクティベーション関数との相互作用には既知の問題があり、SHAP値の加法性が失敗する可能性があります。この障害がKerasモデルで発生した場合、注意と共にSHAP値が提供されます。SHAP GitHubページで報告されている例を参照してください。SHAP値が実際の予測と一致しない - DeepExplainer

SHAP互換性行列

SHAPでのブループリントのサポートについては、以下を参照してください。

ブループリント 連続値 二値分類 OTV 予測サーバー
線形モデル
XGBoost
LightGBM
Keras
ランダムフォレスト x x x x
浅いランダムフォレスト
頻度コスト/強度 N/A N/A
スタック/ブーストされたブループリント
校正ありのブループリント
アンサンブル x x x x
sklearn GBM x x
DataRobot Primeモデル x x x x
DataRobotスコアリングコードモデル x x x x

その他の資料

以下の公開情報には、オープンソースのSHAPに関する追加情報が記載されます。


更新しました February 22, 2022
Back to top