​​ ​决策树后剪枝算法(一)代价复杂度剪枝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)
误差估计 标准误差 剪枝集上误差 连续性矫正 概率估计
是否需要额外剪枝集

​ ​

(4)最小错误剪枝(MEP)

​ ​ 1986年Niblett和Bratko提出了最小错误剪枝。最小错误剪枝采用自底向上的方式对决策树进行剪枝,也是后剪枝的一种。最小错误剪枝的主要思想是通过分别计算剪枝前与后的期望错误率EkE_kEk​,进行判断。

​ 

(4.1)数学推导

​ 评价标准:
Ek=n−nc+k−1n+kE_k=\frac{n-n_c+k-1}{n+k} Ek​=n+kn−nc​+k−1​
​ 解读:

  • EkE_kEk​为期望错误率,为评价是否剪枝标准。

  • nnn为样本数,ncn_cnc​为结点最多类别ccc的样本数, kkk为决策树分类类别总数。

  • 该公式需假设每个类别概率相等。

​ ​ 要计算期望错误率,首先需引入错误率计算,反向思考则为计算Pc(T)P_c(T)Pc​(T)(1 - 节点TTT分类为某类别ccc的概率),直观思考可得:
Pr(T)=ncnP_r(T)=\frac{n_c}{n} Pr​(T)=nnc​​
​ ​ 但这样做是有问题的,因为我们仍未知各个样本属于类别ccc的概率,即贝叶斯思维中的先验概率。这便是我们的假设前提“每个类别概率相等”的作用,故有关于节点TTT各样本是属于类别ccc的先验概率为:
Prc(T)=1kPr_{c}(T)=\frac{1}{k} Prc​(T)=k1​
​ ​ 故引出最终的后验概率,节点TTT分类为某类别ccc的概率:
Pc(T)=nc+Prc(T)×mn+m(其中m为先验概率影响因子)P_c(T)=\frac{n_c+Pr_c(T)\times m}{n+m} (其中m为先验概率影响因子) Pc​(T)=n+mnc​+Prc​(T)×m​(其中m为先验概率影响因子)
​ ​ 因而求得节点TTT分类为某类别ccc的错误率:
Errorc(T)=1−Pc(T)=n−nc+m(1−Prc(T))n+mError_c(T)=1-P_c(T)\\ =\frac{n-n_c+m(1-Pr_c(T))}{n+m} Errorc​(T)=1−Pc​(T)=n+mn−nc​+m(1−Prc​(T))​
​ ​ 因一个节点只能有一个类别,且判断方式常为多数表决,则节点TTT的错误率和最大类别ccc直接挂钩,可表示为:
Error(T)=Errorc(T)Error(T)=Error_c(T) Error(T)=Errorc​(T)
​ ​ 故期望错误率EkE_kEk​则转换为,求一个恰当的影响因子mmm的函数,其中一种思路为,求:
Ek=min⁡{1−Pc(T)}==min⁡{n−nc+m(1−Prc(T))n+m}E_k=\min\{1-P_c(T)\}==\min\{\frac{n-n_c+m(1-Pr_c(T))}{n+m}\} Ek​=min{1−Pc​(T)}==min{n+mn−nc​+m(1−Prc​(T))​}
​ ​ 即求解mmm函数的最小值。

​ ​ 为简便计算,从规律进行总结,当m=0m=0m=0时,可考虑先验概率影响为0;而m→∞m\rightarrow\infinm→∞时,先验概率影响程度无穷大。则可近似将mmm等价于类别总数kkk,即类别总数为0,先验概率不予考虑;类别总数较大,先验概率至关重要。

​ ​ 故得到简化公式:
Ek=n−nc+k−1n+kE_k=\frac{n-n_c+k-1}{n+k} Ek​=n+kn−nc​+k−1​

​ 

(4.2)算法流程

​ ​ 考虑决策树上每个中间节点作为剪枝候选对象,自底向上遍历,判断是否剪枝步骤如下:

  • (1)删除以此节点为根的子树,使其成为叶子结点。
  • (2)根据多数表决法,赋予该节点关联的训练数据类别。
  • (3)比较删除前后错误样本数,判断是否剪枝该节点。

​ 

(4.3)例题计算

​ ​ 下面举一个例子进行说明,下图待剪枝决策树有三个类别,每个节点类别及各分类样本数均如图矩形框中列出。


​ 
​ ​ 节点"node 27"
剪枝后:Ek(t)=20−15+3−120+3=0.304剪枝前:Ek(Tt)=1720×(17−15+3−117+3)+320×(3−3+3−13+3)=0.220注:剪枝前的计算过程为Tt下叶子节点计算结果加权求和剪枝后:E_k(t)=\frac{20-15+3-1}{20+3}=0.304\\ 剪枝前:E_k(T_t)=\frac{17}{20}\times(\frac{17-15+3-1}{17+3})+\frac{3}{20}\times(\frac{3-3+3-1}{3+3})=0.220\\ 注:剪枝前的计算过程为T_t下叶子节点计算结果加权求和 剪枝后:Ek​(t)=20+320−15+3−1​=0.304剪枝前:Ek​(Tt​)=2017​×(17+317−15+3−1​)+203​×(3+33−3+3−1​)=0.220注:剪枝前的计算过程为Tt​下叶子节点计算结果加权求和
​ ​ 可得剪枝后期望错误率增加,故不可剪枝。

​ 

​ ​ 节点"node 26"

​ ​ 节点"node 26"的计算结果也是不可剪枝,请自行验证。(0.447 / 0.370)

​ 

(4.4)代码实现

​ C4.5算法及MEP剪枝手写实现

链接:https://pan.baidu.com/s/1JcwHWn7uAzYdahAV6e2GJw?pwd=94bm
提取码:94bm

​ 代码参考:http://www.hzcourse.com/web/refbook/detail/9970/226

————————————————————————————————————————————————————————————

​ 参考资料:

​ [1] 现代决策树模型及其编程实践 黄智濒 编著

​ [2] https://www.bilibili.com/video/BV1No4y1o7ac?p=48

决策树后剪枝算法(四)最小错误剪枝MEP相关推荐

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

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

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

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

  3. 基于阿尔法贝塔剪枝算法的五子棋_C4.5算法剪枝2

    作者:柏安之    封面:自己想吧 1 悲观错误剪枝 在讲解悲观剪枝思路的时候,将会运用统计学的相关知识,所以我们将对这部分知识进行粗略的复习,再进行悲观错误剪枝的学习. 首先,我们认为决策树构建期间 ...

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

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

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

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

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

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

  7. 机器学习(决策树四)——简述 剪枝

    随着决策树深度的增大,模型效果会变化,但增大太多就会导致过拟合的情况,对于过拟合,常见的有两咱优化方式: 1 . 剪枝优化 决策树过度拟合一般情况是由于节点太多导致的(也就是树太深,这样可不可以把某些 ...

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

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

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

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

最新文章

  1. Py之pixellib:pixellib库的简介、安装、经典案例之详细攻略
  2. Redis概述、数据类型
  3. 深度学习-机器学习(5.2支持向量机SVM上的Python应用)
  4. java多线程w3c_多线程
  5. RANSAC与 最小二乘(LS, Least Squares)拟合直线的效果比较
  6. 万能驱动xp离线版_教你用SC封装软件来封装XP系统
  7. CCCC L1-002. 打印沙漏【图形打印】
  8. 创业的两种方式,你适合哪一种?
  9. Java基础-自增自减运算符练习题
  10. 查询输出优秀人数_sql 第五关多表查询
  11. 重磅丨三年沉淀 2018全球人工智能技术大会蓄势待发
  12. android串口方案:usb转串口 usb 转ttl
  13. MLDN李兴华JAVA开发实战经典
  14. c语言通讯录感想,C语言通讯录实例分享
  15. K3C官改固件更新frp客户端
  16. Excel下拉选项设置
  17. 尚硅谷-个人-数据库记录基础5
  18. 为wpf中的DataGrid控件添加鼠标单击事件
  19. 由C向B:社区团购切换比拼赛道?
  20. 《成都》钢琴谱,带指法和歌词

热门文章

  1. 即将步入研究生,有什么建议?
  2. J0ker的CISSP之路: Why CISSP
  3. 如何在Windows资源管理器中自定义文件夹背景和图标
  4. 再见,斗鱼!再见,虎牙!
  5. 计算机的键盘怎么调,键盘灵敏度,教您怎么调节电脑键盘灵敏度
  6. dhtml_DHTML乌托邦:使用JavaScript和DOM的现代Web设计
  7. c# 使用Office com组件时遇到的问题
  8. 思科路由器无法访问互联网怎么操作?
  9. 【短道速滑六】古老的视频去噪算法(FLT_GradualNoise)解析并优化,可实现1920*1080 YUV数据400fps的处理能力。...
  10. 关注民生民情——华北水利水电大学“情艺”国情社情调查