云栖号资讯:【点击查看更多行业资讯】
在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来!
近年来人工智能的浪潮越来越汹涌,以神经网络、集成模型为代表的机器学习模型在数据挖掘领域中发挥着不可替代的作用。在追求模型高精度的道路上,工业界和学术界也十分关注模型的可解释性,期待从复杂模型中得到更直观的理解。可解释机器学习作为索信达金融 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”,了解相关信息可以关注“InfoQ”