Decision Tree

原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/12713169.html

决策树

决策树模型是一种描述对实例进行分类的树形结构。决策树由节点有向边组成。结点有两种类型:内部节点叶节点。内部节点表示一个特征或属性,叶节点表示一个类。

  • 决策树是最经典的机器学习模型之一
  • 是一个类似于流程图的树结构
  • 一种分类算法,它通过对训练集的学习,挖掘出有用的规则,用于对新数据进行预测
  • 是一种监督学习算法

决策树的工作原理

在做决策树的时候,会经历两个阶段:构造和剪枝。

构造

构造的过程就是选择什么属性作为节点的过程,那么在构造过程中,会存在三种节点:

  • 根节点:就是树的最顶端,最开始的那个节点
  • 内部节点:就是树中间的那些节点
  • 叶节点:就是树最底部的节点,也就是决策结果。

节点之间存在父子关系。比如根节点会有子节点,子节点会有子子节点,但是到了叶节点就停止了,叶节点不存在子节点。那么在构造过程中,需要解决三个重要的问题:

  • 选择哪个属性作为根节点;
  • 选择哪些属性作为子节点;
  • 什么时候停止并得到目标状态,即叶节点。

剪枝

剪枝就是给决策树瘦身,这一步想实现的目标就是,不需要太多的判断,同样可以得到不错的结果。之所以这么做,是为了防止“过拟合”(Overfitting)现象的发生。

造成过拟合的原因之一就是因为训练集中样本量较小。如果决策树选择的属性过多,构造出来的决策树一定能够“完美”地把训练集中的样本分类,但是这样就会把训练集中一些数据的特点当成所有数据的特点,但这个特点不一定是全部数据的特点,这就使得这个决策树在真实的数据分类中出现错误,也就是模型的“泛化能力”差。

泛化能力指的分类器是通过训练集抽象出来的分类能力,你也可以理解是举一反三的能力。如果我们太依赖于训练集的数据,那么得到的决策树容错率就会比较低,泛化能力差。因为训练集只是全部数据的抽样,并不能体现全部数据的特点。

一般来说,剪枝可以分为“预剪枝”(Pre-Pruning)和“后剪枝”(Post-Pruning)。

  • 预剪枝是在决策树构造时就进行剪枝。方法是在构造的过程中对节点进行评估,如果对某个节点进行划分,在验证集中不能带来准确性的提升,那么对这个节点进行划分就没有意义,这时就会把当前节点作为叶节点,不对其进行划分。
  • 后剪枝就是在生成决策树之后再进行剪枝,通常会从决策树的叶节点开始,逐层向上对每个节点进行评估。如果剪掉这个节点子树,与保留该节点子树在分类准确性上差别不大,或者剪掉该节点子树,能在验证集中带来准确性的提升,那么就可以把该节点子树进行剪枝。方法是:用这个节点子树的叶子节点来替代该节点,类标记为这个节点子树中最频繁的那个类。

属性选择

纯度

可以把决策树的构造过程理解成为寻找纯净划分的过程。数学上,可以用纯度来表示,纯度换一种方式来解释就是让目标变量的分歧最小。

信息熵(entropy)

信息熵表示了信息的不确定度。

在信息论中,随机离散事件出现的概率存在着不确定性。为了衡量这种信息的不确定性,信息学之父香农引入了信息熵的概念,并给出了计算信息熵的数学公式:

p(i|t) 代表了节点 t 为分类 i 的概率,其中 log2 为取以 2 为底的对数。这个公式作为一种度量,它能帮我们反映出来这个信息的不确定度。当不确定性越大时,它所包含的信息量也就越大,信息熵也就越高。信息熵越大,纯度越低。

ID3

ID3算法就是基于信息增益选择节点属性。

信息增益

信息增益指的就是划分可以带来纯度的提高,信息熵的下降。它的计算公式,是父亲节点的信息熵减去所有子节点的信息熵。在计算的过程中,我们会计算每个子节点的归一化信息熵,即按照每个子节点在父节点中出现的概率,来计算这些子节点的信息熵。所以信息增益的公式可以表示为:

公式中 D 是父亲节点,Di 是子节点,Gain(D,a) 中的 a 作为 D 节点的属性选择。一般而言,信息增益越大,则意味着使用属性 a 来进行划分所获得的“纯度提升”越大。

ID3的缺陷

ID3倾向于选择取值比较多的属性

有些属性可能对分类任务没有太大作用,但是它们会被选为最优属性。

C4.5

C4.5 在 ID3 的基础上,用信息增益率代替了信息增益,解决了噪声敏感的问题,并且可以对构造树进行剪枝、处理连续数值以及数值缺失等情况,但是由于 C4.5 需要对数据集进行多次扫描,算法效率相对较低。信息增益率 = 信息增益 / 属性熵。所以信息增益率的公式可以表示为:

IV 是属性 a 的固有值,a 的可能取值数目越多(V 越大),IV(a) 的值通常越大,信息增益率就会减小。显然信息增益率偏好可取值数目少的属性

CART

CART 分类树

CART 分类树与 C4.5 算法类似,只是属性选择的指标采用的是基尼系数。

基尼系数本身反应了样本的不确定度。当基尼系数越小的时候,说明样本之间的差异性小,不确定程度低。分类的过程本身是一个不确定度降低的过程,即纯度的提升过程。所以 CART 算法在构造分类树的时候,会选择基尼系数最小的属性作为属性的划分。基尼系数越小,数据样本纯度越高

假设 t 为节点,那么该节点的 GINI 系数的计算公式为:

这里 p(Ck|t) 表示节点 t 属于类别 Ck 的概率,节点 t 的基尼系数为 1 减去各类别 Ck 概率平方和。

CART 回归树

CART 回归树划分数据集的过程和分类树的过程是一样的,只是回归树得到的预测结果是连续值,而且评判“不纯度”的指标不同。在 CART 分类树中采用的是基尼系数作为标准,那么在 CART 回归树中,实际上要根据样本的混乱程度,也就是样本的离散程度来评价“不纯度”。

样本的离散程度具体的计算方式是,先计算所有样本的均值,然后计算每个样本值到均值的差值。假设 x 为样本的个体,均值为 u。为了统计样本的离散程度,可以取差值的绝对值,或者方差。

其中差值的绝对值为样本值减去样本均值的绝对值:

方差为每个样本值减去样本均值的平方和除以样本个数:

所以这两种节点划分的标准,分别对应着两种目标函数最优化的标准,即用最小绝对偏差(LAD),或者使用最小二乘偏差(LSD)。这两种方式都可以找到节点划分的方法,通常使用最小二乘偏差的情况更常见一些。

Decision Tree 算法优缺点

优点

  • 决策树算法可以自学习,在学习的过程中,不需要使用者了解过多背景知识,只需要对训练实例进行较好的标注,就能够进行学习。
  • 决策树算法可以很容易地将模型进行可视化,可以让非专业人士也看得明白。

缺点

  • 很容易出现过拟合

  

Summary

Reference

https://time.geekbang.org/column/article/78273

https://time.geekbang.org/column/article/78659

原文地址:https://www.cnblogs.com/agilestyle/p/12713169.html