• 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

  • 相关阅读:
    hibernate_0100_HelloWorld
    MYSQL子查询的五种形式
    JSF是什么?它与Struts是什么关系?
    nop指令的作用
    htmlparser实现从网页上抓取数据(收集)
    The Struts dispatcher cannot be found. This is usually caused by using Struts tags without the associated filter. Struts tags are only usable when the
    FCKeditor 在JSP上的完全安装
    Java遍历文件夹的2种方法
    充电电池和充电时间说明
    吃知了有什么好处
  • 原文地址:https://www.cnblogs.com/agilestyle/p/12713169.html
Copyright © 2020-2023  润新知