EBP(Error Based Pruning):
下列算法转载自链接:

weka3初体验以J48(C4.5)构造决策树以及setoptions各参赛含义

EBP算法的具体实现在
http://www.rulequest.com/Personal/c4.5r8.tar.gz
的prune.c文件中,由于是C写的,所以我写了个EBP剪枝算法的python接口:
https://github.com/appleyuchi/Decision_Tree_Prune

下面的BranchErrors、LeafErrors + ExtraLeafErrors、BranchErrors来自代码中的prune.c中的变量
•第一步:计算叶节点的错分样本率估计的置信区间上限U
•第二步:计算叶节点的预测错分样本数
–叶节点的预测错分样本数=到达该叶节点的样本数*该叶节点的预测错分样本率U
•第三步:判断是否剪枝及如何剪枝
–分别计算三种预测错分样本数:
•计算子树t的所有叶节点预测错分样本数之和,记为TreeErrors
•计算子树t被剪枝以叶节点代替时的预测错分样本数,记为LeafErrors + ExtraLeafErrors
•计算子树t的最大分枝的预测错分样本数,记为BranchErrors
–比较TreeErrors,LeafErrors + ExtraLeafErrors ,BranchErrors,如下:
•TreeErrors最小时,不剪枝
•LeafErrors + ExtraLeafErrors 最小时,进行剪枝,以一个叶节点代替t
•BranchErrors最小时,采用“嫁接”(grafting)策略,即用这个最大分枝代替t

EBP算法的最早提出在
<Quinlan的C4.5:program for machine learning>
的37页,
提出的时候没有提到嫁接,分析案例時39頁提到了嫁接。

解释下嫁接:
1.嫁接不是整个子树剪掉,而是减掉其中的一些树枝。
2.当测试数据到达叶子节点的上面一个分割点的时候,如果树枝的属性取值与该测试数据的属性取值不一致,那么此时测试数据的类别就以
“最初根节点到当前分割节点”为止的数据集的比例最大的类别作为该测试数据的判定类别。

具体实例:
<Quinlan的C4.5:program for machine learning>
P37-39

上述结果可以采用上面的http://www.rulequest.com/Personal/c4.5r8.tar.gz
来重現,使用vote数据集,运行方法:
1)c4.5.c中把DF改为vote,
并且在当前路径下放置vote.names,vote.data两个文件
2)make all
3)./c4.5

运行过程分析:
总共进行了3次剪枝,1次嫁接。
其中:
physician fee free=n:这个分支进行了2次剪枝,
1step:对adoption of the budget resolution=n进行剪枝
2step:对pysician fee feeze=n进行剪枝
注意是Bottom-Top

physician fee free=y:这个分支进行了1次剪枝
physician fee free=u:这个分支进行了1次嫁接

注意整个过程是down-top方式遍历
例如physician fee free=n这个分支的剪枝过程就体现down-top

EBP是PEP更加悲观的算法,所谓的“悲观”到底体现在哪里?
例如16条数据中,一条数据预测错误,那么错误率是116\frac{1}{16}161​
根据这个实际错误率,使用置信区间25%估算得到“悲观错误率”(pessimistic error rate):
U0.25(1,16)=0.157U_{0.25}(1,16)=0.157U0.25​(1,16)=0.157
然后用这个"悲观错误率"来预测上面的悲观错误数量,
再把悲观错误叠加到实际错误数量上,然后再进行“维持原样”、“剪枝”、“嫁接”的“悲观错误数量”进行比较,哪个的“悲观错误数量”最小就用哪种。
关于U0.25(1,16)=0.157U_{0.25}(1,16)=0.157U0.25​(1,16)=0.157的悲观错误率、悲觀錯誤數量的估算方法如下:
https://blog.csdn.net/appleyuchi/article/details/83834101

另外J48的剪枝算法是EBP和REP,不是PEP,
Quinlan的C4.5-Release8的实现版本中,
http://www.rulequest.com/Personal/c4.5r8.tar.gz
使用的剪枝算法也是EBP,不是PEP。

Error Based Pruning剪枝算法、代码实现与举例相关推荐

  1. Minimax 和 Alpha-beta 剪枝算法简介,及以此实现的井字棋游戏(Tic-tac-toe)

    前段时间用 React 写了个2048 游戏来练练手,准备用来回顾下 React 相关的各种技术,以及试验一下新技术.在写这个2048的过程中,我考虑是否可以在其中加入一个 AI 算法来自动进行游戏, ...

  2. Python实现博弈树minmax补全与α-β剪枝算法脚本简介

    文章目录 前言 一.题目 二.使用步骤 1.递归构建博弈树 2.α-β剪枝算法 3.博弈树可视化 4.测试实例 5.结果展示 6.全部代码 总结 前言 使用Python编程实现博弈树的构建,实现利用M ...

  3. 收藏 | 一文总结70篇论文,帮你透彻理解神经网络的剪枝算法

    来源:DeepHub IMBA本文约9500字,建议阅读10+分钟 本文为你详细介绍神经网络剪枝结构.剪枝标准和剪枝方法. 无论是在计算机视觉.自然语言处理还是图像生成方面,深度神经网络目前表现出来的 ...

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

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

  5. 我总结了70篇论文的方法,帮你透彻理解神经网络的剪枝算法

    无论是在计算机视觉.自然语言处理还是图像生成方面,深度神经网络目前表现出来的性能都是最先进的.然而,它们在计算能力.内存或能源消耗方面的成本可能令人望而却步,这使得大部份公司的因为有限的硬件资源而完全 ...

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

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

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

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

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

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

  9. 运行iDT算法代码及后续特征编码

    DT&IDT算法应该算是行为识别领域中经典中的经典了,自从13年提出以来,在HMDB-51和UCF-101等若干个数据库上得到了非常好的效果,虽然DT&IDT算法做不过深度学习,但是由 ...

最新文章

  1. 3Dslicer1:入门及基本控制
  2. class mywnd : pubic qwidget是什么意思_学了这么久java反射,你知道class.forName和classloader的区别吗?...
  3. 【MFC系列-第19天】初步认识GDI绘图技术
  4. Android studio中获取按钮组的信息如何循环遍历
  5. SpringBoot2.5.4发送邮件4种方式
  6. python代码技巧_让你python代码更快的3个小技巧
  7. echart 地图 某个地区_一站式解决echarts实现区域地图
  8. hadoop 开启防火墙_hadoop上搭建hive
  9. 博文视点大讲堂20期:Windows 7来了——知道你所不知道的Windows 7
  10. 【php毕业设计】基于php+mysql的学生签到考勤系统设计与实现(毕业论文+程序源码)——学生签到考勤系统
  11. 数据库设计之需求分析
  12. 厦门大学2019年数学分析考研试题
  13. Html学习(二)font 加粗 斜体 下划线标签学习
  14. 华为网络实验--动态路由器+RIP路由协议配置及验证
  15. 快看,他纯用css绘制出了嫦娥手捧的月兔,关键还能飞,牛
  16. 软考系统架构师倒计时第6天
  17. 嵌入式ARM64 Linux内核FIT uimage方式启动
  18. 东北大学应用数理统计第三章知识点总结——假设检验
  19. java 农历 天文,“中国天眼”的新发现 终结天文界持续多年的一场争论
  20. 珍宝鸭的力扣练习(1):字符串特殊方法合集

热门文章

  1. Python学习笔记- Python threading模块
  2. MFC窗口颜色的设置
  3. 基于php的地铁查询系统,HTML5 Canvas实现交互式地铁线路图
  4. 实体安全主要指计算机及网络硬件设备,计算机安全中的实体安全主要是指什么?...
  5. 国产手机都会用鸿蒙吗,华为鸿蒙系统已经发布,小米等国产手机会使用鸿蒙系统吗?来看看...
  6. 大学暑假第四周进度报告
  7. 阿里微服务专家自己手写Spring Boot 实现一个简单的自动配置模块
  8. 和QT零距离接触的意义是什么
  9. 多路由器环境配置的一些小技巧(达内)
  10. Lesson 1:单线程 Socket Communications(一)