精华内容
下载资源
问答
  • 决策树剪枝

    2019-07-26 16:18:52
    知识交点:决策树剪枝 为什么要剪枝 一颗完全生长的决策树难免会遇到过拟合的情况。因此,我们需要对决策树进行剪枝,提升模型的泛化能力。 决策树的剪枝操作通常有两种方法,预剪枝与后剪枝。 预剪枝 预剪枝的核心...

    更多深度学习资讯都在公众号:深度学习视觉

    为什么要剪枝
    一颗完全生长的决策树难免会遇到过拟合的情况。因此,我们需要对决策树进行剪枝,提升模型的泛化能力。

    决策树的剪枝操作通常有两种方法,预剪枝与后剪枝。

    预剪枝
    预剪枝的核心思想是在树中节点进行扩展之前,先计算当前的划分是否能带来模型泛化能力的提升,如果不能,则不再继续生长子树。此时可能存在不同类别的样本同时存于节点中,可以按照多数投票的原则判断该节点所属类别。预剪枝对于何时停止决策树的生长有以下几种方法:
    (1) 当树达到一定深度的时候,停止树的生长;
    (2) 当到达当前节点的样本数量小于某个阈值的时候,停止树的生长;
    (3) 计算每次分裂对测试集的准确度的提升,当小于某个阈值的时候,不再继续生长。
    预剪枝具有思想直接、算法简单、效率高等特点,适合解决大规模数据的问题。但是,对于上述阈值,需要经验判断。此外,预剪枝有欠拟合的风险,因为,虽然当前的划分会导致测试集准确率降低或提升不高,但在之后的划分中,准确率可能会有显著提升。

    后剪枝
    后剪枝的核心思想是让算法生成一颗完全生长的决策树,然后自底向上计算是否剪枝。剪枝过程将子树删除,有一个叶子节点替代,该节点的类别同样用投票决定。同样,后剪枝也可以通过在测试集上的准确率来判断,如果剪枝过后准确率有所提升,则进行剪枝。相比于预剪枝,后剪枝的泛化能力更强,但是计算开销会更大。

    后剪枝方法: 错误率降低剪枝(Reduced Error Pruning,REP)、悲观剪枝(Pessimistic Error Pruning,PEP)、代价复杂度剪枝(Cost Complexity Pruning,CCP)、最小误差剪枝(Minimum Error Pruning,MEP)、CVP(Critical Value Pruning)、OPP(Optimal Pruning)等。

    CCP代价复杂度剪枝:
    (1) 从完整决策树T0T_0开始,生成一个子树序列{T0,T1,T2,...,Tn}\{T_0,T_1,T_2,...,T_n\},其中Ti+1T_{i+1}TiT_i生成。TnT_n为树的根节点(剪到最后只剩根节点)。
    (2) 在子树序列中,根据真实误差选择最佳的决策树。
    详细剪枝步骤:
    步骤(1)从T0{T_0}开始,剪枝TiT_i中关于训练数据集合误差增加最小的分支以得到Ti+1T_{i+1}。具体的,当一棵树TT在节点tt处剪枝时,它的误差增加可以用R(t)R(Tt)R(t)-R(T_t)表示,其中R(t)R(t)表示进行剪枝之后的该节点误差,R(Tt)R(T_t)表示未进行剪枝时子树TtT_t的误差。考虑到树的复杂性因素,我们用L(Tt)|L(T_t)|表示子树TtT_t的叶子节点个数,则树在节点tt处剪枝后的误差增加率为α=R(t)R(Tt)L(Tt)1\alpha = \frac{R(t)-R(T_t)} {|L(T_t)|-1} 在得到TtT_t后,我们每一步选择α\alpha最小的节点进行剪枝。

    步骤(2),我们需要从子树序列中选出真实误差最小的决策树。CCP给出了两种常用的方法:一种是基于独立剪枝数据集,该方法与REP类似,但是由于只能从子树序列{T0,T1,T2,...,Tn}\{T_0,T_1,T_2,...,T_n\}中选择最佳决策树,而非像REP能在所有可能的子树中寻求最优解,因此模型效果上会有一定的不足。另一只方案是采取K折交叉验证来选取最优决策树。

    总结
    代价复杂度剪枝使用交叉验证策略的时候,不需要用到测试数据集,精度与REP差不多,但形成的树复杂度小。但是,由于生成子树序列的时间复杂度与原始决策树的非叶子节点个数呈现二次关系,导致算法相比REP、PEP、MEP等线性复杂度的后剪枝方法运行时间更大。

    剪枝过程在决策树模型中占据着极其重要的地位,有很多研究表明,剪枝比树的生成更为关键。对于不同划分标准生成的过拟合决策树,在经过剪枝之后都能保留最重要的属性划分,因此最终的性能差距并不大。

    展开全文
  • 主要介绍了决策树剪枝算法的python实现方法,结合实例形式较为详细的分析了决策树剪枝算法的概念、原理并结合实例形式分析了Python相关实现技巧,需要的朋友可以参考下
  • 【ML笔记】决策树剪枝

    千次阅读 2017-08-04 17:48:38
    决策树剪枝

    前言

    无论是分类树还是回归树,剪枝过程很重要,剪枝处理不当或是没有剪枝操作,决策树模型都是失败的,通过剪枝,可以大大提高模型准确度,避免决策树的过拟合。

    C4.5剪枝

    决策树生成算法递归地生成决策树,直到不能继续下去为止,产生的树对于训练集会有很好的模型准确率,但是对于未知的测试数据分类却没有那么准确,因此,对书的剪枝很重要。

    决策树剪枝的算法流程如下:

    输入:生成算法产生的整个树T,参数alpha

    输出:修剪后的子数T-alpha

    (1)计算每个节点的经验熵

    (2)递归地从树的叶节点向上回缩,设回缩前后的树分别为T-B和T-A,对应的损失函数分别为C-alpha(T-B)和C-alpha(T-A),如果C-alpha(T-B)<= C-alpha(T-A),进行剪枝,将父节点变为叶子节点

    (3)返回(2),直至不能剪枝为止,得到损失函数最小的子树T-alpha

    CART剪枝

    展开全文
  • 决策树剪枝算法

    2018-03-16 21:16:08
    决策树剪枝 决策树为了防止过拟合,会采用剪枝的方式,符合奥卡姆剃刀原理。决策树剪枝分为预剪枝(pre-pruning)和后剪枝(post-pruning)。 预剪枝 预剪枝是在决策树生成时限制树的生长,防止树过度生长而导致...

    决策树剪枝

    决策树为了防止过拟合,会采用剪枝的方式,符合奥卡姆剃刀原理。决策树剪枝分为预剪枝(pre-pruning)和后剪枝(post-pruning)。

    预剪枝

    预剪枝是在决策树生成时限制树的生长,防止树过度生长而导致过拟合。常用方法有:限制树的高度、限制树的叶子结点数、设置分裂时增益的阈值(低于阈值就不继续分裂)。

    后剪枝

    相比预剪枝,后剪枝使用更广泛。主要有:

    • REP (Reduce-Error Pruning): 降低错误率剪枝
    • PEP (Pessimistic-Error Pruning): 悲观剪枝
    • CCP (Cost-Complexity Pruning): 代价复杂度剪枝
    • EBP (Error-Based Pruning): 基于错误的剪枝
    展开全文
  • 一文读懂决策树剪枝

    2020-02-23 18:29:05
    今天看到决策树剪枝的部分,书、博客都参考了一些,发现书上有些省去的地方,而大部分博客写的又晦涩难懂,因此决定写一篇容易理解的关于决策树剪枝的文章。 本文主要依据周志华的《机器学习》和李航的《统计学习...

    今天看到决策树剪枝的部分,书、博客都参考了一些,发现书上有些省去的地方,而大部分博客写的又晦涩难懂,因此决定写一篇容易理解的关于决策树剪枝的文章。
    本文主要依据周志华的《机器学习》和李航的《统计学习方法》。

    一、为什么要进行决策树剪枝

    决策树生成算法递归地产生决策树,直到不能继续下去为止,这样产生的树往往对训练数据的分类很准确,但对未知的测试数据的分类却没有那么准确,即出现过拟合现象,过拟合的原因在于学习时过多地考虑如何提高对训练数据的正确分类,从而构建出过于复杂的决策树,解决这个问题的办法是考虑决策树的复杂度,对已生成的决策树进行简化。
    在决策树学习中将已生成的树进行简化的过程称为剪枝(pruning).。具体地,剪枝从已生成的树上裁掉一 些子树或叶结点,并将其根结点或父结点作为新的叶结点,从而简化分类树模型。
    一句话概括:决策树的剪枝是为了提高模型的泛化能力,防止过拟合。

    二、《机器学习》中的决策树剪枝

    1.预剪枝预剪枝就是在构造决策树的过程中,先对每个结点在划分前进行估计,如果当前结点的划分不能带来决策树模型泛华性能的提升,则不对当前结点进行划分并且将当前结点标记为叶结点。
    简单来讲,预剪枝是在构建决策树的过程中进行的,我们直接看西瓜书上的例子,对于下表所示的数据:
    在这里插入图片描述
    我们采用信息增益准则来进行划分属性选择,则从表4.2 的训练集将会生成一棵如图4.5 所示的决策树。
    在这里插入图片描述
    对于表4.2中的训练集D,它的经验熵为:H(D) = 1
    各个特征对应的信息增益值为:
    g(D, 色泽) = 0.276, g(D, 根蒂) = 0.115, g(D, 敲声) = 0.174,
    g(D, 纹理) = 0.174, g(D, 脐部) = 0.276, g(D, 触感) = 0
    很明显色泽脐部的信息增益值最大,这两个特征选择哪一个都可以,这里选择脐部来对训练集进行划分,从而产生三个分支,如下图:
    在这里插入图片描述
    因为我们要预剪枝,所以要判断是否要保留脐部的这个划分,对划分前后的泛化性能进行估计。
    在划分之前,所有样例都集中在根结点。若不进行划分,依据多数表决,该结点将被标记为叶结点,其类别标记为训练样例数最多的类别,而表4.2中类别为’好瓜’和’坏瓜’的样例数一样。这里,我们将根节点标记为好瓜(当样例最多的类别不唯一时,可任选其中一项)。
    对于验证集的数据,只有{4,5,8}被正确分类,精度为43.9%. 而验证集在划分后的决策树上是:
    在这里插入图片描述
    很明显,验证集上只有9和13被分类错误,其余五个样例都分类正确。此时精度是5/7 = 71.4% > 43.9%。所以,我们用脐部进行划分。

    然后,决策树算法应该对结点②进行划分,基于信息增益准则将挑选出划分属性"色泽"。然而,在使用"色泽"划分后,编号为{5} 的验证集样本分类结果会由正确转为错误(见下图),使得验证集精度下降为57.1% < 71.4%。 于是,预剪枝策略将禁止结点②被划分。

    在这里插入图片描述
    对结点③,最优划分属性为"根蒂",划分后验证集精度仍为71. 4%. 这个划分不能提升验证集精度,于是,预剪枝策略禁止结点③被划分.

    对结点④,其所含训练样例己属于同一类,不再进行划分.

    于是,基于预剪枝策略从表4.2 数据所生成的决策树如下图所示,其验证集精度为71. 4%. 这是一棵仅有一层划分的决策树,亦称"决策树桩".
    在这里插入图片描述
    总结:预剪枝使得决策树的很多分支都没有"展开",这不仅降低了过拟合的风险,还显著减少了决策树的训练时间开销和测试时间开销。.但另一方面,有些分支的当前划分虽不能提升泛化性能、甚至可能导致泛化性能暂时下降,但在其基础上进行的后续划分却有可能导致性能显著提高;预剪枝基于"贪心"本质禁止这些分支展开, 给预剪枝决策树带来了欠拟合的风险。

    2.后剪枝:后剪枝是先从训练集生成一棵完整的决策树,然后自底向上地对非叶结点进行考察,若将该结点对应的子树替换为叶结点能带来决策树泛化性能提升,则将该子树替换为叶结点.

    我们还是根据例子来看,未剪枝的决策树:
    在这里插入图片描述
    我们带入验证集的数据,易知该决策树的验证集精度为42.9%.
    后剪枝首先考察图4.5 中的结点⑥.若将其领衔的分支剪除,则相当于
    把⑤替换为叶结点.替换后的叶结点包含编号为{7, 15} 的训练样本,于是,该叶结点的类别标记为"好瓜",此时决策树的验证集精度提高至57.1%. 于是,后剪枝策略决定剪枝,如图4.7 所示.
    在这里插入图片描述
    然后考察结点⑤,若将其领衔的子树替换为叶结点,则替换后的叶结点包含编号为{6, 7, 15} 的训练样例,叶结点类别标记为"好瓜". 此时决策树验证集精度仍为57.1%. 于是,可以不进行剪枝.
    对结点②,若将其领衔的子树替换为叶结点,则替换后的叶结点包含编号为{1, 2, 3, 14} 的训练样例,叶结点标记为"好瓜"此时决策树的验证集精度提高至71. 4%. 于是,后剪枝策略决定剪枝.
    对结点③和①,若将其领衔的子树替换为叶结点,则所得决策树的验证集精度分别为71. 4% 与42.9%, 均未得到提高.于是它们被保留.
    最终,基于后剪枝策略从表4.2 数据所生成的决策树如图4.7 所示,其验证集精度为71. 4%.

    总结:后剪枝决策树通常比预剪枝决策树保留了更多的分支. 一般情形下,后剪枝决策树的欠拟合风险很小,泛化性能往往优于预剪枝决策树.但后剪枝过程是在生成完全决策树之后进行的,并且要白底向上地对树中的所有非叶结点进行逐一考察,因此其训练时间开销比未剪枝决策树和预剪枝决策树都要大得多.

    三、《统计学习方法》中的决策树剪枝

    统计学习方法中的决策树剪枝通过极小化决策树整体的损失函数来实现。
    设树T的叶结点个数为|T|,t是树T的叶结点,该叶结点有Nt个样本点,其中k类的样本点有Ntk个,k = 1,2,…K,Ht(T)为叶结点t上的经验熵,α≥0为参数,则决策树学习的损失函数定义为:
    在这里插入图片描述
    其中经验熵为:
    在这里插入图片描述
    将损失函数右端第一项记作:
    在这里插入图片描述
    这时有:
    在这里插入图片描述
    C(T)表示模型对训练数据的预测误差,即模型与训练数据的拟合程度,|T|表示模型的复杂度,参数α≥0控制两者之间的影响。较大的α促使选择较简单的模型(树),较小的α促使选择较复杂的模型(树). α=0意味着只考虑模型与训练数据的拟合程度,不考虑模型的复杂度.

    是不是看到这感觉公式太复杂看不懂?没关系,听我解释一下你应该会明白一些。我们都知道熵代表随机变量的不确定性,熵越大不确定性越大。而损失函数的第一项是所有叶结点的熵:
    t=1TNtHt(T)\sum_{t=1}^{|T|} N_tH_t(T)
    什么意思呢?从信息论的角度讲,这个式子其实就是所有叶结点的不确定性之和,这个和越小(也就是损失函数值越小),被分类到叶结点的样例不确定性越低,模型也就越好。而第二项αTα|T|表示的是模型复杂度,因为决策树的叶结点个数是|T|,我们要综合考虑分类准确度和样本复杂度的影响。

    具体的决策树剪枝算法如下:
    输入:生成算法产生的整个树T,参数α;
    输出:修剪后的子树Tα
    (1)计算每个结点的经验熵.
    (2)递归地从树的叶结点向上回溯,如果:
    Cα(T)Cα(T)C_α(T_{剪枝后}) ≤ C_α(T_{剪枝前})
    则进行剪枝,即将父结点变为新的叶结点.
    (3)返回(2),直到不能继续为止,得到损失函数最小的子树Tα.

    总结:两本书从不同的角度给出了解释。但其实决策树剪枝的本质都是一样的,即提高泛化能力,防止过拟合,同时使生成的决策树模型变得简单。

    参考文献
    [1]: 周志华 《机器学习》
    [2]: 李航 《统计学习方法》

    展开全文
  • 文章目录CART算法1. CART生成算法①. CART回归树的生成②. CART分类树的生成2. CART剪枝算法 CART算法 CART假设决策树是二叉树,内部结点特征的取值为“是”和“否”。...(2)决策树剪枝:用验证数据集对已生成的树...
  • 决策树剪枝(cart剪枝)的原理介绍

    万次阅读 多人点赞 2018-01-17 15:05:07
    1.决策树剪枝决策树是一种分类器,通过ID3,C4.5和CART等算法可以通过训练数据构建一个决策树。但是,算法生成的决策树非常详细并且庞大,每个属性都被详细地加以考虑,决策树的树叶节点所覆盖的训练样本都是“纯”...
  • 决策树剪枝的思想

    2020-09-08 13:43:22
    1.决策树剪枝 决策树是一种分类器,通过ID3,C4.5和CART等算法可以通过训练数据构建一个决策树。但是,算法生成的决策树非常详细并且庞大,每个属性都被详细地加以考虑,决策树的树叶节点所覆盖的训练样本都是“纯”...
  • CART剪枝以及决策树剪枝中α相关问题CART剪枝过程问题1:$g(t)$的含义:问题2:为什么选择$g(t)$最小的$T_t$进行剪枝?问题3:剪枝过程中选取的$α$为什么一定是递增的?问题4:为什么CART剪枝过程中的子树序列$T_1,...
  • 本文实例讲述了决策树剪枝算法的python实现方法。分享给大家供大家参考,具体如下: 决策树是一种依托决策而建立起来的一种树。在机器学习中,决策树是一种预测模型,代表的是一种对象属性与对象值之间的一种映射...
  • 决策树剪枝通常有两种方法,预剪枝( Pre-Pruning )和后剪枝( Post-Pruning )。 预剪枝( Pre-Pruning ) 预剪枝 , 即在生成决策树的过程中提前停止树的增长。核心思想是在树中结点进行扩展之前,先计算当前的...
  • @CART决策树剪枝个人理解 本文是针对CART树的个人理解 在看统计学习方法关于CART树的剪枝是,感觉书上讲得很迷惑,因此基于其他博客以及书上内容得出自己的理解。 首先确定CART树的损失函数:C∂(T) = C(T)+∂|T|;...
  • 为在决策树剪枝中正确选择剪枝方法,基于理论分析和算例详细地比较了当前主要的4种剪枝方法的 计算复杂性、剪枝方式、误差估计和理论基础.与PEP相比,MEP产生的树精度较小且树较大;REP是最简单的 剪枝方法之一,但...
  • 决策树剪枝算法原理

    万次阅读 2017-05-31 22:22:52
    算法目的:决策树剪枝是为了简化决策树模型,避免过拟合。 同样层数的决策树,叶结点的个数越多就越复杂;同样的叶结点个数的决策树,层数越多越复杂。 剪枝前相比于剪枝后,叶结点个数和层数只能更多或者其中一...
  • 1.决策树剪枝 首先剪枝(pruning)的目的是为了避免决策树模型的过拟合。因为决策树算法在学习的过程中为了尽可能的正确的分类训练样本,不停地对结点进行划分,因此这会导致整棵树的分支过多,也就导致了过拟合。...
  • 剪枝问题决策树的应用_解决人工棋子问题
  • 决策树剪枝算法1、算法目的2、算法基本思路:3、决策树损失函数4、剪枝类型:4.1 预剪枝4.2 后剪枝4.3 两种剪枝策略对比 1、算法目的 决策树的剪枝是为了简化决策树模型,避免过拟合。 同样层数的决策树,叶结点的...
  • 决策树剪枝问题

    2018-06-04 09:33:00
    决策树剪枝是将生成的树进行简化,以避免过拟合。 《统计学习方法》上一个简单的方式是加入正则项a|T|,其中|T|为树的叶节点个数。 其中C(T)为生成的决策树在训练集上的经验熵,经验熵越大,表明叶节点上的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,168
精华内容 867
关键字:

决策树剪枝