Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >决策树剪枝算法:REP/PEP/CCP算法

决策树剪枝算法:REP/PEP/CCP算法

作者头像
Steve Wang
发布于 2023-10-12 01:34:10
发布于 2023-10-12 01:34:10
1.1K0
举报
文章被收录于专栏:从流域到海域从流域到海域

一颗完全生长的决策树会面临一个严重的问题——过拟合,因此我们需要剪掉一些枝叶来提高决策树的泛化能力。即使不存在过拟合,如果样本数量和分类数量是一个海量的级别,也需要预剪枝,因为计算资源不足以支撑生成完整的决策树,这也是强化学习中蒙特·卡罗尔树必须剪枝的原因。

决策树算法生成的一颗完整的决策树会非常的庞大,每个变量都被详细地考虑过。在每一个叶节点上,只要继续分支就会有信息增益的情况,不管信息增益有多大,都会进行分支操作。最终所达到的目的是决策树的叶节点所覆盖的训练样本都属于同一类。

如果我们用这个决策树来对训练集进行分类的话,那么这颗树的表现非常好。但是在测试集上的表现就远没有在训练集上的表现好,这就是过拟合问题。

顾名思义,树的剪枝就是剪掉树的一些枝叶,考虑一颗完整决策树的非叶结点枝(枝)代表着逻辑判断,也代表着分类后的子集。决策树的剪枝就是删掉一些不必要的逻辑判断,并且将子集合并。这样确实会造成在训练集上子集不纯的现象,但是因为我们最终目标是模型在测试集上的效果,所以牺牲在训练集上的效果换取解决测试集的过拟合问题这样的做法也是值得的。决策树剪枝根据先后顺序可以分为两类,一类是预剪枝(在计算资源不够的时候哪怕没有过拟合也必须预剪枝),一类是后剪枝。

预剪枝

预剪枝的核心思想是在树中结点进行扩展之前,先计算当前的划分能否带来模型泛化能力的提升,如果不能,则不再继续生长子树。此时可能存在不同类别的样本同时存于同一结点中,按照多数投票原则判断该结点所属类别。预剪枝对于何时停止决策树生长有以下几种方法。

  1. 当树达到一定深度时,停止树的生长。
  2. 当达到当前结点的样本数量小于某个阈值的时候,停止树的生长。
  3. 设置信息增益的一个阈值,只能信息增益大于这个阈值时才进行进一步的划分。
  4. 计算每次分裂对测试集的准确度提升,当小于某个阈值时,不再扩展(这个最有效,但计算复杂度也最高)。

预剪枝具有思想直接、算法简单、效率高的特点,适合解决大规模问题。但如何准确地估计何时停止树地生长(即上述方法中的深度或者阈值),针对不同情况下的问题会有很大差别,需要一定的经验进行判断。且预剪枝存在一定局限性,有欠拟合风险,虽然当前划分可能导致测试集准确度降低,但之后的划分可能会有显著上升(类似于局部极值点)。

后剪枝

后剪枝的核心思想是让算法生成一颗完全生长的决策树,然后经过计算决定是否剪枝(自底向上:REP、CCP,自顶向下:PEP)。剪枝过程中将子树删除,用一个叶子结点来替代,该结点的类别同样也可以通过测试集上的准确率来判断,如果剪枝过后准确率有提升,则进行剪枝。相比于预剪枝,后剪枝方法通常可以得到泛化能力更强的决策树,但时间开销会更大。

常见的后剪枝算法包括错误率降低剪枝(REP,Reduced Error Pruning),代价复杂度剪枝(Cost Complexity Pruning),最小误差剪枝(Minimum Error Pruning)、悲观剪枝(Pessimistic Error Purning)、CVP(Critical Value Purning)、OPP(Optimial Purning)等方法,这些方法各有利弊,在合适的场景下选择合适的方法即可。

本文介绍ERP/PEP/CCP方法。

错误率降低剪枝法 (Reduced Error Pruning)

比较trial的方法,剪一颗结点在验证集上试一试,有提升就真剪。

错误率降低剪枝法简称REP,它是通过剪枝,然后在一个新的验证集上对剪枝的有效性进行纠正来解决树的过拟合问题。对于决策树中的每一个非叶子节点的子树,我们将它替换成一个叶子节点,该叶子节点的类别用大多数原则来确定,这样就产生了一个新的相对简化决策树,然后比较这两个决策树在验证集中的表现。

如果新的决策树在验证集中的正确率较高,那么该子树就可以替换成叶子节点,从而达到决策树剪枝的目的。

该算法是自底向上依次遍历所有的子树,直至没有任何子树可以替换使得在验证集上的表现得以改进时,算法就可以终止。

悲观剪枝法 (Pessimistic Error Pruning)

悲观剪枝法(PEP)不需要一个新的验证集来做有效性检验,它按照自顶向下的顺通过计算错误率来决定要不要剪枝。

对于一个叶子结点,假设它覆盖了

N

个样本,其中有

E

个分类错误,那么该叶子节点的错误率为

e = (E+0.5)/N

其中

0.5

就是惩罚因子,那么一颗子树,它有

L

个叶子节点,那么该子树的误判率估计为:

p=\frac{\sum_{i=1}^{L}E_i+0.5L}{\sum_{i=1}^LN_i}

我们假设在子树中每一个样本的误判服从一个二项分布

B(N,p)

,其中

N

表示子树所包含的所有样本个数。

所以,在剪枝前,其误判数的期望为:

E (剪枝前误判数) = N ∗ p

误判的标准差为:

std(剪枝前误判数)=\sqrt{N*p*(1-p)}

在剪枝之后,把子树替换成叶节点后,该叶子的误判次数也是一个伯努利分布,其概率误判率为

e = (E+0.5)/N

,因此叶节点的误判次数均值为:

E(剪枝后误判数) = N*e

当子树的误判个数大于对应叶节点的误判个数一个标准差之后,就决定剪枝。即剪枝条件为:

E(剪枝后误判数)−std(剪枝前误判数)<E(剪枝前误判数)
代价复杂度剪枝法(Cost Complexity Pruning)

代价复杂度算法(简称CCP)为子树

T_t

定义了代价复杂度,以及一个衡量代价与复杂度之间关系的参数

\alpha

.

  • 代价指的是剪枝过程中因子树
T_t

被结点代替而增加的错分成本

  • 复杂度表示剪枝后子树
T_t

减少的叶子结点树

\alpha

表示剪枝后树的复杂度降低程度与代价之间的关系,定义为:

\alpha = \frac{R(t)-R(T_t)}{|N|-1}

其中,

R(t)

表示结点的错误代价,

R(t)=r(t)*p(t)
r(t)

表示结点

t

的错分样本率;

p(t)

表示结点

t

中样本占全部样本的比例;

|N|

表示子树

T_t

中的叶子结点数。

CCP算法可以分为两个步骤:

  1. 按照上述公式自底向上计算每一个非叶结点的
\alpha

值,然后每一次都剪掉具有最小

\alpha

值的子树。从而得到一个集合

\{T_0,T_1,T_2,...,T_M\}

,其中,

T_0

表示完整的决策树,

T_M

表示根节点

  1. 根据真实的错误率在集合
\{T_0,T_1,T_2,...,T_M\}

中选出一个最好的决策树

参考文献

百面机器学习-hulu 决策树的剪枝:REP/PEP/CCP算法 决策树-剪枝算法(二)

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-03-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
机器学习笔记之决策树分类Decision Tree
决策树(decision tree)是一种依托于策略抉择而建立起来的树。机器学习中,决策树是一个预测模型;他代表的是对象属性与对象值之间的一种映射关系。 树中每个节点表示某个对象,而每个分叉路径则代表的某个可能的属性值,从根节点到叶节点所经历的路径对应一个判定测试序列。决策树可以是二叉树或非二叉树,也可以把他看作是 if-else 规则的集合,也可以认为是在特征空间上的条件概率分布。决策树在机器学习模型领域的特殊之处,在于其信息表示的清晰度。决策树通过训练获得的 “知识”,直接形成层次结构。这种结构以这样的方式保存和展示知识,即使是非专家也可以很容易地理解。
Jetpropelledsnake21
2021/03/12
4.1K0
机器学习笔记之决策树分类Decision Tree
决策树算法:ID3,C4.5,CART
对于基本树我将大致从以下四个方面介绍每一个算法:思想、划分标准、剪枝策略,优缺点。
zhangjiqun
2024/12/14
3470
决策树算法:ID3,C4.5,CART
【机器学习】算法原理详细推导与实现(七):决策树算法
在之前的文章中,对于介绍的分类算法有逻辑回归算法和朴素贝叶斯算法,这类算法都是二分类的分类器,但是往往只实际问题中
机器学习和大数据挖掘
2020/08/24
4590
【机器学习】算法原理详细推导与实现(七):决策树算法
图解机器学习 | 决策树模型详解
教程地址:http://www.showmeai.tech/tutorials/34
ShowMeAI
2022/03/10
3.9K0
图解机器学习 | 决策树模型详解
机器学习——十大数据挖掘之一的决策树CART算法
CART算法全称是Classification and regression tree,也就是分类回归树的意思。和之前介绍的ID3和C4.5一样,CART算法同样是决策树模型的一种经典的实现。决策树这个模型一共有三种实现方式,前面我们已经介绍了ID3和C4.5两种,今天刚好补齐这最后一种。
TechFlow-承志
2020/06/04
7880
机器学习之决策树(C4.5算法)
我们已有如下所示数据集,特征属性包含天气、温度、湿度、风速,然后根据这些数据去分类或预测能否去打高尔夫球,针对此类问题你会怎么解决呢。
小一
2019/08/14
5K1
机器学习之决策树(C4.5算法)
决策树算法原理及应用(详细版)
C4.5是一系列用在机器学习和数据挖掘的分类问题中的算法。它的目标是监督学习:给定一个数据集,其中的每一个元组都能用一组属性值来描述,每一个元组属于一个互斥的类别中的某一类。C4.5的目标是通过学习,找到一个从属性值到类别的映射关系,并且这个映射能用于对新的类别未知的实体进行分类。
智能算法
2020/09/24
2.6K0
决策树算法原理及应用(详细版)
从零开始学Python【36】--决策树剪枝的来龙去脉
决策树的剪枝通常有两类方法,一类是预剪枝,另一类是后剪枝。预剪枝很好理解,就是在树的生长过程中就对其进行必要的剪枝,例如限制树生长的最大深度,即决策树的层数、限制决策树中间节点或叶节点中所包含的最小样本量以及限制决策树生成的最多叶节点数量等;后剪枝相对来说要复杂很多,它是指决策树在得到充分生长的前提下再对其返工修剪。常用的剪枝方法有误差降低剪枝法、悲观剪枝法和代价复杂度剪枝法等,下面将详细介绍这三种后剪枝方法的理论知识。
1480
2019/05/21
1.2K0
决策树详解
总第79篇 01|背景: 我们在日常生活中经常会遇到一些选择需要去做一些选择,比如我们在找工作的时候每个人都希望能找到一个好的工作,但是公司那么多,工作种类那么多,什么样的工作才能算是好工作,这个时候就需要我们对众多的工作去做一个判断。 最常用的一种方法就是制定几个可以衡量工作好坏的指标,比如公司所处的行业是什么、应聘的岗位是什么、投资人是谁、薪酬待遇怎么样等等。评判一个工作好坏的指标有很多个,但是每一个指标对工作好坏这一结果的决策能力是不一样的,为了更好的对每一个指标的决策能力做出判断,我们引入一个可以
张俊红
2018/04/11
1.7K0
决策树详解
《机器学习》-- 第四章 决策树
正文共:8270 字 151 图 预计阅读时间:21 分钟 前文推送 MIT线性代数相关资源汇总 《机器学习》--第一章 《机器学习》--第二章 《机器学习》--第三章(上) 《机器学习》--第三章(下) 本文目录: 4.1 决策树基本流程 4.2 划分选择 4.3 剪枝处理 4.4 连续值与缺失值处理 4.5 决策树算法对比 第四章 决策树 4.1 决策树基本流程 决策树(decision tree,亦称为判定树)是一类常见的机器学习方法。 以二分类任务为例,我们希望从给定训练数据集学得一个模型用以对新
fireWang
2019/11/12
1.6K0
《机器学习》-- 第四章 决策树
决策树5:剪枝与sklearn中的决策树
当训练数据量大、特征数量较多时构建的决策树可能很庞大,这样的决策树用来分类是否好?答案是否定的。
木东居士
2019/12/23
4.3K0
决策树学习笔记(二):剪枝,ID3,C4.5
推荐导读:本篇为树模型系列第二篇,旨在从最简单的决策树开始学习,循序渐进,最后理解并掌握复杂模型GBDT,Xgboost,为要想要深入了解机器学习算法和参加数据挖掘竞赛的朋友提供帮助。
1480
2019/07/15
1.6K0
决策树学习笔记(二):剪枝,ID3,C4.5
机器学习 | 决策树模型(一)理论
决策树(Decision tree)是一种基本的分类与回归方法,是一种非参数的有监督学习方法。
数据STUDIO
2021/06/24
1.7K0
决策树算法之----C4.5
1. C4.5算法简介 C4.5是一系列用在机器学习和数据挖掘的分类问题中的算法。它的目标是监督学习:给定一个数据集,其中的每一个元组都能用一组属性值来描述,每一个元组属于一个互斥的类别中的某一类。C4.5的目标是通过学习,找到一个从属性值到类别的映射关系,并且这个映射能用于对新的类别未知的实体进行分类。 C4.5由J.Ross Quinlan在ID3的基础上提出的。ID3算法用来构造决策树。决策树是一种类似流程图的树结构,其中每个内部节点(非树叶节点)表示在一个属性上的测试,每个分枝代
智能算法
2018/04/03
1.6K0
决策树算法之----C4.5
经典算法
问题:在空间上线性可分的两类点,分别向SVM分类的超平面做投影,这些点在超平面上的投影仍然是线性可分的吗?
全栈程序员站长
2021/05/20
8920
决策树与随机森林
首先,在了解树模型之前,自然想到树模型和线性模型有什么区别呢?其中最重要的是,树形模型是一个一个特征进行处理,之前线性模型是所有特征给予权重相加得到一个新的值。决策树与逻辑回归的分类区别也在于此,逻辑回归是将所有特征变换为概率后,通过大于某一概率阈值的划分为一类,小于某一概率阈值的为另一类;而决策树是对每一个特征做一个划分。另外逻辑回归只能找到线性分割(输入特征x与logit之间是线性的,除非对x进行多维映射),而决策树可以找到非线性分割。
西西木木
2020/06/02
1.4K0
决策树与随机森林
西瓜书4-决策树
从西瓜书和统计学习方法中学习了决策树的相关知识,同时在网上查找了树的知识点,最重要的是二叉树和树3种的遍历方式
皮大大
2021/03/02
1.2K0
《机器学习》笔记-决策树(4)
作者:刘才权 编辑:黄俊嘉 写在最前面 如今机器学习和深度学习如此火热,相信很多像我一样的普通程序猿或者还在大学校园中的同学,一定也想参与其中。不管是出于好奇,还是自身充电,跟上潮流,我觉得都值得试一试。对于自己,经历了一段时间的系统学习(参考《机器学习/深度学习入门资料汇总》),现在计划重新阅读《机器学习》[周志华]和《深度学习》[Goodfellow et al]这两本书,并在阅读的过程中进行记录和总结。这两本是机器学习和深度学习的入门经典。笔记中除了会对书中核心及重点内容进行记录,同时,也会增加自己的
机器学习算法工程师
2018/03/06
7740
《机器学习》笔记-决策树(4)
【机器学习】——决策树以及随机森林
前言:决策树算法(Decision Tree)详解 决策树(DecisionTree)是一种基于树形结构的监督学习算法,广泛应用于分类和回归任务。它通过一系列的决策规则逐步将数据集划分成多个子集,从而构建出易于理解的决策模型。决策树不仅易于可视化、便于解释,还能够处理复杂的多变量决策问题,因此在各类机器学习模型中占有重要地位。
用户11286421
2024/09/29
2.2K0
【机器学习】——决策树以及随机森林
机器学习之决策树与随机森林模型
本文介绍了什么是机器学习,机器学习的应用,机器学习的算法,机器学习的框架,机器学习的调参,机器学习中的竞赛,以及机器学习的前景。
汪毅雄
2017/10/17
3.5K2
机器学习之决策树与随机森林模型
相关推荐
机器学习笔记之决策树分类Decision Tree
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档