PEP:Pessimistic Error Pruning
本文分为两部分:
第一部分:1986年的PEP剪枝算法原理
第二部分:1997年的PEP剪枝算法原理以及与前者的对比
-----------------------------
第一部分:

《Simplifying Decision Trees》-1986
作者:J.R. Quinlan
该论文的2.3 Pessimistic Pruning 首次提出了悲观剪枝。
整理如下:
悲观剪枝参考了一本统计书籍:
《Statistical Methods》(7th edition) Snedecor,G.W. and Cochran,W.G.(1980)
论文相关部分如下:


整理成伪代码如下:
K:当前子树的总数据条数
J:当前子树分错的数据条数
E:剪枝后的分错的数据条数
∑J\sum J∑J:一个叶子节点分类出错的数据条数

L(S)L(S)L(S):被判断是否需要剪枝的子树的所有叶子节点的数量

∑J+12L(S)\sum J+\frac{1}{2}L(S)∑J+21​L(S):悲观地猜测,如果不剪枝,那么该子树的所有叶子节点将会估计错误的数据条数
top to down方式剪枝
分错的数量的分布视为二项分布
剪枝后的分错的数据条数=E+12\frac{1}{2}21​
---------------
上面所有需要+12\frac{1}{2}21​的原因来自前面提到的参考文献的:
《Statistical Methods》(7th edition) Snedecor,G.W. and Cochran,W.G.(1980)的pp.117ff(这个到底是第几页的意思我也不知道,反正这本书似乎网上找不到pdf了)
---------------
如果剪枝后的E+12E+\frac{1}{2}E+21​<∑J+12L(S)\sum J+\frac{1}{2}L(S)∑J+21​L(S)+onestandarderrorof∑J+12L(S)one \ standard \ error \ of \ {\sum J+\frac{1}{2}L(S)}one standard error of ∑J+21​L(S)
就把该子树用该字数中出现类别频率最高的叶子节点替换。
论文中的举例是:

把上面这棵决策树的黄色圆圈部分的子树替换为一个叶子。
判断过程如下:
1.由于该子树中只有一个叶子是非negative,其余都是negative,假如剪枝,那么得到的判据是:
E+12\frac{1}{2}21​=1.5
2.假如不剪枝,那么判据是:
∑J+12L(S)\sum J+\frac{1}{2}L(S)∑J+21​L(S)+onestandarderrorof∑J+12L(S)one \ standard \ error \ of {\sum J+\frac{1}{2}L(S)}one standard error of∑J+21​L(S)
由于∑J\sum J∑J=0
且剪枝前的叶子数是4个,
所以该判据的结果是2+2\sqrt{2}2​
所以有1.5<2+2\sqrt{2}2​
所以剪去该分支。
PEP剪枝后的结果如下:

我们前面提到的是PEP的剪枝,这里的截图写的是CCP的剪枝。文中提到
所以该篇文章中,PEP和CCP的剪枝效果是一样的,都是Figure2

另外注意:这篇论文的
剪枝前数据有2238条
剪枝后数据有2241条
原有数据集是2541条
具体为什么会有这个差别,作者没有明说,这个是由于unKnown(含缺失值)数据的处理方式没有详细阐述。

-----------------------
第二部分

论文是意大利人写的:
《A Comparative Analysis of Methods for Pruning Decision Trees》1997年,两种算法各个组成部分的对应关系如下:

1986年版本-Quinlan 1997年版本- Floriana Esposito
E+12\frac{1}{2}21​ e’(t)=e(t) + 12\frac{1}{2}21​
∑J+12L(S)\sum J+\frac{1}{2}L(S)∑J+21​L(S)
one standard error of ∑J+12L(S){\sum J+\frac{1}{2}L(S)}∑J+21​L(S)
E+12&lt;∑J+12L(S)+standarderrorof(∑J+12L(S))\frac{1}{2} &lt;\sum J+\frac{1}{2}L(S)+standard \ error \ of{(\sum J+\frac{1}{2}L(S))}21​<∑J+21​L(S)+standard error of(∑J+21​L(S))

注意,这里第三栏的标准差是同一个意思
Quinlan是对分类错的数据条数先修正,然后求标准差,
这里12L(S)的标准差是0,所以其实这里是是在计算∑J的标准差\frac{1}{2}L(S)的标准差是0,所以其实这里是是在计算\sum{J}的标准差21​L(S)的标准差是0,所以其实这里是是在计算∑J的标准差

Floriana Esposito是直接把error的分布当做二项分布处理,使用了
Var=npq=分错的数量⋅(总数-分错的数量)总数Var=\sqrt{npq}=\sqrt{\frac{分错的数量·(总数-分错的数量)}{总数}}Var=npq​=总数分错的数量⋅(总数-分错的数量)​​

这两个版本的PEP剪枝的区别总共有1处:
Quinlan版本的PEP判据是<,
Floriana Esposito版本的PEP判据是≤

《Simplifying Decision Trees》-1986的part 2.3 Pessimistic Pruning 中
,
计算one standard error of ∑J+L(S)2\sum{J}+\frac{L(S)}{2}∑J+2L(S)​时,
L(S)2\frac{L(S)}{2}2L(S)​的方差肯定是0,因为L(S)是叶子数量。
所以:
standard error of ∑J+L(S)2\sum{J}+\frac{L(S)}{2}∑J+2L(S)​
=standard error of ∑J\sum{J}∑J
=n′(Tt)⋅(N(t)−n′(Tt))N(t){\sqrt{\frac{n'(T_t)·(N(t)-n'(T_t))}{N(t)}}}N(t)n′(Tt​)⋅(N(t)−n′(Tt​))​​
=n′(Tt)(1−n′(Tt)N(t)){\sqrt{n'(T_t)(1-\frac{n'(T_t)}{N(t)})}}n′(Tt​)(1−N(t)n′(Tt​)​)​
≈n′(Tt){\sqrt{n'(T_t)}}n′(Tt​)​
=2\sqrt{2}2​
=1.41

这个PEP的原理到底啥意思呢?
意思就是当前错误数被当做是一个变量的平均,当这个错误数量+这个变量的标准差时,就可以接近这个 变量的最大值。
把这个接近变量的最大值当做悲观错误数。
那么,作者没有解释的是,为什么“当前错误数”被假设为“一个变量的平均呢”,这明明不是变量啊~!
这是因为:一套数据集我们都是reshuffle后随机取其中的70~80%作为训练集的,由此导致的一个结果就是,到达某个子树的数据集被错分的数量是不定的,所以把当前子树的被错分数据的数量“视为”(assumption)一个变量来处理。

再作一个总结:
Quinlan发布的C4.5-Release8中使用的剪枝算法是EBP(Error Based Pruning)
http://www.rulequest.com/Personal/c4.5r8.tar.gz
weka中的J48使用的两种剪枝算法是EBP和REP

参考链接:
https://www.cnblogs.com/junyuhuang/p/4572408.html

Earliest PEP Algorithm Principles相关推荐

  1. History of pruning algorithm development and python implementation(finished)

    All the python-implementation for 7 post-pruning Algorithms are here. Table of Decision Trees: name ...

  2. Spectral Algorithm

    Spectral Algorithm[转自网络,参考用] 有关Spectral Algorithm sigchi结束之后,这两天看了下spectral algorithm的一些相关的paper.现在给 ...

  3. A Google Congestion Control Algorithm for Real-Time Communication

    原文地址 https://datatracker.ietf.org/doc/html/draft-ietf-rmcat-gcc Abstract 摘要 This document describes ...

  4. Instruction Set Principles

    参考:ComputerArichitecture(6th⁡Edition)Computer\ Arichitecture\ (6\th\ Edition)ComputerArichitecture(6 ...

  5. PEP 8 – Style Guide for Python Code

    PEP 8 – Style Guide for Python Code PEP 8–Python编码规范 原文地址:https://www.python.org/dev/peps/pep-0008/ ...

  6. In Search of an Understandable Consensus Algorithm(寻找可理解的共识算法)

    原文见 Raft Consensus Protocol 题目:In Search of an Understandable Consensus Algorithm 作者:Diego Ongaro an ...

  7. What is SVM algorithm

    文章目录 The prcface Compare Logical Regression Decision tree SVM Analysis Logistic Regression Analysis ...

  8. 连续消除算法-SEA(Successive Elimination Algorithm)

    Abstract 该块匹配算法(block matching algorithm BMA)用于运动估计.核心思想就是通过连续不断的消除搜索窗口中的块位置,降低计算量,同时获得较为准确的运动向量,准确度 ...

  9. PEP 20 – The Zen of Python

    PEP 20 – The Zen of Python Python之禅 原文地址:https://www.python.org/dev/peps/pep-0020/ PEP: 20 Title: Th ...

最新文章

  1. .NE 后退刷新验证码
  2. php把数组函数封装,PHP删除Array数组里指定的key(完整版,已封装成函数,附测试代码)...
  3. 利用XtraBackup做mysql不停机重做主从复制
  4. java uuid 第三方_JAVA生成短8位UUID
  5. java生日验证_Java验证身份证号码是否有效
  6. 20145303刘俊谦 Exp7 网络欺诈技术防范
  7. php5中文手册 pdf_tp5.0完全开发手册
  8. Python图片文字识别转换程序
  9. 大厂程序员手把手教你如何写简历!!(附简历模板)
  10. Android——Timer停不下来的解决方法
  11. pycharm 用鼠标滑轮控制代码放大缩小的设置
  12. Python:爬山法/随机重启爬山法/允许侧移的爬山法解决八皇后问题
  13. 高分辨率笔记本上解决VIM字号显示大小问题
  14. 小白月赛26:E牛牛走迷宫(BFS)
  15. Nacos 注册中心
  16. 计算机常用芯片,笔记本电脑常用芯片大全
  17. Python Pyside2 Pinger新手QQ音乐网易云酷狗爬虫下载
  18. SQL知识点--插入记录
  19. MT6572 Extend Key driver tool introduction
  20. 上海计算机单招学院排名,2020年上海所有大学排名榜及分数线(2021参考)

热门文章

  1. 配置Maven使用Nexus
  2. 自己实现的atof()和atoi()代码 (转)
  3. arcgis9.2的安装方法
  4. JS 中判断一个对象是否为数组对象?
  5. ERROR Invalid options in vue.config.js: “baseUrl“ is not allowed
  6. java视频流传输_目前在Web浏览器中流式传输实时视频的最佳做法?
  7. 简单计算机面试题库及答案_460道Java后端面试高频题答案版【模块六:计算机操作系统】...
  8. mysql blob 内容查看_这些被你忽视的MySQL细节,可能会让你丢饭碗!
  9. 弹框在一个很的长页面居中显示
  10. Jackson相关的一些注解