当前位置:   article > 正文

机器学习(三) --- DT(Decision Tree)_dt机器学习图片

dt机器学习图片

Decision Tree

本文并不是给零基础的人看的哈,看之前需要了解一下啥是决策树

Introduction

决策树是一种根据给定数据集产生一系列规则组成一棵树的算法。

一般来说,数据集中样本的特征包括两类:一类是数值属性,另一类是分类属性。

在一棵决策树中:

  • 内部结点表示属性
  • 边表示一种测试
  • 叶子结点表示某一类

建立一棵决策树一般采用自上而下的方式

决策树有两个主要问题需要解决,第一是如何选择最优结点进行划分(局部最优),第二是剪枝(全局最优)

Constructing Decision Trees

决策树建立过程中采用的是贪心的策略,每次选择局部最优特征来对数据集进行划分。那什么时候划分操作停止呢?第一是给定结点的所有样本都属于同一类别,第二是所有特征都已经选择完毕了(投票原则),第三是所有样本都选择完了。

介绍几个概念,熵(entropy)、信息增益(information gain)和信息增益比(information gain ratio)。

熵(entropy)用来衡量某个集合(序列)的纯度(purity/homogeneity),简单地说,某个集合里面如果全是同种元素,则熵为0,如果很多种元素均匀分布,则熵最大,即越纯越小,越混乱越大;决策树算法中,需要计算每个结点的熵。

The entropy for a completely pure set is 0 and is 1 for a set with equal for both the classes.

举个计算熵(entropy)的例子,公式需要记得

在这里插入图片描述

信息增益(information gain)用来确定某次划分过程的好坏,表示根据此特征划分之后,结点纯度提高了多少,即熵减小了多少;每次选择都应该选择信息增益最大的特征进行划分。

Information gain: Expected reduction in entropy caused by partitioning the training data according to a given attribute

关于信息增益的计算公式可以参考西瓜树或者李航的统计学习方法或者这个链接:https://blog.csdn.net/qq_41661809/article/details/90321622

注意只需要理解公式就可以跳过来接着看啦,

example

来看个构建决策树的例子吧,构建步骤如下。

  1. 计算根结点的熵
  2. 计算根据不同特征划分时的信息增益(公式内包含熵)
  3. 选择信息增益最大的属性进行划分
  4. 重复上述过程(注意这时候就不是计算根结点的熵了哦,而是新的父结点的熵)

下面例子中label是Play ball。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

这个例子里面最后形成的树就是这个样子啦

在这里插入图片描述

从上面这个例子可以看出来决策树使用的最简单的IF-THEN规则,很容易理解。

好的,到目前为止,我们已经知道了如何从零开始构造一颗决策树了;使用信息增益来选择划分结点的特征,这就是著名的ID3算法啦,注意ID3是Quinlan于1986年提出来的呢(这个我看到过争议,不纠结它)。比较常见的决策树算法除了ID3之外还有C4.5和CART,那么它们的区别是啥呢?或者说为啥要有呢?

核心的问题是选择局部最优特征作为划分属性的衡量标准不一样,比如也就是表的Splitting criteria列。

在这里插入图片描述

从上表可以看出ID3使用信息增益,C4.5使用信息增益率,CART使用基尼指数。C4.5是用来改进ID3的,因为用信息增益选择属性时偏向选择取值多的属性(吐槽一下,我看到的博客和书籍都只说了这句话,或者举了极端情况的例子,没讨论不是极端情况,也就是没说明白why,后面在知乎看到有大佬解释了,参见链接)为什么选择信息增益比作为衡量指标而不是信息增益:https://www.zhihu.com/question/22928442/answer/440836807

OK,前面讨论了为啥ID3进化到C4.5的原因,感觉已经挺合理了吧,那为啥还有CART呢?参考链接:cart算法为什么选用gini指数?https://www.zhihu.com/question/36659925

我们知道,在ID3算法中我们使用了信息增益来选择特征,信息增益大的优先选择。在C4.5算法中,采用了信息增益比来选择特征,以减少信息增益容易选择特征值多的特征的问题。但是无论是ID3还是C4.5,都是基于信息论的熵模型的,这里面会涉及大量的对数运算。能不能简化模型同时也不至于完全丢失熵模型的优点呢?有!CART分类树算法使用基尼系数来代替信息增益比,基尼系数代表了模型的不纯度,基尼系数越小,则不纯度越低,特征越好。这和信息增益(比)是相反的。

(要不碰到问题先用知乎?哈哈哈)

测试的时候输入的样本就是从上往下根据IF-THEN的规则到达叶子结点,分类成功。

另外注意一下,CART算法生成的是一颗二叉树

Pruning

任何学习算法都会碰到欠拟合(underfitting)和过拟合(overfitting)的问题,决策树最经常碰到的问题就是过拟合,因为决策树很容易就变得很深。处理过拟合问题常用剪枝的方式(预剪枝和后剪枝两种)

  • 预剪枝:当结点的衡量指标(可以是熵、基本指数或者信息增益)低于某个阈值就不需要再进行分裂了。
  • 后剪枝:从一个完全形成的决策树由下往上开始剪枝,去除一些没必要的结点。

预剪枝一般来说比后剪枝会快一些,因为预剪枝不需要等决策树完全形成。但是后剪枝的效果可能比预剪枝好一些,因为后剪枝考虑了结点之间的“交互作用”;预剪枝通过单独评估每个属性来抑制增长,因此可能会忽略由于多个属性的交互作用而过早停止;后剪枝避免了这个问题。

最后贴一下优缺点:

在这里插入图片描述

注意:决策树是训练的时候需要很长时间,测试的时候很快。KNN是训练的时候花费很少的时间,但是测试的时候花费较长时间。

决策树、随机森林和Gradient Boosting

决策树算法是一种通过一系列的IF-THEN规则形成的具有树形结构的流程,人类可以很明白的理解算法的流程,并且提供可视化的指导做决策的步骤。但是它也有一些问题,比如overfitting、Bias和Variance等。Overfitting的发生来源于很多原因,可能是noise的存在、丢失一些很典型的样本(representative instances)。

随机森林和Gradient Boosting分别属于集成学习中的bagging和boosting思想。

随机森林是单个决策树的聚合。

当我们进行分类任务时,新的输入样本进入,就让森林中的每一棵决策树分别进行判断和分类,每个决策树会得到一个自己的分类结果,决策树的分类结果中哪一个分类最多,那么随机森林就会把这个结果当做最终的结果。来自(https://easyai.tech/ai-definition/random-forest/

单个的决策树是一个比较弱的预测器,但是相对来说建立的比较快;随机森林是一个更加鲁棒性(robust)的模型,有效防止过拟合,但是随机森林中的树越多,训练过程就越慢。特征越多,训练过程就越慢。

另一个区别是决策树很容易理解,只要沿着一条路径往下走就好了,随机森林的推断过程相对来说复杂一些。

Gradient Boosting与随机森林一样,都是很多决策树的组合。Gradient Boosting与随机森林的主要区别有两个:

  1. 建立过程不一样。随机森林是每棵树的建立都是相互独立的,Gradient Boosting是一次构建一棵树,采用串联的方式,后续的每棵树是改进前面的弱学习器的缺点。
  2. 组合结果不一样,随机森林是多数投票或者平均值机制,Gradient Boosting只会沿途组合结果(combine results along the way)

Gradient Boosting不适合有很多噪声的数据,会很容易overfitting。

随机森林和Gradient Boosting的应用领域也有些不一样:

  • 随机森林在多目标检测和生物信息学方向应用比较多,这些领域往往有很多统计学的噪声。
  • Gradient Boosting在数据不平衡的时候往往表现良好。

Reference:

https://blog.csdn.net/qq_41661809/article/details/90321622

https://www.zhihu.com/question/22928442/answer/440836807

https://www.zhihu.com/question/36659925

https://blog.csdn.net/MusicDancing/article/details/119707982

李航统计学习方法

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号