决策树,是一种传统机器学习算法,也是机器学习的入门算法之一。在它的基础上,衍生了随机森林、GBDT、XGBOOST等在CTR领域效果极佳的算法,所以,对它的学习可视为通向高级算法的必经之路,同时,它具备极强的可解释性,可应对回归与分类问题,也视为商业应用展现的不二之选。对学习算法的入门者来讲,了解决策树颇有必要,为此,飞马网于3月27日晚,邀请到毕业于美国密苏里大学机器视觉实验室的黄楷老师进行线上直播,黄老师向你们分享了关于决策树的相关理论与实践应用。算法
如下是本次分享的主要内容:微信
一.简介数据结构
1.在看简介以前,咱们先讨论几个基础问题:机器学习
机器学习包括有监督学习和无监督学习。有监督学习是明确地代表每一个样本的类别或数值,在有监督学习之下,又分为分类和回归问题,分类问题表示预测每一个样本的类别,而回归问题表示预测每一个样本的具体数值。无监督学习并无给出样本的类别或数值,它会经过一系列的算法进行聚类。函数
今天咱们要学习的决策树属于有监督学习,它能够处理分类和回归两个问题。学习
2.决策树简介:测试
上面这张图片就是决策树的简介,你们能够先简单了解一下,后面会有深刻的探索。大数据
二.决策树的结构图片
咱们能够看到上图左是一个很是基本的树形结构,学习数据结构的人对此必定很熟悉。咱们重点看头部的根节点,下面的叶子节点表明分类后的结果,下面的分支表明数据的断定条件,例如第一层是大于0.9九、大于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.决策树的应用场景?
黄老师:其实在工做当中,咱们已经不多单纯地只使用决策树,一般会使用随机森林和其它的一些算法。在数据展示方面,决策树会给人很是直观的理解,有着独一无二的优点。
以上六部分就是本次线上直播的主要内容,想了解更多更详细内容的小伙伴们,能够关注服务号:FMI飞马网,点击菜单栏飞马直播,便可进行学习。