黑盒模型事後歸因解析:SHAP方法

近年來人工智能的浪潮越來越洶涌,以神經網絡、集成模型爲代表的機器學習模型在數據挖掘領域中發揮着不可替代的作用。在追求模型高精度的道路上,工業界和學術界也十分關注模型的可解釋性,期待從複雜模型中得到更直觀的理解。可解釋機器學習作爲索信達金融AI實驗室的重要研究方向之一,包括了內在可解釋模型和事後可解釋方法。我們希望可以通過一系列文章來介紹解釋不同模型的方法,並分享與實際場景相結合的業務與技術心得。

1.Shapley Value

在當今的金融、醫療等數據挖掘的應用領域中,模型的可解釋性和精度是同等的重要。衆所周知,精度較高的模型,如集成模型,深度學習模型等,內部結構複雜多變,不能直觀理解。SHAP,作爲一種經典的事後解釋框架,可以對每一個樣本中的每一個特徵變量,計算出其重要性值,達到解釋的效果。該值在SHAP中被專門稱爲Shapley Value。因此Shapley Value是SHAP方法的核心所在,理解好該值背後的含義將大大有助於我們理解SHAP的思想。

1.1 Shapley value 起源

Shapley value最早由加州大學洛杉磯分校(UCLA)的教授Lloyd Shapley提出, 主要是用來解決合作博弈論中的分配均衡問題。Lloyd Shapley是2012年的諾貝爾經濟學獎獲得者,也是博弈論領域的無冕之王。

我們已有的數據集中會包含很多特徵變量,從博弈論的角度,可以把每一個特徵變量當成一個玩家。用該數據集去訓練模型得到的預測結果, 可以看成衆多玩家合作完成一個項目的收益。Shapley value, 通過考慮各個玩家做出的貢獻,來公平地分配合作的收益。

1.2 Shapley value計算

可以通過一個小例子來看如何計算Shapley Value。

假設:合作項目 Proj=<Players, v>

Players={1,2,…n}, 每個玩家在這個項目中所做的貢獻量的特徵方程是v。

定義Proj=500行代碼,由3個程序員完成,這就對應3個玩家:1,2,3。

每個玩家可以獨立完成的代碼:$v({1})=100$, $v({2})=125$, $v({3})=50$

如果合作:$v({1,2})=270$,$ v({2,3})=350$, $v({1,3})=375$, $v({1,2,3})=500$。

具體的合作過程有6種情況:

玩家1邀請玩家2, 玩家2接着邀請玩家3;

玩家1邀請玩家3, 玩家3接着邀請玩家2;

玩家2邀請玩家1, 玩家1接着邀請玩家3;

玩家2邀請玩家3, 玩家3接着邀請玩家1;

玩家3邀請玩家1, 玩家1接着邀請玩家2;

玩家3邀請玩家2, 玩家2接着邀請玩家1;

用圖來表示:

如果我們要合理分配,是否公平主要看邊際貢獻。

先定義第i個玩家加入組織S的邊際貢獻 $\delta(i)=v(S \cup {i})-v(S)$

挑選第一種情況爲例:

玩家1邊際貢獻: $v({1})=100$

玩家2邊際貢獻: $v({1,2})-v({1})=270-100=170$

玩家3邊際貢獻: $v({1,2,3})-v({1,2})=500-270=230$

按照上面的計算過程,依次計算剩下的5種情況。同時考慮到這6種情況是等概率出現的。完整結果如下圖:

計算第i個玩家的Shapley Value, 主要是由上圖的邊際貢獻得到。

所以按照比例來分配獎金:

  • 玩家1分配的獎金爲總獎金的32.3%

  • 玩家2分配的獎金爲總獎金的32.3%

  • 玩家3分配的獎金爲總獎金的35.3%

2. SHAP原理

SHAP全稱是SHapley Additive exPlanation, 屬於模型事後解釋的方法,可以對複雜機器學習模型進行解釋。雖然來源於博弈論,但只是以該思想作爲載體。在進行局部解釋時,SHAP的核心是計算其中每個特徵變量的Shapley Value。

SHapley:代表對每個樣本中的每一個特徵變量,都計算出它的Shapley Value。

Additive:代表對每一個樣本而言,特徵變量對應的shapley value是可加的。

exPlanation:代表對單個樣本的解釋,即每個特徵變量是如何影響模型的預測值。

當我們進行模型的SHAP事後解釋時,我們需要明確標記。已知數據集(設有M個特徵變量,n個樣本),原始模型f,以及原始模型f在數據集上的所有預測值。g是SHAP中用來解釋f的模型。

先用f對數據集進行預測,得到模型預測值的平均值$\phi_{0}$。單個樣本表示爲$x=(x_1,x_2…x_M)$,$f(x)$爲在原始模型下的預測值。 $g(x)$是事後解釋模型的預測值,滿足$g(x)=\phi_{0}+\sum_{i=1}^{M} \phi_{i}x_{i}=f(x)$。其中$\phi_{i}$代表第i個特徵變量的Shapley Value,是SHAP中的核心要計算的值,需要滿足唯一性。同時上述模型g需要滿足如下的性質:

性質1:局部保真性 (local accuracy)

即兩個模型得到的預測值相等。當輸入單個樣本$x$到模型g中時,得到的預測值$g(x)=\phi_{0}+\sum_{i=1}^{M}\phi_{i}x_{i}^{’}$與原始模型得到的預測值$f(x)$相等。

性質2:缺失性(missingness)

如果在單個樣本中存在缺失值,即某一特徵變量下沒有取值,對模型g沒有影響,其Shapley Value爲0。

性質3:連續性(consistency)

當複雜模型f從隨機森林變爲XGBoost,如果一個特徵變量對模型預測值的貢獻增多,其Shapley value也會隨之增加。

在上述3個限制條件下,可以理論證明求出唯一的$\phi_{i}$,即對應的模型g也是獨一無二的。具體證明可參考 Shapley’s paper (1953).。

$\phi_{i}(f,x)=\sum_{S\subseteq \lbrace N \backslash i \rbrace }\frac{|S|!(M-|S|-1)!}{M!}[f_{x}(S\cup i)-f_{x}(S)]$

N={1,2…M}代表數據集中特徵變量下標,1代表第一個特徵變量,以此類推,i是第i個特徵變量,M是特徵變量的總個數。S是集合{1,2…i-1,i,…M}的子集,有$2^{M-1}$種可能。$|S|$是S中的元素的總個數。$f_{x}(S\cup i)$代表當樣本中只有$S\cup i$中的特徵變量值時,模型的預測值。$f_{x}(S\cup i)$代表當樣本中只有$S$中的特徵變量值時,模型的預測值。二者相減,可當成第i個特徵變量在子集S下的邊際貢獻。前面的權重(kernel): $\frac{|S|!(M-|S|-1)!}{M!}$ 是根據排列組合的公式得到, 代表有相同元素個數的S存在的概率。

3. SHAP分類

$\phi_{i}$就是衆所周知的第i個特徵變量的Shapley Value。SHAP的核心是計算這個理論的Shapely Value,如果直接計算,由於特徵子集的多種可能,上述計算方式的時間複雜度是指數級的。因此圍繞着如何計算Shapley Value,我們根據對Shapley Value計算的兩種近似方法將SHAP分爲兩大類。

3.1 Model-agnostic 近似

Kernel SHAP

該方法借用LIME方法(詳情請見可解釋機器學系列文章第二篇)來估計出解釋模型g中的$\phi_{i}$,屬於model-agnostic的方法。Linear LIME是指使用線性模型$\omega_{0}+\sum_{i=1}^{n}\omega_{i}x_{i}$來近似原始複雜模型f。從模型的構成來看,Linear LIME擬合的迴歸模型與SHAP模型$\phi_{0}+\sum_{i=1}^{n}\phi_{i} x_{i}$一脈相承,滿足特徵的可加性。

設定好LIME中的正則化參數,加權的核函數以及損失函數進行設定。設定模型複雜度$\Omega(g)$設爲0,加權核函數$\pi_{x}(z)=\frac{(M-1)}{(M choose |z|)|z|(M-|z|)}$,損失函數$L(f,g,\pi_{x}(z))=\sum_{z \in Z}\pi_{x}(z) [f(z))-g(z)]^{2}$。x是要解釋的樣本,z是抽取的樣本點,M是x的維度,$|z|$是z的維度。

利用LIME來估計出模型g中每個變量對應的係數,也就是SHAP中的$\phi_{i}$,得到關於權重$\phi_{i}$的唯一解,在這裏稱爲Shapley kernel。

3.2 Model-specific 近似

如果我們已知複雜模型的種類,比如樹集成模型,深度學習模型等,那麼可以用更快更高效的方法來計算對應每個樣本中的每個特徵變量的shapley value。對於不同的模型,計算Shapley Value也是不同的。TreeSHAP是專門針對樹模型的SHAP方法,下面會重點介紹。

TreeSHAP

樹集成模型中包括很多性能優良的黑箱模型,比如隨機森林、XGBoost、LightGBM和CatBoost,都屬於非線性模型。Scott M. Lundberg,Su-In Lee等提出了TreeSHAP來對樹模型進行局部解釋。相對於model-agnostic的局部解釋方法,TreeSHAP不需要抽樣,而是通過對樹模型中的節點來計算Shapley Value,具體算法可以參考論文2。

TreeSHAP有如下優點:

1. 計算時間減少

如果直接用Shapley Value的公式來計算,時間複雜度是指數級的,但是TreeSHAP將中計算Shapley Value的算法進行優化,時間複雜度變爲線性,因此可以大大縮短運行時間。

2. 將局部解釋拓展到抓取交互效應

對於每一個樣本, 局部解釋會對其中的每一個特徵變量計算對應的值。直觀來看,這種解釋不能讓我們直接地看到交互作用。爲解決這個問題,TreeSHAP提供了計算SHAP interaction value(參考論文2)的方法來看模型內部的交互作用。

3. 基於衆多局部解釋來進行全局解釋

對於整個數據集,可以運用Shapley Value來高效準確地獲得局部解釋性,即對每個樣本的解釋,可以幫助我們得到特徵變量的全局解釋。對於某一個特徵變量,TreeSHAP可以計算出所有樣本中對應該變量的Shapley Value, 將它們的平均值作爲該特徵的重要性值,從而得到全局解釋。

4.SHAP解釋

介紹完如何計算Shapley Value之後,要開始解讀是Shapley Value如何影響原始模型f的預測值。假設數據集中有4個特徵變量$z_1,z_2,z_3,z_4$,用原始模型f預測之後,我們以模型預測值的平均值作爲其期望$E(f(z))$,即$\phi_0$。以單個樣本$x=(x_1,x_2,x_3,x_4)$爲例,它在原始模型中的預測值爲$f(x)$, 我們計算出4個對應的Shapley Value $\phi_1,\phi_2,\phi_3,\phi_4$後開始解釋。

對於整個數據集而言,$\phi_0$是固定的,是模型預測的平均值,可爲正也可爲負。上圖解釋了這個樣本預測值與平均預測值之間存在差異的原因 。藍色的箭頭代表Shapley Value的值爲正,意味着該特徵變量對原始模型的預測值有一個正向的影響。紅色的箭頭代表Shapley Value的值爲負,意味着該特徵變量對原始模型的預測值有一個負向的影響。從圖中可以看出,$\phi_4<0<\phi_1<\phi_3<\phi_2$, 所以特徵變量$z_1,z_2,z_3$對$f(x)$有正向的作用,且$z_2$的作用最強。$z_4$的存在則對$f(x)$構成了負向的作用。最終在這4個特徵變量的力的作用下,將該樣本$x$的原始模型預測值從平均值達到了$f(x)$。

5. 代碼展示

SHAP可以用來解釋很多模型。接下來在臺灣銀行數據集上用Tree SHAP來解釋複雜樹模型XGBoost。

Tree Explainer是專門解釋樹模型的解釋器。用XGBoost訓練Tree Explainer。選用任意一個樣本來進行解釋,計算出它的Shapley Value,畫出force plot。對於整個數據集,計算每一個樣本的Shapley Value,求平均值可得到SHAP的全局解釋,畫出summary plot。

#訓練TreeExplainer
explainer=shap.TreeExplainer(clf)
shap_values=explainer.shap_values(test)

#局部解釋
shap.force_plot(explainer.expected_value,shap_values[9,:], test.iloc[9,:])
#全局解釋
shap.summary_plot(shap_values, test, plot_type="bar")

下圖是Tree SHAP對任意一個樣本畫出的force plot,由於Treeshap是對對數機率(log odd ratio)進行解釋,所以出現負數。具有負向影響的變量變爲PAY_AMT1和LIMIT_BAL等,具有正向影響的特徵變量加入PAY_AMT6,PAY_0。其他變量的Shapley Value由於值太小就不一一列舉。

在summary plot中PAY_0該特徵最重要,其次是LIMIT_BAL,PAY_AMT1。

6.結語

本文先引入博弈論中的經典問題:如何公平分配每個玩家對項目的收益,來介紹每個玩家的Shapley Value。通過類比的思想,將數據集中的特徵變量當做玩家,模型的預測值當做項目的收益。對於單個樣本而言,每個特徵變量計算出來的Shapley Value,可以將其理解爲該特徵如何影響原始模型的預測值。接下來圍繞着如何計算Shapley Value提出SHAP的兩種分類,一種是Kernel SHAP,對應model-agnostic方法。剩下的分類是對特定模型的,其中着重介紹了TreeSHAP。然後對計算出的Shapley Value應用博弈論的方法來進行局部解釋,全局解釋則是基於衆多樣本的局部解釋而得到。最後用臺灣銀行信用卡數據集實踐了TreeSHAP,並介紹幾種重要的圖,包括force plot、summary plot。

7.參考資料

  1. LIME: Ribeiro, Marco Tulio, Sameer Singh, and Carlos Guestrin. “Why should i trust you?: Explaining the predictions of any classifier.” Proceedings of the 22nd ACM SIGKDD International Conference on Knowledge Discovery and Data Mining. ACM, 2016.

  2. Scott M. Lundberg, Su-in Lee. From local explanations to global understanding with explainable AI for trees.2020.

  3. Scott M. Lundberg, Su-in Lee. A Unifified Approach to Interpreting Model Predictions, 2016.

原文鏈接:
https://mp.weixin.qq.com/s/dZ_CoYdVZexn3aaZ6BqNYw

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章