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 + 1 2 L ( S ) \sum J+\frac{1}{2}L(S) J+21L(S):悲观地猜测,如果不剪枝,那么该子树的所有叶子节点将会估计错误的数据条数
top to down方式剪枝
分错的数量的分布视为二项分布
剪枝后的分错的数据条数=E+ 1 2 \frac{1}{2} 21
---------------
上面所有需要+ 1 2 \frac{1}{2} 21的原因来自前面提到的参考文献的:
《Statistical Methods》(7th edition) Snedecor,G.W. and Cochran,W.G.(1980)的pp.117ff(这个到底是第几页的意思我也不知道,反正这本书似乎网上找不到pdf了)
---------------
如果剪枝后的 E + 1 2 E+\frac{1}{2} E+21< ∑ J + 1 2 L ( S ) \sum J+\frac{1}{2}L(S) J+21L(S)+ o n e   s t a n d a r d   e r r o r   o f   ∑ J + 1 2 L ( S ) one \ standard \ error \ of \ {\sum J+\frac{1}{2}L(S)} one standard error of J+21L(S)
就把该子树用该字数中出现类别频率最高的叶子节点替换。
论文中的举例是:
在这里插入图片描述
把上面这棵决策树的黄色圆圈部分的子树替换为一个叶子。
判断过程如下:
1.由于该子树中只有一个叶子是非negative,其余都是negative,假如剪枝,那么得到的判据是:
E+ 1 2 \frac{1}{2} 21=1.5
2.假如不剪枝,那么判据是:
∑ J + 1 2 L ( S ) \sum J+\frac{1}{2}L(S) J+21L(S)+ o n e   s t a n d a r d   e r r o r   o f ∑ J + 1 2 L ( S ) one \ standard \ error \ of {\sum J+\frac{1}{2}L(S)} one standard error ofJ+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年版本-Quinlan1997年版本- Floriana Esposito
E+ 1 2 \frac{1}{2} 21e’(t)=e(t) + 1 2 \frac{1}{2} 21
∑ J + 1 2 L ( S ) \sum J+\frac{1}{2}L(S) J+21L(S)在这里插入图片描述
one standard error of ∑ J + 1 2 L ( S ) {\sum J+\frac{1}{2}L(S)} J+21L(S)在这里插入图片描述
E+ 1 2 &lt; ∑ J + 1 2 L ( S ) + s t a n d a r d   e r r o r   o f ( ∑ J + 1 2 L ( S ) ) \frac{1}{2} &lt;\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是对分类错的数据条数先修正,然后求标准差,
这里 1 2 L ( S ) 的 标 准 差 是 0 , 所 以 其 实 这 里 是 是 在 计 算 ∑ J 的 标 准 差 \frac{1}{2}L(S)的标准差是0,所以其实这里是是在计算\sum{J}的标准差 21L(S)J

Floriana Esposito是直接把error的分布当做二项分布处理,使用了
V a r = n p q = 分 错 的 数 量 ⋅ ( 总 数 - 分 错 的 数 量 ) 总 数 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 ′ ( T t ) ⋅ ( N ( t ) − n ′ ( T t ) ) N ( t ) {\sqrt{\frac{n&#x27;(T_t)·(N(t)-n&#x27;(T_t))}{N(t)}}} N(t)n(Tt)(N(t)n(Tt))
= n ′ ( T t ) ( 1 − n ′ ( T t ) N ( t ) ) {\sqrt{n&#x27;(T_t)(1-\frac{n&#x27;(T_t)}{N(t)})}} n(Tt)(1N(t)n(Tt))
n ′ ( T t ) {\sqrt{n&#x27;(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

<think>好的,我现在需要回答用户关于在IT语境中“latest”和“earliest”的区别的问题。首先,我应该明确这两个词的基本含义,然后结合IT的具体场景进行分析。 “latest”通常翻译为“最新的”,指的是最近发布的版本、更新或技术。比如软件的最新版本,或者最新的安全补丁。而“earliest”则是“最早的”,指最初发布的版本或最初的方法。例如,早期的编程语言版本或初始的协议标准。 接下来,我需要考虑在IT的不同领域中这两个词的应用。例如在软件开发中,使用最新版本可能带来新功能,但也可能有兼容性问题;而早期版本可能稳定但缺少新特性。在系统设计中,最早的可能指初始设计阶段,而最新的可能指当前的最佳实践。 然后,用户可能希望了解它们的具体区别,所以需要分点对比。比如时间顺序、功能特性、兼容性、使用场景等。同时,根据用户提供的引用,可能需要提到类似“top-down”和“bottom-up”这样的对比,但这里要确保引用恰当。 还要注意生成相关问题,比如如何选择版本,或早期技术的应用案例。最后,检查是否遵循了系统级指令,比如正确使用LaTeX格式,虽然这里可能用不到数学公式,但如果有涉及变量的地方需要留意。另外,确保回答结构清晰,分点明确,符合用户的要求。</think>### 在IT语境中"latest"与"earliest"的区别 #### 1. **时间维度** - **Latest(最新)**:指当前时间线上最接近现在的版本、技术或实现方式 $$ \text{Latest Version} = V_{n} \quad (n=\text{最大版本号}) $$ 例如:最新版Python 3.12、最新Linux内核6.6 - **Earliest(最早)**:指某个技术/系统最初出现的版本或原始形态 $$ \text{Earliest Version} = V_{1} \quad (\text{初始版本}) $$ 例如:Python 0.9.0(1991年)、HTTP/1.0协议 #### 2. **功能特性对比** | 特性 | Latest | Earliest | |-----------|---------------------------------|-----------------------------| | 功能完整性 | 包含最新功能和安全补丁 | 仅基础功能,可能存在已知漏洞 | | 兼容性 | 可能需要新硬件/软件环境支持 | 通常兼容老旧系统 | | 稳定性 | 新功能可能导致不稳定(需验证) | 经过长期验证但功能受限 | #### 3. **应用场景** - **优先选择latest**: 当需要利用新特性(如AI框架的GPU加速)、修复安全漏洞(如OpenSSL更新)或满足合规要求时[^1] - **保留earliest**: 在遗留系统维护(如银行核心系统)、硬件限制(工业控制设备)或版本锁定(特定SDK依赖)场景下 #### 4. **技术演进关系** ```mermaid graph LR A[Earliest] --> B[Version 2] B --> C[Version 3] C --> D[Latest] ``` 这种迭代过程体现了技术演进的"bottom-up approach",即通过持续迭代达到最新状态
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值