决策树,是一种传统机器学习算法,也是机器学习的入门算法之一。在它的基础上,衍生了随机森林、GBDT、XGBOOST等在CTR领域效果极佳的算法,因此,对它的学习可视为通向高级算法的必经之路,同时,它具有极强的可解释性,可应对回归与分类问题,也视为商业应用展示的不二之选。对学习算法的入门者来说,了解决策树很有必要,为此,飞马网于3月27日晚,邀请到毕业于美国密苏里大学机器视觉实验室的黄楷老师进行线上直播,黄老师向大家分享了关于决策树的相关理论与实践应用。

以下是本次分享的主要内容:

一.简介

1.在看简介之前,我们先讨论几个基础问题:

机器学习包括有监督学习和无监督学习。有监督学习是明确地表明每个样本的类别或数值,在有监督学习之下,又分为分类和回归问题,分类问题表示预测每个样本的类别,而回归问题表示预测每个样本的具体数值。无监督学习并没有给出样本的类别或数值,它会通过一系列的算法进行聚类。

今天我们要学习的决策树属于有监督学习,它可以处理分类和回归两个问题。

2.决策树简介:

上面这张图片就是决策树的简介,大家可以先简单了解一下,后面会有深入的探索。

二.决策树的结构

我们可以看到上图左是一个非常基本的树形结构,学习数据结构的人对此一定很熟悉。我们重点看头部的根节点,下面的叶子节点代表分类后的结果,下面的分支代表数据的判定条件,例如第一层是大于0.99、大于1.20、大于3.20等。

三. 决策树使用的阶段

1.在我们使用决策树的时候,分为两个阶段:训练阶段和分类阶段。

训练阶段我们会通过已有的数据训练一个模型,分类阶段我们会通过模型进行数据的预测,通常我们会将数据随机分为十个部分,将八个部分进行训练,取两个进行测试,测试的数据不会出现在我们的训练数据中,我们最终的结果也是以测试的数据为准,最后通过一个交叉验证,得到准确率。

2.例子:

下面我们通过一个国外信用卡的例子来进行学习。

第一列表示数据的ID,第二列表示是否有退税,第三列表示婚姻状态(单身、离异、已婚),第四列表示纳税收入,第五列就是我们要预测的。

严重的话,可理解为这个人是否有过信用卡诈骗记录,不严重的话,可理解为是否信用卡有逾期等等。

我们可以称这里的数据有十个样本、三个属性,“categorical”表示数据是离散的,“continuous”表示数据是连续的,“class”表示我们要预测的类别。

通过一系列的感性认识,同学甲可能会构建出上图右的决策树,黄色的字指判定的是哪一列,箭头上的值指的是判别的值,蓝色的字指预测的结果。

对于同学甲这个模型,我们来看一看他是怎么判别的:

这时候同学乙可能会觉得不大满意,他认为婚姻可能是最重要的,就把婚姻放在决策树的第一位:

以上的这个例子是对决策树的感性理解,通过对每一步进行判别,来得到最终的目的。

四.如何理性地建立决策树

下面我们来进行理性的思考,到底如何去建立决策树?

1.建立决策树的基本步骤:

对于树的截止问题,从上图中我们得知,它有两个结束的条件,一是所有的叶子节点属于同一类别,二是所有的备选属性已经选完。当达不到结束条件时,我们就会选择一个最佳的属性来进行构建。

2.例子:

由于之前的最优节点都是想出来的,因此就会遇到另外的问题,“如何去选择最优节点?”和“选择节点时遇到连续性数据时,如何处理?”

3.如何去选择最优节点:

接下来,我们攻克一下这些问题。首先引入一个概念—信息熵。它是一个物理概念,主要描述信息的混乱程度,熵越大,信息越混乱,它的公式如下图所示。

下面是信息熵的一些特性:

在构建决策树时,我们会选择信息熵的一个差值来进行构建,我们来具体看一下例子:

在上图的例子中,我们有14个样本,5个是“No”,9个是“Yes”,属性有天气、温度、湿度、是否刮风。通过这四个维度,我们决定要不要去打网球。

选择第一个节点的时候,我们有四个备选方案:

到底如何选取最优属性呢?我们可以先计算一下原始的信息熵,在原始数据里面有14个样本,我们套进公式得出,原始的信息熵是0.94。

对于第一个备选项天气,我们可以分为三个值(晴天、多云、下雨):

得到天气各自熵的值之后,我们再通过各自熵的值乘以它发生的概率。按照天气属性我们得出熵的值是0.693:

同理,我们可以依次地计算温度、湿度、刮风的信息增益:

上图的值是说我们之前父节点的信息增益,5次不打球、9次打球的值减去按条件得出的信息增益,我们会发现,其实对于天气而言,它的信息增益是最大的,我们就会选择天气作为最佳的分裂节点。

其次,湿度的计算方式,就是我们之前讲的得到它的一个信息增益率,然后去挑选哪个是它的最优节点:

经过上面这些比较简单的构建方法,我们就能得到最终的决策树:

五.建立决策树后的思考

在构建完这棵决策树之后,事情并没有结束,大家可以思考一下,在建模型的时候,我们总是希望它的准确率越高越好,但这些是不是我们要的一个结果?

1.在机器学习中,有一个词叫做“过拟合”。它表示我们的模型在训练数据时表现地很棒,但在面临外部数据的时候,它又显得不堪一击,我们一起来看下图:

图左是训练数据的一个分布,理想状态下图右是我们要得到的一个模型,但机器却不这样认为,机器觉得画个猫更适合,新来的数据通过这只猫会划分什么结果,我们不知道,这叫做Overfitting,就是过拟合。

2.决策树在训练集当中,的确有非常好的分类能力,但它对未知的测试数据而言,不是特别适应,产生过拟合现象,这时我们就需要剪枝。

决策树分为预剪枝和后剪枝。预剪枝就是通过人为的知识,确定节点样本数目以及树的高度和深度等,操作起来非常方便。但在实际应用中,我们会选择后剪枝。

决策树的剪枝通常会做以下这几个点:

我们比较常用的是悲观错误剪枝和代价复杂度剪枝。悲观错误剪枝,假设说决策树的精度在剪枝的前后并无变化,则进行剪枝,精度不等于错误度,如果说决策树剪枝后的误差小于剪枝前精度的上限,效果性是一致的,就进行剪枝。我们认为数越大越容易过拟合,代价复杂度剪枝融合了错误率和数的大小,形成新的值平衡两个因数,然后选择比较大的,剪枝处理掉。

六.决策树+

1.决策树差异:

构建一棵树的步骤我们已经清晰,上面所讲的方法比较传统,我们称之为ID3,除此之外还有其它的一些方法,我们来比较一下:

在ID3中,我们使用的是信息增益来进行判断,信息增益是父节点的熵减去子节点的熵的一个最大值。一个ID对应唯一的一个类,这样的话,它的信息增益值是最大的,它优先选择ID作为它分裂的节点,所以,我们的树只有两层,一层是判断ID,,一层是判定分类,并没有什么意义,人们就会开发出新算法来解决这些问题。

第一个新算法是C4.5,它不再使用信息增益的差值,而是使用信息增益率,信息增益率是子节点的熵除以父节点的熵,就可以很好地避免ID的问题。同时C4.5也可以处理连续性数据和缺失性数据,达到三赢的效果,其次C4.5可以解决回归问题,通过估算某一个具体的值。对于大数据而言,计算熵会涉及取对数的问题,速度并不是特别好。

人们又开发了一个新的算法,叫做CART,它使用基尼系数去代表信息熵,它不仅可以很好地去表示信息的存进度,而且抛弃了用对数计算,速度快、更靠谱。二叉树的处理避免了树的碎片化。

2.例子:

下面我们来看例子,加深一下理解。

这个数据集叫做Iris数据集,在入门学习阶段是一个非常常用的分类实验数据集,中文名叫做鸢尾花卉数据集,属于多重分类,包括150个样本,分为3类,每一列的花50个数据,每个数据包含4个属性,去预测鸢尾花属于哪一种。

下图是具体演示过程:

下面这张图就是最后决策树的一个值,我们简单看一下:

在我们实际应用中,比较常用的其实是随机森林,它速度快、不易过拟合。之后决策树还发展出GBDT梯度下降树,融合了“森林”的思想,增强错误样本的权重,它可以做特征处理。

在直播最后,黄楷老师还针对大家的提问进行了耐心讲解,我们一起来看一下:

1.自己动手实现这个计算过程,还是自己调用内建函数?

黄老师:我建议初学者自己先动手写一下整个计算过程,调包的话,工作中可以使用,但并不适合加深学习印象。

2.决策树要大量数学公式吗?

黄老师:决策树的数学公式主要体现在节点计算,包括信息增益怎么计算和剪枝理论,公式不大多,刚开始做的时候,可以先抛弃剪枝部分,只计算它的分裂节点、信息熵,这样的话,数学公式就不是特别多。

3.决策树的应用场景?

黄老师:其实在工作当中,我们已经很少单纯地只使用决策树,通常会使用随机森林和其它的一些算法。在数据展现方面,决策树会给人非常直观的理解,有着独一无二的优势。

决策树在机器学习的理论学习与实践相关推荐

  1. 机器学习决策树_机器学习与数据科学决策树指南

    还在为如何抉择而感到纠结吗?快采用决策树(Decision Tree)算法帮你做出决定吧.决策树是一类非常强大的机器学习模型,具有高度可解释的同时,在许多任务中也有很高的精度.决策树在机器学习模型领域 ...

  2. 【Spark】实验6 Spark机器学习库MLlib编程实践

    Spark机器学习库MLlib编程实践 一.实验目的 通过实验掌握基本的MLLib编程方法: 掌握用MLLib解决一些常见的数据分析问题,包括数据导入.成分分析和分类和预测等. 二.实验平台 新工科智 ...

  3. 机器学习流程,以及实践应用

    编辑导语: 机器学习是一种数据分析技术,让计算机执行人和动物与生俱来的活动:从经验中学习,也被称为预测分析:本文作者分享了关于机器学习的流程以及实践应用,我们一起来看一下. 我所理解的机器学习是一种能 ...

  4. 机器学习算法与Python实践之(六)二分k均值聚类

    机器学习算法与Python实践这个系列主要是参考<机器学习实战>这本书.因为自己想学习Python,然后也想对一些机器学习算法加深下了解,所以就想通过Python来实现几个比较常用的机器学 ...

  5. 机器学习算法与Python实践之(五)k均值聚类(k-means)

    机器学习算法与Python实践这个系列主要是参考<机器学习实战>这本书.因为自己想学习Python,然后也想对一些机器学习算法加深下了解,所以就想通过Python来实现几个比较常用的机器学 ...

  6. 机器学习算法与Python实践之(三)支持向量机(SVM)进阶

    机器学习算法与Python实践这个系列主要是参考<机器学习实战>这本书.因为自己想学习Python,然后也想对一些机器学习算法加深下了解,所以就想通过Python来实现几个比较常用的机器学 ...

  7. 机器学习算法与Python实践之(二)支持向量机(SVM)初

    机器学习算法与Python实践这个系列主要是参考<机器学习实战>这本书.因为自己想学习Python,然后也想对一些机器学习算法加深下了解,所以就想通过Python来实现几个比较常用的机器学 ...

  8. 机器学习算法与Python实践之(二)支持向量机

    http://blog.csdn.net/zouxy09/article/details/17291543 机器学习算法与Python实践这个系列主要是参考<机器学习实战>这本书.因为自己 ...

  9. 机器学习算法与Python实践之(四)支持向量机(SVM)实现

    机器学习算法与Python实践之(四)支持向量机(SVM)实现 zouxy09@qq.com http://blog.csdn.net/zouxy09 机器学习算法与Python实践这个系列主要是参考 ...

最新文章

  1. 酸爽! Intellij IDEA 神器居然还藏着这些实用小技巧 !
  2. 让你的JS代码更具可读性
  3. 社交平台中的会员等级制度建立需要注意哪些问题
  4. freebsd原理与设计精要(1)-freebsd与unix简介
  5. 这些全国各地甜点,你都吃过了吗?
  6. tar命令核心应用案列及多重参数和find组合应用
  7. c++中的文件读写的操作
  8. 兼容IE与firefox的css 线性渐变(linear-gradient)
  9. CCF201509-2 日期计算(100分)
  10. 上架服务器必须做的准备工作
  11. 研究理解lanproxy实现内网穿透
  12. 丑小鸭变白天鹅 数据中心进化三部曲
  13. iOS 点击图片放大效果
  14. 删除卸载企业微信后的残留文件
  15. java kdj macd_很好用的KDJ与MACD结合指标
  16. IBM PureApplication System如何使用DNS将工作负载部署到数据中心的网络上
  17. 电池供电应用中的电源设计:干电池特性了解、LDO与DC-DC选型设计、电流检测方案要点
  18. 解决页面favicon.ico文件不存在提示404问题
  19. 自制51单片机烧不进代码各种原因
  20. 如何才能使其输入/输出的参数个数不限

热门文章

  1. 浏览器输入网址后发生了什么?
  2. ajax 报错 Content-Type is not allowed by Access-Control-Allow-Headers in preflight respon
  3. java计算机毕业设计疫情期间高校师生外出请假管理系统录屏源代码+系统+数据库+lw文档
  4. 国产框架MindSpore联合山水自然保护中心,寻找、保护「中华水塔」中的宝藏生命
  5. Linux 重新加载 nginx 配置命令
  6. 一款Python实用神器,5 行 Python 代码 实现一键批量扣图
  7. STM32-USB学习系列(一) :USB与USB库的介绍
  8. 【UVM基础】uvm_agent 中的 is_active 变量释义
  9. 2022年为什么降薪也要跳槽?机会比涨薪很重要?
  10. 海森堡bug_海森堡因超速而停下来警察说,你知道你要走多快,海森堡说