当我们用一些很高大上的算法做出很好的效果之后,心里那是美滋滋。兴高采烈地给领导汇报,领导说,这个GBRT效果确实不错,只是这个黑盒子没法解释,我在外面不太好讲故事啊。
喜欢讲故事的领导,对逻辑回归应该是比较熟悉的。逻辑回归里的系数就是非常容易解释,讲起故事来相当方便。但遇到各种黑盒子的算法,一般只能show show结果,吹吹niu B,让别人感觉自己用了黑魔法。然后发现有一帮谨慎的老大哥并不买账。
为免埋没自己的辛勤劳作,也只好搜罗一些故事素材撑下场面了。下面,给大家介绍一种对黑盒算法进行变量解释的方法,说不定可以让你的模型更有说服力。
这个方法就是偏依赖图(Partial Dependence Plots)。它是一种对给定的一个(或多个)输入变量 相对于预测结果(即输出)的效果进行可视化的工具。偏依赖图有点像线性或逻辑回归模型的系数,不过偏依赖图比系数更能捕获复杂的模式,但理论上它可以和任何模型一起使用。
首先来介绍偏依赖图的比较正式的表述。
假设S是一个包含p个输入变量的子集:
假设C是S的一个补集,也就是:
GBDT算法的输出:
则,S的偏依赖输出为:
为了计算给定变量(或多个变量)的偏依赖性,必须用整个训练集对Xs中的每一组值计算一次输出。 当数据集变大时,这可能在计算上相当费时。
老少爷们看到这里,如果觉得我说了这么多也没啥用。就当我凑字数好了。
接下来还是在加州房价数据集上建立一个GBRT模型,体验一下偏依赖图。
人生苦短,我用python。先导入包。
绘制偏依赖图,需要先训练模型。
数据集的输入变量集合一览。
下面画图看房价(输出)平均收入偏依赖关系。
从上面的偏依赖图可以看出,房价和平均输入有比较强的线性关系。
也可以在同一个图中画多个变量的偏依赖图。
从上图可以看出,平均每户住户 与房价是成负相关的,而平均房间数对房价并没有比较强的影响。
以上介绍的是单个变量与输出的偏依赖图,下面看看多个变量组合的偏依赖图。
可以看出,平均收入和平均每户住户组合对房价的影响,平均收入越高、平均每户住户约低时,房价越高;反之房价越低。这和单独来看时效果差不多。
通常,由于人类感知的限制,这些变量仅限于一个或两个变量,这样一来就可能由于隐藏的较高阶的相互作用而产生误导。但即便如此,尽管对于大数据集中的知识发现来说,偏依赖关系图仍然是非常有用的,尤其是当数据主要包含低阶关系时。
今天的偏依赖图就先介绍到这里,希望能够帮助大家丰富素材,更好地解释自己的模型。同时,也希望大家多多支持,谢谢~
领取专属 10元无门槛券
私享最新 技术干货