决策树后剪枝算法(二)错误率降低剪枝REP
决策树后剪枝算法(一)代价复杂度剪枝CPP
决策树后剪枝算法(二)错误率降低剪枝REP
决策树后剪枝算法(三)悲观错误剪枝PEP
决策树后剪枝算法(四)最小错误剪枝MEP
剪枝,是一个“用准确性换取简单性”的思想。它允许决策树对训练集过拟合,再通过删除对泛化精度无贡献的子分支,从而修剪出一颗较小的树。以下列出几种较常见的后剪枝算法,及其机制对比:
CCP | REP | PEP | MEP | |
---|---|---|---|---|
剪枝方式 | 自底向上 | 自底向上 | 自顶向下 | 自底向上 |
计算复杂度 | O(n2)O(n^2)O(n2) | O(n)O(n)O(n) | O(n)O(n)O(n) | O(n)O(n)O(n) |
误差估计 | 标准误差 | 剪枝集上误差 | 连续性矫正 | 概率估计 |
是否需要额外剪枝集 | 否 | 是 | 否 | 否 |
(2)错误率剪枝(REP)
错误率剪枝算法相对较简单朴素,同时也具备速度快的优点,但容易过度修剪。主要思路为划分训练集 - 验证集:训练集用形成学习到的决策树;验证集用来评估修剪决策树。大致流程可描述为:对于训练集上构建的过拟合决策树,自底向上遍历所有子树进行剪枝,直到针对交叉验证数据集无法进一步降低错误率为止。
(2.1)数学推导
评价标准:
Rtest(Tt)vsRtest(t)Rtest(T)=etest(T)ntest(T)R_{test}(T_t)~~vs~~R_{test}(t)\\ R_{test}(T)=\frac{e_{test}(T)}{n_{test}(T)} Rtest(Tt) vs Rtest(t)Rtest(T)=ntest(T)etest(T)
解读:
- Rtest(T)R_{test}(T)Rtest(T)表示错误率,用来比较剪枝前后好坏。
- ntest(T)n_{test}(T)ntest(T)为TTT节点分到的测试集样本数, etest(T)e_{test}(T)etest(T)为TTT节点对测试集分类错误样本数。
- 因测试集固定,ntest(T)n_{test}(T)ntest(T)为定值,评价标准可简化为etest(T)e_{test}(T)etest(T)。
补充说明,每个节点的类别确定方法,为多数表决。即在训练决策树时,对每个节点分到的训练样本进行多数表决,为每个节点贴上类别标签。以便后续验证集评估剪枝前后,错误样本数进行比较。
(2.2)算法流程
考虑决策树上每个分支节点作为剪枝候选对象,自底向上遍历,判断是否剪枝步骤如下:
- (1)删除以此节点为根的子树,使其成为叶子结点。
- (2)根据多数表决法,赋予该节点关联的训练数据类别。
- (3)比较删除前后错误样本数,判断是否剪枝该节点。
(2.3)例题计算
需注意的是,该例题为突出剪枝过程,巧妙设计为每个内部节点均可剪枝。实际应用中根据比较结果判断。
数据集
训练集生成决策树
进行多数表决类别打标签
基于测试集剪枝
(1)第四层 纹理
剪枝前:错误2 / 剪枝后:错误1
剪枝后错误数下降,故剪枝替换为单节点。
(2)第三层 色泽
剪枝前:错误1 / 剪枝后:错误1
剪枝后错误率未下降,根据奥卡姆剃刀原则,等错误率选复杂度低的树,故剪枝替换为单节点。
(3)第二层 色泽
剪枝前:错误2 / 剪枝后:错误1
剪枝后错误数下降,故剪枝替换为单节点。
(4)第二层 根蒂
剪枝前:错误1 / 剪枝后:错误1
剪枝后错误率未下降,根据奥卡姆剃刀原则,等错误率选复杂度低的树,故剪枝替换为单节点。
(5)第一层 脐部
剪枝前:错误2 / 剪枝后:错误4
剪枝后,错误数明显上升,故不能剪枝。
(6)最终结果
(1.4)代码实现
C4.5算法及REP剪枝手写实现
链接:https://pan.baidu.com/s/1gl4TzGfVQWbqgKTZwQqXeQ?pwd=uof6
提取码:uof6
代码参考:http://www.hzcourse.com/web/refbook/detail/9970/226
————————————————————————————————————————————————————————————
参考资料:
[1] 现代决策树模型及其编程实践 黄智濒 编著
[2] 统计学习方法(第二版) 李航 著
[3] https://zhuanlan.zhihu.com/p/548186344
决策树后剪枝算法(二)错误率降低剪枝REP相关推荐
- 决策树剪枝算法:REP/PEP/CCP算法
一颗完全生长的决策树会面临一个严重的问题--过拟合,因此我们需要剪掉一些枝叶来提高决策树的泛化能力.即使不存在过拟合,如果样本数量和分类数量是一个海量的级别,也需要预剪枝,因为计算资源不足以支撑生成完 ...
- 决策树(1)——ID3算法与C4.5算法的理论基础与python实现
1.前言 决策树是一种常用的机器学习算法,既可以做分类任务也可以做回归任务,本文主要讨论用于分类任务的决策树.决策树与数据结构中的树相同,也是由一个根结点.若干个内部结点和若干个叶结点构成.这里我 ...
- 决策树后剪枝算法(四)最小错误剪枝MEP
决策树后剪枝算法(一)代价复杂度剪枝CPP 决策树后剪枝算法(二)错误率降低剪枝REP 决策树后剪枝算法(三)悲观错误剪枝PEP 决策树后剪枝算法(四)最小 ...
- 决策树后剪枝算法(一)代价复杂度剪枝CPP
决策树后剪枝算法(一)代价复杂度剪枝CPP 决策树后剪枝算法(二)错误率降低剪枝REP 决策树后剪枝算法(三)悲观错误剪枝PEP 决策树后剪枝算法(四)最小 ...
- 决策树剪枝算法(二)
转自:http://www.cnblogs.com/starfire86/p/5749334.html 上一章主要描述了ID3算法的的原理,它是以信息熵为度量,用于决策树节点的属性选择,每次优选信息量 ...
- 决策树-剪枝算法(二)
上一章主要描述了ID3算法的的原理,它是以信息熵为度量,用于决策树节点的属性选择,每次优选信息量最多 的属性,以构造一颗熵值下降最快的决策树,到叶子节点处的熵值为0,此时每个叶子节点对应的实例集中的实 ...
- 机器学习--决策树二(预剪枝和后剪枝)
一.什么是决策树的剪枝 对比日常生活中,环卫工人在大街上给生长茂密的树进行枝叶的修剪.在机器学习的决策树算法中,有对应的剪枝算法.将比较复杂的决策树,化简为较为简单的版本,并且不损失算法的性能. 二. ...
- 决策树准确率低原因_机器学习决策树算法--剪枝算法
一.剪枝算法决策树生成算法递归地产生决策树,直到不能继续下去为止.这样产生的树往往对训练数据的分类很准确,但对未知的测试数据的分类却没有那么准确,即出现过拟合现象.过拟合的原因在于学习时过多地考虑如何 ...
- 机器学习笔记16——决策树剪枝算法原理及python实现案例
决策树剪枝算法 引言 1.算法目的 2.算法基本思路: 3.决策树损失函数 4.剪枝类型: 4.1 预剪枝 4.2 后剪枝 4.3 两种剪枝策略对比 引言 \quad \quad在决策树.ID3.C4 ...
- python决策树剪枝_决策树剪枝算法的python实现方法详解
python 决策树怎样修剪枝 剪枝是决策树停止分支的方法之一,剪枝有分预先剪枝和后剪枝两种.预先剪枝是在树的生长过程中设定一个指标,当达到该指标时就停止生长,这样做容易产生"爱已不在,却还 ...
最新文章
- MySQL常用维护管理工具
- 武科大计算机专业分数线,武汉科技大学计算机类(中外合作办学)专业2016年在湖北理科高考录取最低分数线...
- 【土地评价与土地管理】教案 第一章:土地评价要素的选择
- oracle unused用法,set unused的用法(ORACLE刪除字段)
- rapidxml在qt linux(gcc)下写xml文件出错
- 攻防世界-Misc-gif
- 20 个实例玩转 Java 8 Stream,写的太好了!
- 【TDA4系列】 IPC applications应用举例
- VirtualBox创建Linux虚拟机图文教程
- android 关联dicom文件,基于Android的DICOM浏览器的开发
- 【Leetcode刷题Python】134. 加油站
- QQ邮箱一键删除所有邮件的方法
- 某些特殊悼念日的时候,让个人网页风格变黑灰色
- 网站盈利模式分析总结
- element-ui文件上传修改上传文件的格式
- JavaWeb - 小米商城:商品添加到购物车
- ODB++数据解析三
- matlab中nargin用法
- 内核小碎碎-第四集 解析dtb
- (原創) 如何自行在ThinkPad X61安裝Windows XP Professional SP3? (NB) (ThinkPad) (X61) (OS) (Windows)...
热门文章
- mescroll报错
- NS3 之 入坑
- 计算机原理电梯控制系统设计,基于PLC的电梯控制系统的设计与研究
- 小米首页html代码,小米首页小功能案例.html
- 一款漂亮的Bootstrap模板INSPINIA_adminV2.5 ---- 20161102
- google四件套之Dagger2。从入门到爱不释手,之:Dagger2进阶知识及在Android中使用
- 【目标检测】YOLOv2 ,对YOLOv1的多种改进
- 计算机联锁系统组成及工作原理,计算机联锁系统的组成
- WEB安全-ESAPI
- 统计学中sp_统计学中pssp是什么意思