SHAP 值 是什麼?

SHAP Values:SHAP 值 的完整解釋

基於Shapley值的機器學習模型解釋方法,公平分配每個特徵對預測結果的貢獻。

核心概念

SHAP值源於遊戲論中的Shapley值。在合作遊戲中,多個玩家合作創造總收益,問題是如何公平地分配這個收益?Shapley值提供了唯一滿足四個公理(效率性、對稱性、虛擬玩家、可加性)的分配方案。

在機器學習中,特徵被視為玩家,模型預測值被視為遊戲收益。SHAP值計算每個特徵對預測的平均貢獻,考慮了該特徵與其他特徵的各種組合。

SHAP的核心公式:

φ_i(f) = Σ_{S⊆N{i}} |S|! (|N|-|S|-1)! / |N|! * [f(S∪{i}) - f(S)]

其中φ_i是特徵i的SHAP值,N是所有特徵集合,S是任意特徵子集,f(S)是僅用子集S中的特徵時模型的預測值。

SHAP值的關鍵特性:

  • 局部解釋:對單個預測樣本提供解釋,而非全局模式
  • 理論保證:滿足Shapley公理,具有數學上的合理性
  • 公平性:基於邊際貢獻,不會無故給某個特徵高權重
  • 相互作用建模:能捕捉特徵間的交互效應

運作原理

計算SHAP值的過程涉及:

  1. 特徵組合列舉:對於N個特徵,枚舉所有2^N個可能的子集。每個子集代表一種「是否包含該特徵」的情景。

  2. 邊際貢獻計算:對於特定特徵i,計算加入該特徵前後的模型預測變化。由於加入順序不同會導致邊際貢獻不同,需要平均所有可能的順序。

  3. 權重平均:不同大小的特徵子集的邊際貢獻需要用Shapley權重進行加權平均,權重為 |S|! (|N|-|S|-1)! / |N|!,確保結果的理論性質。

  4. 預測分解:最終得到的SHAP值滿足局部準確性:base_value + Σ SHAP_i = 預測值。即預測值可完全分解為基準值加上各特徵的SHAP貢獻。

直接計算Shapley值的複雜度為O(2^N),對於特徵數多的模型不可行。因此實踐中使用近似算法:

  • TreeSHAP:針對樹模型(決策樹、隨機森林、梯度提升)的高效演算法,複雜度為O(L T D)其中L是樹葉數、T是樹數、D是樹深度
  • KernelSHAP:使用加權迴歸近似任何模型,採樣特徵組合計算邊際貢獻
  • DeepSHAP:針對深度神經網絡,結合DeepLIFT與SHAP的思想

實際應用

在信用評分中,銀行使用SHAP解釋拒貸決定。系統能說明「年收入過低貢獻-0.15」「負債比過高貢獻-0.20」「存款不足貢獻-0.10」,這比黑箱決策更符合法規要求。

在醫療診斷中,SHAP協助醫生理解AI診斷。例如肺癌診斷模型在顯示「異常區域SHAP值+0.35」「患者年齡貢獻+0.12」時,醫生能更有信心接受AI建議。

在欺詐檢測中,SHAP識別詐騙特徵。系統可發現「交易金額異常大」「地理位置變化」「時間模式異常」等特徵的貢獻,幫助審查員快速判斷。

在特徵工程中,SHAP幫助識別冗餘或無用特徵。若特徵的SHAP值始終接近0,說明模型不依賴該特徵,可以刪除以簡化模型。

在模型調試中,SHAP幫助發現模型偏見。若對某個人口群體的SHAP貢獻始終偏低,可能表示模型對該群體存在系統性歧視。

常見誤區

誤區1:認為SHAP值絕對客觀。SHAP值是基於Shapley值的特定定義,在其他定義下(如其他遊戲論值概念)結果會不同。應視SHAP為一種視角,而非唯一真理。

誤區2:混淆SHAP值與因果效應。SHAP是關聯分析,不涉及因果性。一個特徵的高SHAP值說明它對預測重要,但不說明改變它會導致預測改變(特別是在特徵相關時)。

誤區3:過度解釋交互作用。SHAP值計算了平均邊際貢獻,但對於強非線性模型,這個平均可能掩蓋了不同樣本上完全不同的貢獻模式。

誤區4:假設SHAP值之和等於模型預測。這對單個樣本成立(局部準確性),但對跨多個樣本的SHAP平均可能失效,特別是使用近似演算法時。

與相關技術的比較

  • 與特徵重要性的區別:特徵重要性(如Gini重要性)是全局度量,衡量特徵對全體樣本的平均貢獻。SHAP是局部度量,對每個樣本單獨計算。特徵重要性快速但粗糙,SHAP精細但計算量大。
  • 與LIME的區別:LIME在每個預測點用線性模型進行局部近似,簡單快速但可能不準確。SHAP基於Shapley值理論,更堅實但計算複雜。對於線性模型,LIME與SHAP接近;對於非線性模型,SHAP通常更可信。
  • 與注意力機制的關係:在Transformer等神經網絡中,注意力權重顯示模型關注的位置。SHAP值可視化特徵的貢獻,兩者互補但定義不同。

常見問題