全局模型可解释之部分依赖图:Partial Dependence Plot
本部分是来自大纲 模型可解释的一个子分支。
部分依赖图可以表示1个或者2个特征对模型的预测结果所能产生的边际效应。同时也能展示1个特征和label直接是否具有:线性相关性、单调性等。
当我们把pdp应用在线性回归上的时候,通过pdp,我们能够计算每个特征与label之间的线性相关性,其公式表述为
\]
当然pdp也可以适用与分类,只要把输出改成概率就行了,本质上,和回归任务没有太大的区别,对于多分类,可以用 one VS Rest的策略。
其中,\(x_s\)是我们本次关心的1到2个特征,而\(X_C\)则是其他剩余输入模型的特征,\(\hat f\)是本次的模型。通过不断改变\(x_s\)的取值,来看模型预测结果的变化,这时候通过pdp能得到一个特征是怎样影响模型预测的。总结一下:特征重要性展示的是哪些变量对预测的影响最大,而部分依赖图展示的是特征如何影响模型预测的
可以用部分依赖图回答一些与下面这些类似的问题:
- 假如保持其它所有的特征不变,经纬度对房价有什么影响?换句话说,相同大小的房子,在不同的地方价格会有什么差别?
- 在两组不同的人群上,模型预测出的健康水平差异是由他们的负债水平引起的,还是另有原因?
上面,度量特征变化所带来的影响的微分函数也可以表示为模型输出的均值:
\]
具体操作就是:先固定住其他特征,把你感兴趣的这个特征全部批量的改成某个值,不断从某个低值改到某个高值,看所有样本预测结果会做什么变化。
所以说,部分依赖图其实是一种“全局解释模型的方法”
pdp有一个前提假设是,你分析的特征和其余的固定特征没有任何的相关性。如果不能满足这个假设的话,解释的结果可能会存在无法理解的地方。
对于离散值的pdp
对于连续值,我们每次只做微小的改动,对于离散值,这个改动幅度换成“离散特征的取值”就ok。
因为pdp可以同时看一个或者2个特征,所以分两种情况。
1d特征依赖图
我们以泰坦尼克数据集为例子,单独查看'Fair'这个特征,表示乘客登船所需花费的费用。大概可以看到,随着你登船的价格变高,你生还的概率也随之变大。

阴影部分表示95%置信度,x轴方块是一些特征的分段,以及每个分段上人数的占比,头部方块是分位数。
2d特征依赖图
除了看一个特征之外,我们也可以同时看年龄和上船费用两个特征在pdp下是如何交互的。

在这上面你可以看到,年龄越大,且上船费用越高的人,他活下来的概率最大。
pdp的有点
- 直观,容易理解
- 可以从因果推理的角度去解释pdp,我们每改变一次特征取值,相当于对pdp进行了一次“treatment”的操作。
pdp的缺点
- 分析特征受限:每次只能分析1个或者2个,不能再多了
- 强假设,如果特征之间具有相关性,则结果往往会出乎你的意料: 比如你有2个特征,身高和体重,以及label:步行的速度。我们想看体重是如何影响步行速度的。那么在pdp的时候,我们相当于在原有的模型学习到的样本空间下,新增了一些样本点,分析结果就有可能得出 在身高2米的时候,体重为30,步行速度xxx,事实上,2米的身高不太可能出现30kg的体重,这很难解释清楚。
- 容易忽略异质条件的影响:举个case,假设你选的这个特征,有一半样本与预测正相关——特征值越大预测越大,—而同时呢,另一半负相关——特征值越小预测越大。这个时候,因为pdp是输出的模型预测值的均值,所以有可能导致这两部分样本相互抵消了,也就是,当你的特征变低的时候,一半样本输出低概率,一半输出高概率,两边加起来求个avg之后,抵消了.....凸(艹皿艹 )
最终你会得出:“这特征没对模型啥用”的结论。这个问题会放在局部模型可解释中的ICE部分再描述怎么解
全局模型可解释之部分依赖图:Partial Dependence Plot的更多相关文章
- Partial Dependence Plot
Partial Dependence就是用来解释某个特征和目标值y的关系的,一般是通过画出Partial Dependence Plot(PDP)来体现. PDP是依赖于模型本身的,所以我们需要先训练 ...
- OSI七层模型具体解释
OSI 七层模型通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯,因此其最基本的功能就是帮助不同类型的主机实现传输数据 . 完毕中继功能的节点通常称为中继系统.在OSI七层模型中,处于 ...
- TensorFlow的序列模型代码解释(RNN、LSTM)---笔记(16)
1.学习单步的RNN:RNNCell.BasicRNNCell.BasicLSTMCell.LSTMCell.GRUCell (1)RNNCell 如果要学习TensorFlow中的RNN,第一站应该 ...
- 【MapReduce】经常使用计算模型具体解释
前一阵子參加炼数成金的MapReduce培训,培训中的作业样例比較有代表性,用于解释问题再好只是了. 有一本国外的有关MR的教材,比較有用.点此下载. 一.MapReduce应用场景 MR能解决什么问 ...
- Bow模型(解释的很好)
Bag-of-words model (BoW model) 最早出现在NLP和IR领域. 该模型忽略掉文本的语法和语序, 用一组无序的单词(words)来表达一段文字或一个文档. 近年来, BoW模 ...
- Extjs4.10Model模型具体解释
一.创建Model模型 Extjs4.10提供了两种方法来创建Model模型,也就是创建类 方法一: Ext.define('person',{ extend:'Ext.da ...
- SI9000常用共面阻抗模型的解释
所谓的“共面”,即阻抗线和参考层在同一平面,即阻抗线被VCC/GND所包围, 周围的VCC/GND即为参考层. 相较于单端和差分阻抗模型,共面阻抗模型多了一个参数D1,即阻抗线和参 考层VCC/GND ...
- Asp.Net Core 全局模型验证
public class ActionFilter : IActionFilter { /// <summary> /// action 执行之前 /// </summary> ...
- caffe模型参数解释
作者:wjmishuai 出处: http://blog.csdn.net/wjmishuai/article/details/50890214 原始数据是28*28 1:数据层: layer { n ...
- apacheserver全局配置具体解释
server标识相关指令: ServerName ServerAdmin ServerSignature ServerTokens UseCanonicalName UseCanonicalPhysi ...
随机推荐
- vim 学习总结
vim 学习总结 一.介绍 vi 编辑器是所有 Unix 及 Linux 系统下标准的编辑器,类似于 Windows 系统下的 notepad(记事本)编辑器.在 Unix 及 Linux 系统的任何 ...
- 序列图 时序图 PlantUML vscode drawio 制作
序列图 时序图 PlantUML vscode drawio 制作 需求 最近发现 序列图 很多文档都用到,而且很好用.经过研究用vscode,idea都可以编写.这里用vscode编写比较简单. d ...
- 心电芯片ADS1292 KS1081 AD8232等的比较
首先看ADS1292, 从品牌和信誉,TI出品,这个来说应该是相对好一点的,医疗级水准的信号.内置24位的ADC,,噪声和整体功能都很全面,放大倍数1-12倍.应用在穿戴场合的缺点是:这个芯片封装尺寸 ...
- Mysql查询数据量大小
--按实例 SELECT CONCAT(round(sum(DATA_LENGTH/1024/1024/1024),2),"GB") as datazise FROM inform ...
- oracle用户密码有@符号连接方法
oracle用户密码不小心设置了带有"@"符号,正常登陆总是无法登陆,提示无法解析的连接字符串错误,其实解决办法很简单,转义即可,示例如下: exp system/\"x ...
- C++ bind函数
bind()是一个函数适配器,返回一个可调用对象,他可以将一个函数的参数列表做魔改. 设置默认参数 using namespace std::placeholders; void f(int a, i ...
- TomCat 的 Jenkins 报错:反向代理设置有误
1.进入 Linux 系统的 TomCat 安装目录的 conf 目录 2.编辑 server.xml 3.找到 <Connector> 标签 4.这里的 redirectPort 的值才 ...
- Sealos 云开发:Laf 出嫁了,与 Sealos 正式结合!
千呼万唤始出来,Laf 云开发最近已正式与 Sealos 融合,入住 Sealos!大家可以登录 Sealos 公有云 体验和使用,现在正式介绍一下 Sealos 云开发. Sealos 云开发是什么 ...
- js 时间控件 日期多选
在开发的过程中,时间总是不可避免要出现的需求,这里给大家分享我比较常用的js 时间控件和一个问题的解决方法 layDate 官方文档地址:https://www.layui.com/laydate/ ...
- 【Docker】Windows将docker下载的镜像存放到其他盘
1.在D盘创建一个存放docker虚拟机的文件夹,如下面图中所示: 2.创建好以后,找到桌面右下角的docker图标,在上面点右键,选择settings,打开docker的设置界面. 3.然后在doc ...