​​ ​决策树后剪枝算法(一)代价复杂度剪枝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相关推荐

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

    一颗完全生长的决策树会面临一个严重的问题--过拟合,因此我们需要剪掉一些枝叶来提高决策树的泛化能力.即使不存在过拟合,如果样本数量和分类数量是一个海量的级别,也需要预剪枝,因为计算资源不足以支撑生成完 ...

  2. 决策树(1)——ID3算法与C4.5算法的理论基础与python实现

    1.前言   决策树是一种常用的机器学习算法,既可以做分类任务也可以做回归任务,本文主要讨论用于分类任务的决策树.决策树与数据结构中的树相同,也是由一个根结点.若干个内部结点和若干个叶结点构成.这里我 ...

  3. 决策树后剪枝算法(四)最小错误剪枝MEP

    ​  ​​ ​决策树后剪枝算法(一)代价复杂度剪枝CPP  ​​ ​决策树后剪枝算法(二)错误率降低剪枝REP  ​​ ​决策树后剪枝算法(三)悲观错误剪枝PEP  ​​ ​决策树后剪枝算法(四)最小 ...

  4. 决策树后剪枝算法(一)代价复杂度剪枝CPP

    ​  ​​ ​决策树后剪枝算法(一)代价复杂度剪枝CPP  ​​ ​决策树后剪枝算法(二)错误率降低剪枝REP  ​​ ​决策树后剪枝算法(三)悲观错误剪枝PEP  ​​ ​决策树后剪枝算法(四)最小 ...

  5. 决策树剪枝算法(二)

    转自:http://www.cnblogs.com/starfire86/p/5749334.html 上一章主要描述了ID3算法的的原理,它是以信息熵为度量,用于决策树节点的属性选择,每次优选信息量 ...

  6. 决策树-剪枝算法(二)

    上一章主要描述了ID3算法的的原理,它是以信息熵为度量,用于决策树节点的属性选择,每次优选信息量最多 的属性,以构造一颗熵值下降最快的决策树,到叶子节点处的熵值为0,此时每个叶子节点对应的实例集中的实 ...

  7. 机器学习--决策树二(预剪枝和后剪枝)

    一.什么是决策树的剪枝 对比日常生活中,环卫工人在大街上给生长茂密的树进行枝叶的修剪.在机器学习的决策树算法中,有对应的剪枝算法.将比较复杂的决策树,化简为较为简单的版本,并且不损失算法的性能. 二. ...

  8. 决策树准确率低原因_机器学习决策树算法--剪枝算法

    一.剪枝算法决策树生成算法递归地产生决策树,直到不能继续下去为止.这样产生的树往往对训练数据的分类很准确,但对未知的测试数据的分类却没有那么准确,即出现过拟合现象.过拟合的原因在于学习时过多地考虑如何 ...

  9. 机器学习笔记16——决策树剪枝算法原理及python实现案例

    决策树剪枝算法 引言 1.算法目的 2.算法基本思路: 3.决策树损失函数 4.剪枝类型: 4.1 预剪枝 4.2 后剪枝 4.3 两种剪枝策略对比 引言 \quad \quad在决策树.ID3.C4 ...

  10. python决策树剪枝_决策树剪枝算法的python实现方法详解

    python 决策树怎样修剪枝 剪枝是决策树停止分支的方法之一,剪枝有分预先剪枝和后剪枝两种.预先剪枝是在树的生长过程中设定一个指标,当达到该指标时就停止生长,这样做容易产生"爱已不在,却还 ...

最新文章

  1. MySQL常用维护管理工具
  2. 武科大计算机专业分数线,武汉科技大学计算机类(中外合作办学)专业2016年在湖北理科高考录取最低分数线...
  3. 【土地评价与土地管理】教案 第一章:土地评价要素的选择
  4. oracle unused用法,set unused的用法(ORACLE刪除字段)
  5. rapidxml在qt linux(gcc)下写xml文件出错
  6. 攻防世界-Misc-gif
  7. 20 个实例玩转 Java 8 Stream,写的太好了!
  8. 【TDA4系列】 IPC applications应用举例
  9. VirtualBox创建Linux虚拟机图文教程
  10. android 关联dicom文件,基于Android的DICOM浏览器的开发
  11. 【Leetcode刷题Python】134. 加油站
  12. QQ邮箱一键删除所有邮件的方法
  13. 某些特殊悼念日的时候,让个人网页风格变黑灰色
  14. 网站盈利模式分析总结
  15. element-ui文件上传修改上传文件的格式
  16. JavaWeb - 小米商城:商品添加到购物车
  17. ODB++数据解析三
  18. matlab中nargin用法
  19. 内核小碎碎-第四集 解析dtb
  20. (原創) 如何自行在ThinkPad X61安裝Windows XP Professional SP3? (NB) (ThinkPad) (X61) (OS) (Windows)...

热门文章

  1. mescroll报错
  2. NS3 之 入坑
  3. 计算机原理电梯控制系统设计,基于PLC的电梯控制系统的设计与研究
  4. 小米首页html代码,小米首页小功能案例.html
  5. 一款漂亮的Bootstrap模板INSPINIA_adminV2.5 ---- 20161102
  6. google四件套之Dagger2。从入门到爱不释手,之:Dagger2进阶知识及在Android中使用
  7. 【目标检测】YOLOv2 ,对YOLOv1的多种改进
  8. 计算机联锁系统组成及工作原理,计算机联锁系统的组成
  9. WEB安全-ESAPI
  10. 统计学中sp_统计学中pssp是什么意思