Earliest PEP Algorithm Principles
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+21L(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+21L(S)+onestandarderrorof∑J+12L(S)one \ standard \ error \ of \ {\sum J+\frac{1}{2}L(S)}one standard error of ∑J+21L(S)
就把该子树用该字数中出现类别频率最高的叶子节点替换。
论文中的举例是:
把上面这棵决策树的黄色圆圈部分的子树替换为一个叶子。
判断过程如下:
1.由于该子树中只有一个叶子是非negative,其余都是negative,假如剪枝,那么得到的判据是:
E+12\frac{1}{2}21=1.5
2.假如不剪枝,那么判据是:
∑J+12L(S)\sum J+\frac{1}{2}L(S)∑J+21L(S)+onestandarderrorof∑J+12L(S)one \ standard \ error \ of {\sum J+\frac{1}{2}L(S)}one standard error of∑J+21L(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+21L(S) | |
one standard error of ∑J+12L(S){\sum J+\frac{1}{2}L(S)}∑J+21L(S) | |
E+12<∑J+12L(S)+standarderrorof(∑J+12L(S))\frac{1}{2} <\sum J+\frac{1}{2}L(S)+standard \ error \ of{(\sum J+\frac{1}{2}L(S))}21<∑J+21L(S)+standard error of(∑J+21L(S)) |
注意,这里第三栏的标准差是同一个意思
Quinlan是对分类错的数据条数先修正,然后求标准差,
这里12L(S)的标准差是0,所以其实这里是是在计算∑J的标准差\frac{1}{2}L(S)的标准差是0,所以其实这里是是在计算\sum{J}的标准差21L(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相关推荐
- 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 ...
- Spectral Algorithm
Spectral Algorithm[转自网络,参考用] 有关Spectral Algorithm sigchi结束之后,这两天看了下spectral algorithm的一些相关的paper.现在给 ...
- A Google Congestion Control Algorithm for Real-Time Communication
原文地址 https://datatracker.ietf.org/doc/html/draft-ietf-rmcat-gcc Abstract 摘要 This document describes ...
- Instruction Set Principles
参考:ComputerArichitecture(6thEdition)Computer\ Arichitecture\ (6\th\ Edition)ComputerArichitecture(6 ...
- 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/ ...
- In Search of an Understandable Consensus Algorithm(寻找可理解的共识算法)
原文见 Raft Consensus Protocol 题目:In Search of an Understandable Consensus Algorithm 作者:Diego Ongaro an ...
- What is SVM algorithm
文章目录 The prcface Compare Logical Regression Decision tree SVM Analysis Logistic Regression Analysis ...
- 连续消除算法-SEA(Successive Elimination Algorithm)
Abstract 该块匹配算法(block matching algorithm BMA)用于运动估计.核心思想就是通过连续不断的消除搜索窗口中的块位置,降低计算量,同时获得较为准确的运动向量,准确度 ...
- 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 ...
最新文章
- .NE 后退刷新验证码
- php把数组函数封装,PHP删除Array数组里指定的key(完整版,已封装成函数,附测试代码)...
- 利用XtraBackup做mysql不停机重做主从复制
- java uuid 第三方_JAVA生成短8位UUID
- java生日验证_Java验证身份证号码是否有效
- 20145303刘俊谦 Exp7 网络欺诈技术防范
- php5中文手册 pdf_tp5.0完全开发手册
- Python图片文字识别转换程序
- 大厂程序员手把手教你如何写简历!!(附简历模板)
- Android——Timer停不下来的解决方法
- pycharm 用鼠标滑轮控制代码放大缩小的设置
- Python:爬山法/随机重启爬山法/允许侧移的爬山法解决八皇后问题
- 高分辨率笔记本上解决VIM字号显示大小问题
- 小白月赛26:E牛牛走迷宫(BFS)
- Nacos 注册中心
- 计算机常用芯片,笔记本电脑常用芯片大全
- Python Pyside2 Pinger新手QQ音乐网易云酷狗爬虫下载
- SQL知识点--插入记录
- MT6572 Extend Key driver tool introduction
- 上海计算机单招学院排名,2020年上海所有大学排名榜及分数线(2021参考)
热门文章
- 配置Maven使用Nexus
- 自己实现的atof()和atoi()代码 (转)
- arcgis9.2的安装方法
- JS 中判断一个对象是否为数组对象?
- ERROR Invalid options in vue.config.js: “baseUrl“ is not allowed
- java视频流传输_目前在Web浏览器中流式传输实时视频的最佳做法?
- 简单计算机面试题库及答案_460道Java后端面试高频题答案版【模块六:计算机操作系统】...
- mysql blob 内容查看_这些被你忽视的MySQL细节,可能会让你丢饭碗!
- 弹框在一个很的长页面居中显示
- Jackson相关的一些注解