全局模型可解释之部分依赖图: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 ...
随机推荐
- 如何实现十亿级离线 CSV 导入 Nebula Graph
本文首发于 Nebula Graph Community 公众号 本次实践是基于业务需求及后续扩展,通过技术选型确定了 Nebula Graph 图数据库,首先需要验证 Nebula Graph 数据 ...
- SQL SERVER——高可用技术概述
自从SQL Server 2005以来,微软已经提供了多种高可用性技术来减少宕机时间和增加对业务数据的保护,而随着SQL Server 2008,SQL Server 2008 R2,SQL Serv ...
- Android---Android 开发四大组件
Android 应用程序组件 应用程序组件是一个Android应用程序的基本构建块.这些组件由应用清单文件松耦合的组织.AndroidManifest.xml描述了应用程序的每个组件,以及他们如何交互 ...
- XAF Blazor ListView 布局样式
前言 XAFBlazor虽然可以适应PC端及移动端,但从它的界面可以看出,它明显是移动优先的(Mobile First).这样的界面在PC端有时会感觉不是很方便(特别对于数据密集的系统来说),即将发布 ...
- 将MindSpore运行结果输出到log文件
技术背景 我们在Linux系统下使用一些深度学习框架(如MindSpore)运行脚本的时候,经常会用一些打印输出来判断当前执行的步骤,或者是使用打印输出来定位算法问题.但是在Linux系统下程序输出其 ...
- 写了一个 dict.cn 的油猴脚本,目的是通过url进行搜索。这样就能配合wox进行单词的搜索了。
写了一个 dict.cn 的油猴脚本,目的是通过url进行搜索.这样就能配合wox进行单词的搜索了. // ==UserScript== // @name dict.cn // @namespace ...
- C++学习笔记之编程思想
目录 编程思想 单例(Singleton)模式 观察者(Observer)模式 void*.NULL和nullptr C的类型转换 C++的类型转换 适配器(Adapter)模式 泛型编程的思想 模板 ...
- 个性化的单芯片的回声消除(AEC)解决方案
概述 这些年随着智能化产品的广泛应用,各种新型音频产品也层出不穷,在这个古老的领域,传统的回声消除方案一般是功耗高,成本非常高,集成性差.无法满足新产品新市场对回声消除的低成本低功耗个性化需求等特 ...
- 解锁通达信金融终端Level-2功能
外挂方式,不修改原程序. 逆向通达信Level-2 续十一 (无帐号登陆itrend研究版) 逆向通达信Level-2 续十 (trace脱壳) 逆向通达信Level-2 续九 (无帐号打开itren ...
- [模板]01trie,维护异或最大值
// 查询异或最大值,每次插入和查询时间都是log(C) template<class T> class trie01 { vector<vector<T>> tr ...