雲栖号資訊:【 點選檢視更多行業資訊】
在這裡您可以找到不同行業的第一手的上雲資訊,還在等什麼,快來!
近年來人工智能的浪潮越來越洶湧,以神經網絡、內建模型為代表的機器學習模型在資料挖掘領域中發揮着不可替代的作用。在追求模型高精度的道路上,工業界和學術界也十分關注模型的可解釋性,期待從複雜模型中得到更直覺的了解。可解釋機器學習作為索信達金融 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={1,2,…n}, 每個玩家在這個項目中所做的貢獻量的特征方程是 v。
定義 Proj=500 行代碼,由 3 個程式員完成,這就對應 3 個玩家:1,2,3。

計算第 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 的模型。
3. SHAP 分類
ϕi就是衆所周知的第 i 個特征變量的 Shapley Value。SHAP 的核心是計算這個理論的 Shapely Value,如果直接計算,由于特征子集的多種可能,上述計算方式的時間複雜度是指數級的。是以圍繞着如何計算 Shapley Value,我們根據對 Shapley Value 計算的兩種近似方法将 SHAP 分為兩大類。
**3.1 Model-agnostic 近似
Kernel SHAP**
TreeSHAP
樹內建模型中包括很多性能優良的黑箱模型,比如随機森林、XGBoost、LightGBM 和 CatBoost,都屬于非線性模型。Scott M. Lundberg,Su-In Lee 等提出了 TreeSHAP 來對樹模型進行局部解釋。相對于 model-agnostic 的局部解釋方法,TreeSHAP 不需要抽樣,而是通過對樹模型中的節點來計算 Shapley Value,具體算法可以參考論文 2。
TreeSHAP 有如下優點:
-
計算時間減少
如果直接用 Shapley Value 的公式來計算,時間複雜度是指數級的,但是 TreeSHAP 将中計算 Shapley Value 的算法進行優化,時間複雜度變為線性,是以可以大大縮短運作時間。
-
将局部解釋拓展到抓取互動效應
對于每一個樣本, 局部解釋會對其中的每一個特征變量計算對應的值。直覺來看,這種解釋不能讓我們直接地看到互動作用。為解決這個問題,TreeSHAP 提供了計算 SHAP interaction value(參考論文 2)的方法來看模型内部的互動作用。
-
基于衆多局部解釋來進行全局解釋
對于整個資料集,可以運用 Shapley Value 來高效準确地獲得局部解釋性, 即對每個樣本的解釋,可以幫助我們得到特征變量的全局解釋。對于某一個特征變量,TreeSHAP 可以計算出所有樣本中對應該變量的 Shapley Value, 将它們的平均值作為該特征的重要性值,進而得到全局解釋。
4.SHAP 解釋
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. 參考資料
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.
Scott M. Lundberg, Su-in Lee. From local explanations to global understanding with explainable AI for trees.2020.
Scott M. Lundberg, Su-in Lee. A Unifified Approach to Interpreting Model Predictions, 2016.
【雲栖号線上課堂】每天都有産品技術專家分享!
課程位址:
https://yqh.aliyun.com/zhibo立即加入社群,與專家面對面,及時了解課程最新動态!
【雲栖号線上課堂 社群】
https://c.tb.cn/F3.Z8gvnK
原文釋出時間:2020-05-13
本文作者:索信達AI實驗室
本文來自:“
InfoQ”,了解相關資訊可以關注“
”