独家 | 全面!手把手教你决策树可视化(附链接&代码)

作者: Terence Parr, Prince Grover

翻译:王雨桐

校对:詹好

本文长度约为9500字,建议阅读10+分钟

本文分析了决策树可视化中的关键因素,比较了现有的可视化工具。并通过大量的示例介绍了一个决策树可视化工具的设计和实现过程。

目录

  • 决策树概述

  • 决策树可视化的关键因素

  • 效果展示

  • 与现有可视化的比较

  • 我们的决策树可视化

    • 可视化特征-目标空间

    • 细节部分

    • 用可视化树来解释单次观测

    • 横向决策树

    • 简化结构

  • 前车之鉴

  • 代码示例

    • 回归树可视化----以波士顿房价为例

    • 分类树可视化---以红酒为例

  • 实践经验

    • Scikit决策树的影子树

    • 工具箱

    • SVG生成的矢量图

  • 经验总结

  • 未来工作

在适用于结构化数据的机器学习模型中,梯度提升和随机森林可以称得上是明星级模型,而决策树则是这两者的基石。决策树的可视化工作对于了解这些模型的工作原理有极大的帮助。然而目前的可视化软件工具很基础,对新手并不友好。例如,我们无法利用现有的库展示每个节点是如何划分变量的。此外,当把一个新样本放到决策树中进行预测时,我们只能生成一张可供展示的结果图片,而很难运用现有工具将整个过程可视化。

 

因此我们创建了一个通用包来在scikit-learn上可视化决策树模型以及解释模型。并且我们将在马上出版的机器学习书籍《The Mechanics of Machine Learning》(由JeremyHoward编写)中大量使用该包。以下是一个简单的决策树可视化示例:

附书链接:

https://mlbook.explained.ai/

 

本文演示了这项工作的成果,详细介绍了我们为此所做的尝试,并概述了该工具的在使用过程中的基本框架和技术细节。该可视化软件是dtreeviz的一部分,它是一个新兴的Python机器学习库。本文不会过多阐述决策树的基本原理,但为了方便您熟悉相关的术语使用,我们会对此做一个简短的概述。

决策树概述

决策树是一种基于二叉树(最多有左右两个子树)的机器学习模型。决策树遍历训练数据并将信息浓缩为二叉树的内部节点和叶节点,从而学习训练集中的观测值之间的关系,这些观测值表示为特征向量x和目标值y。(注:向量为粗体,标量为斜体。)

 

决策树中的每个叶子都表示特定的预测结果。回归树中输出的预测是一个(连续的)值,例如价格;而分类树中输出的预测是(离散的)目标类别(在scikit中表示为整数),例如是否患有癌症。决策树将观测分为具有相似目标值的组,每个叶子代表其中一个分组。对于回归而言,叶节点中观测的相似性意味着目标值之间的差异很小;而对于分类而言,则意味着大多数或所有观测属于同一类别。

 

任何一个从树根到叶节点的路径都要经过一系列(内部)决策节点。在训练过程中选出特定的分割点后,每个决策节点将x中的单个要素的值(xi)与分割点值进行比较。例如,在预测房租的模型中,决策节点会比较特征,如卧室数量和浴室数量等。(请参阅第3章,新样本预测的可视化效果。)即使在具有目标值离散的分类模型中,决策节点仍会比较数值特征值,这是因为在scitkit中,假定决策树模型的所有特征都是数值类型,因此分类变量必须要经过独热编码、合并、标签编码等处理。

 

为了得到决策节点,模型将遍历训练集的子集(或根节点的完整训练集)。在训练过程中,根据相似性最大化的原则,决策树将根据选择节点的特征和该特征空间内的分割点,将观察结果放入左右两个桶中(子集)。(该选择过程通常要对特征和特征值进行详尽的比较)左子集中样本的xi特征值均小于分割点,而右子集中样本的xi均大于分割点。通过为左分支和右分支创建决策节点,递归地进行树的构造。当达到某个停止标准(例如,节点中包含的观测数少于5)时,决策树终止生长。

 

决策树可视化的关键因素

决策树可视化应该突出以下重要元素,我们将在下文中具体阐述。

 

  • 决策节点的特征vs目标值分布(在本文中称为特征-目标空间)。我们想知道能否基于特征和分割点将观测进行分类。

  • 决策节点的特征和特征分割点。我们需要知道每个决策节点所选择的待考察的特征变量,以及将观测分类的标准。

  • 叶节点纯度,这会影响我们的预测置信度。较高的纯度也就意味着那些在回归问题中较低方差的叶节点,以及分类问题中包含绝大多数目标的叶节点,它们都意味着更可靠的预测效果。

  •  叶节点预测值。基于训练集的目标值,该叶节点具体的预测结果。

  • 决策节点中的样本数。我们需要了解决策节点上大部分样本的归属。

  • 叶节点中的样本数。我们的目标是让决策树的叶节点更少,数目更大和纯度更高。如果样本的节点下的样本数太少,则可能由过拟合现象。

  • 新样本如何从根节点开始被分到特定的叶节点。这有助于解释为什么新样本得到了相应的预测。例如,在预测公寓租金价格的回归树中,由于决策节点检查了卧室的数量,而新样本的卧室数量大于3,因此预测价格偏高。

效果展示

在深入研究现有的可视化工具之前,想先介绍一下我们生成的效果图。本节重点介绍一些可视化的案例,这些是我们利用一些数据集构造的scikit回归和分类决策树。你还可以利用完整的库和代码复现所有案例。

附代码链接:

https://github.com/parrt/dtreeviz/blob/master/testing/gen_samples.py

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值