使用 Scikit-learn 理解随机森林

栏目: 编程工具 · 发布时间: 6年前

内容简介:雷锋网按:本文为 AI 研习社编译的技术博客,原标题 Random forest interpretation with scikit-learn翻译 |  汪鹏        校对 | 余杭      整理 |  余杭在我以前的

雷锋网按:本文为 AI 研习社编译的技术博客,原标题 Random forest interpretation with scikit-learn ,作者 ando。

翻译 |  汪鹏        校对 | 余杭      整理 |  余杭

在我以前的 一篇文章 中,我讨论了随机森林如何变成一个「白箱子」,这样每次预测就能被分解为各项特征的贡献和,即预测=偏差+特征 1 贡献+ ... +特征 n 贡献。

我的一些代码包正在做相关工作,然而,大多数随机森林算法包(包括 scikit-learn )并没有给出预测过程的树路径。因此 sklearn 的应用需要一个补丁来展现这些路径。幸运的是,从 0.17 版本的 scikit-learn 开始,在 api 中有两个新增功能,这使得这个过程相对而言比较容易理解 : 获取用于预测的所有叶子节点的 id ,并存储所有决策树的所有节点中间值,而不仅仅只存叶子节点的。通过这些,我们可以提取每个单独预测的树路径,并通过检查路径来分解这些预测过程。

闲话少说,代码托管在 github ,你也可以通过pip install treeinterpreter来获取。

注意:这需要 0.17 版本的 scikit-learn ,你可以通过访问  http://scikit-learn.org/stable/install.html#install-bleeding-edge 这个网址来进行安装。

使用 treeinterpreter 分解随机森林

首先我们将使用一个简单的数据集,来训练随机森林模型。在对测试集的进行预测的同时我们将对预测值进行分解。

使用 Scikit-learn 理解随机森林

从模型中任意选择两个产生不同价格预测的数据点。

使用 Scikit-learn 理解随机森林

使用 Scikit-learn 理解随机森林

对于这两个数据点,随机森林给出了差异很大的预测值。为什么呢?我们现在可以将预测值分解成偏差项(就是训练集的均值)和单个特征贡献值,以便于观察究竟哪些特征项造成了差异,差异程度有多大。

我们可以简单地使用 treeinterpreter 中 predict 方法,向其传入模型和数据作为参数。

使用 Scikit-learn 理解随机森林

将表格打印出来

使用 Scikit-learn 理解随机森林

使用 Scikit-learn 理解随机森林

各个特征的贡献度按照绝对值从大到小排序。我们 观察到第一个样本的预测结果较高,正贡献值主要来自 RM 、LSTAT 和 PTRATIO。第二个样本的预测值则低得多,因为 RM 实际上对预测值有着很大的负影响,而且这个影响并没有被其他正效应所补偿,因此低于数据集的均值。

但是这个分解真的是对的么?这很容易检查:偏差和各个特征的贡献值加起来需要等于预测值。

使用 Scikit-learn 理解随机森林

请注意,在把贡献值相加时,我们需要对浮点数进行处理,所以经过四舍五入处理后的值可能略有不同。

比较两个数据集

在对比两个数据集时,这个方法将会很有用。例如:

......

想要继续阅读,请移步至我们的AI研习社社区: https://club.leiphone.com/page/TextTranslation/627

更多精彩内容尽在 AI 研习社。

不同领域包括计算机视觉,语音语义,区块链,自动驾驶,数据挖掘,智能控制,编程语言等每日更新。

手机端可以扫描二维码访问:雷锋网雷锋网 (公众号:雷锋网)

使用 Scikit-learn 理解随机森林

雷锋网原创文章,未经授权禁止转载。详情见 转载须知

使用 Scikit-learn 理解随机森林

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

领域特定语言

领域特定语言

Martin Fowler / ThoughtWorks中国 / 机械工业出版社华章公司 / 2013-3 / 89.00元

本书是DSL领域的丰碑之作,由世界级软件开发大师和软件开发“教父”Martin Fowler历时多年写作而成,ThoughtWorks中国翻译。全面详尽地讲解了各种DSL及其构造方式,揭示了与编程语言无关的通用原则和模式,阐释了如何通过DSL有效提高开发人员的生产力以及增进与领域专家的有效沟通,能为开发人员选择和使用DSL提供有效的决策依据和指导方法。 全书共57章,分为六个部分:第一部分介......一起来看看 《领域特定语言》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具