0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

构建一个决策树并查看它如何进行预测

lviY_AI_shequ 来源:未知 作者:李倩 2018-07-16 17:12 次阅读

与支持向量机一样,决策树也是多功能的机器学习算法,既可以执行分类任务,也可以执行回归任务,甚至可以执行多输出任务。 它们是非常强大的算法,能够完美契合复杂的数据集。 例如,在第 2 章中,我们在加利福尼亚住房数据集上训练了一个 DecisionTreeRegressor 模型,并对其进行了完美拟合(实际上是对其进行过度拟合)。 决策树也是随机森林的基本组成部分(参见第 7 章),它是当今最强大的机器学习算法之一。 在本章中,我们将首先讨论如何使用决策树进行训练,可视化和预测。 然后快速过一遍 Scikit-Learn 中使用的 CART 训练算法,并且讨论如何调整树并将其用于回归任务。 最后,我们会讨论决策树的一些局限性。

训练和可视化决策树

为了理解决策树,我们只需构建一个决策树并查看它如何进行预测。 以下代码在鸢尾属植物数据集上训练决策树分类器(请参阅第4章):

from sklearn.datasets import load_iris from sklearn.tree import DecisionTreeClassifier iris = load_iris() X = iris.data[:, 2:] # petal length and width y = iris.target tree_clf = DecisionTreeClassifier(max_depth=2) tree_clf.fit(X, y)

首先,我们可以通过使用 export_graphviz() 方法输出一个名为 iris_tree.dot 的图形定义文件来可视化已训练出来的决策树:

from sklearn.tree import export_graphviz export_graphviz( tree_clf, out_file=image_path("iris_tree.dot"), feature_names=iris.feature_names[2:], class_names=iris.target_names, rounded=True, filled=True )

然后,w我们可以使用 graphviz 软件包中的 dot 命令行工具将此 .dot 文件转换为各种格式,例如 PDF 或 PNG 。下面的命令行将 .dot 文件转换为 .png 图像文件:

$ dot -Tpng iris_tree.dot -o iris_tree.png

我们的第一个决策树如图6-1所示。

预测

让我们看看图 6-1 中所呈现的树如何进行预测。假设我们找到了一种鸢尾花,并且想对它进行分类。我们从根节点开始(深度0,顶部):该节点询问花朵的花瓣长度是否小于2.45厘米。如果是,则向下移动到根的左侧子节点(深度1,左侧)。在这种情况下,它是一个叶子节点(即它没有任何子节点),所以它不会提出任何问题:我们可以简单地查看该节点的预测类,决策树预测我们的花是一个Iris-Setosa(class = setosa)。 现在假设你找到另一朵花,但这次花瓣长度大于2.45厘米。我们必须向下移动到根节点的右侧(深度1,右侧),这不是叶子节点,因此它会提出另一个问题:花瓣宽度是否小于1.75厘米?如果是这样,那么我们的花很可能是一个 Iris-Versicolor(深度 2,左)。如果不是,它可能是一个 Iris-Virginica(深度 2,右)。就是这么简单。

决策树的许多特质之一是它们只需很少的数据准备。 特别是,它们不需要特征缩放或居中。

每个节点的样本属性计算它应用于的训练实例的数量。 例如,100 个训练样本的花瓣长度大于 2.45 厘米(深度1,右侧),其中 54 个花瓣宽度小于 1.75 厘米(深度2,左侧)。 节点的值属性告诉您此节点适用的每个类的训练实例数量:例如,右下角节点适用于 0 Iris-Setosa,1 Iris-Versicolor和 45 Iris-Virginica。 最后,节点的 gini 属性测量它的杂质:如果它适用的所有训练实例属于同一个类,则节点是“纯的”(gini = 0)。 例如,由于深度 1 左节点仅适用于 Iris-Setosa 训练实例,因此它是纯的,其基尼分数为 0。等式 6-1 显示训练算法如何计算出第 i 个节点的 gini 分数Gi。 例如,深度 2 左节点的基尼分数等于

接下来讨论另一种纯度测量方法。

• 其中 p_{i,k} 是第 i 个节点中训练实例之间的 k 类实例的比率。

Scikit-Learn使用只生成二叉树的CART算法:非叶节点总是有两个孩子(即问题只有yes / no的答案)。 但是,其他算法(如ID3)生成的决策树,可以具有两个以上孩子的节点。

图 6-2 显示了决策树的决策边界。 粗的垂直线代表根节点(深度 0 )的决定边界:花瓣长度 = 2.45厘米。 由于左侧区域是纯粹的(只有Iris-Setosa),所以不能再进一步分割。 然而,右侧区域不纯,所以深度 1 右节点在花瓣宽度 = 1.75厘米(用虚线表示)分裂。 由于 max_depth 设置为 2,因此决策树在此处停止。 但是,如果将max_depth设置为3,那么两个深度 2 节点将分别添加另一个决策边界(用虚线表示)。

模型解读:白盒与黑盒

正如你所看到的,决策树非常直观,他们的决策很容易解释。 这种模型通常被称为白盒模型。 相反,正如我们将看到的,随机森林或神经网络通常被认为是黑匣子模型。 他们做出了很好的预测,并且我们可以轻松检查他们执行的计算以进行这些预测; 然而,通常很难用简单的术语来解释为什么会做出预测。 例如,如果一个神经网络表示一个特定的人出现在图片上,很难知道究竟是什么促成了这个预测:模型是否认出了这个人的眼睛? 她的嘴? 她的鼻子? 她的鞋子? 或者甚至坐在沙发上? 相反,决策树提供了好且简单的分类规则,甚至可以根据需要手动调参(例如,用于花卉分类)。

估计属于各类的概率

决策树还可以估计实例属于特定类 k 的概率:首先遍历树来找到此实例的叶子节点,然后返回该节点中类 k 的训练实例的比率。 例如,假设你已经找到一朵花长 5厘米,宽 1.5 厘米的花朵。 相应的叶子节点是深度为 2 的左节点,因此决策树应该输出以下概率:Iris-Setosa(0/54)为 0%,Iris-Versicolor为 (49/54),即 90.7%, Iris-Virginica (5/54),即 9.3 %。 当然,如果你让它预测类别,它应该输出Iris-Versicolor(类别 1),因为它具有最高的概率。 让我们来检查一下:

>>> tree_clf.predict_proba([[5, 1.5]]) array([[ 0. , 0.90740741, 0.09259259]]) >>> tree_clf.predict([[5, 1.5]]) array([1])

完美! 请注意,估计的概率在图 6-2 的右下方矩形的其他任何地方都是相同的,比如说花瓣长 6 厘米,宽 1.5 厘米(尽管在这种情况下很明显它更有可能是 Iris -Virginica)。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 神经网络
    +关注

    关注

    42

    文章

    4785

    浏览量

    101276
  • 机器学习
    +关注

    关注

    66

    文章

    8453

    浏览量

    133164
  • 决策树
    +关注

    关注

    3

    文章

    96

    浏览量

    13601

原文标题:【翻译】Sklearn 与 TensorFlow 机器学习实用指南 —— 第6章 决策树

文章出处:【微信号:AI_shequ,微信公众号:人工智能爱好者社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    关于决策树,这些知识点不可错过

    利用决策树算法构建初始的之后,为了有效的分类,还要对其进行剪枝,剪枝是为了减少过拟合现象。
    发表于 05-23 09:38

    ML之决策树与随机森林

    ML--决策树与随机森林
    发表于 07-08 12:31

    介绍支持向量机与决策树集成等模型的应用

    本文主要介绍支持向量机、k近邻、朴素贝叶斯分类 、决策树决策树集成等模型的应用。讲解了支持向量机SVM线性与非线性模型的适用环境,对核函数技巧作出深入的分析,对线性Linear核函数、多项式
    发表于 09-01 06:57

    决策树的生成资料

    在本文中,我们将讨论种监督式学习算法。最新代意法半导体 MEMS 传感器内置基于决策树分类器的机器学习核心(MLC)。这些产品很容易
    发表于 09-08 06:50

    基于粗集的决策树规则提取算法

    基于粗集的决策树规则提取算法:摘要:决策树是数据挖掘任务中分类的常用方法。在构造决策树的过程中,分离属性的选择标准直接影响到分类的效果,
    发表于 10-10 15:13 12次下载

    改进决策树算法的应用研究

    该方法利用决策树算法构造决策树,通过对分类结果中主客观属性进行标记逻辑运算,最终得到较客观的决策信息,并
    发表于 02-07 11:38 27次下载
    改进<b class='flag-5'>决策树</b>算法的应用研究

    决策树的介绍

    关于决策树的介绍,是些很基础的介绍,不过是英文介绍。
    发表于 09-18 14:55 0次下载

    决策树构建设计并用Graphviz实现决策树的可视化

    种涉及到的算法进行总结附上自己相关的实现代码。所有算法代码以及用于相应模型的训练的数据都会放到GitHub上。 本文中我将步步通过MLiA的隐形眼镜处方数集构建
    发表于 11-15 13:10 1.5w次阅读
    <b class='flag-5'>决策树</b>的<b class='flag-5'>构建</b>设计并用Graphviz实现<b class='flag-5'>决策树</b>的可视化

    决策树的原理和决策树构建的准备工作,机器学习决策树的原理

    希望通过所给的训练数据学习贷款申请的决策树,用于对未来的贷款申请进行分类,即当新的客户提出贷款申请时,根据申请人的特征利用决策树决定是否
    的头像 发表于 10-08 14:26 6129次阅读

    决策树的构成要素及算法

    决策树种解决分类问题的算法,决策树算法采用树形结构,使用层层推理来实现最终的分类。
    发表于 08-27 09:52 4431次阅读

    决策树的基本概念/学习步骤/算法/优缺点

    本文将介绍决策树的基本概念、决策树学习的3步骤、3种典型的决策树算法、决策树的10优缺点。
    发表于 01-27 10:03 2724次阅读
    <b class='flag-5'>决策树</b>的基本概念/学习步骤/算法/优缺点

    什么是决策树模型,决策树模型的绘制方法

    决策树种解决分类问题的算法,本文将介绍什么是决策树模型,常见的用途,以及如何使用“亿图图示”软件绘制决策树模型。
    发表于 02-18 10:12 1.3w次阅读
    什么是<b class='flag-5'>决策树</b>模型,<b class='flag-5'>决策树</b>模型的绘制方法

    决策树的结构/优缺点/生成

    决策树(DecisionTree)是机器学习中种常见的算法,的思想非常朴素,就像我们平时利用选择做决策的过程。决策树
    发表于 03-04 10:11 8402次阅读

    基于遗传优化决策树的建筑能耗预测模型

    基于遗传优化决策树的建筑能耗预测模型
    发表于 06-27 16:19 6次下载

    大数据—决策树

    认为是if-then的集合,也可以认为是定义在特征空间与类空间上的条件概率分布。 决策树通常有三步骤:特征选择、决策树的生成、决策树的修剪。 用
    的头像 发表于 10-20 10:01 1283次阅读