作者:柏安之    封面:自己想吧

1

悲观错误剪枝

在讲解悲观剪枝思路的时候,将会运用统计学的相关知识,所以我们将对这部分知识进行粗略的复习,再进行悲观错误剪枝的学习。

首先,我们认为决策树构建期间的错分样本数分布近似于二项分布X~b(n,p),那么其均值与方差可得:u=np , σ2=npq(其中q=1-p)。若np≥4且nq≥4,二项概率分布p(y)逼近于正态分布,如下图所示:

由上图我们可以看到P(Y≤2)是在正态曲线下Y=2.5的左端面积。只注意到Y=2的左端面积是不合适的,因为它省略了相应于Y=2的的一半概率的长方形。为了修正,用连续概率分布区近似离散概率分布,在计算概率之前我们需要将2增加0.5;值0.5被称为二项概率分布近似的连续性修正因子,因此P(Y≤a)≈P(Za+0.5-np/(npq)1/2))

后文提到的Quinlan教授引入的“基于二项分布的连续校正公式”基本基于此思想。

悲观错误剪枝是Quinlan在1987年提出,通过比较剪枝前和剪枝后的错分样本率来判断是否进行剪枝。我们需要明确的是,利用C4.5或其他算法构建出来的决策树在对不同测试集进行分类的时候,其错分样本率并不相同。我们之所以剪枝是为了避免过渡拟合或者决策树太过庞大带来的可能产生冗余工作量,而并非为了降低错分样本数。

此外,需要注意的是,PEP的特点是不需要独立的剪枝集,而是既采用训练集来生成决策树又用它来进行剪枝,而是类似于用A来验证A,因此,产生的错分样本率r(t)会偏向于训练集——或者说对准确率的评估“过于乐观”——无法得到最优的剪枝树。为此,需要加上一个惩罚来调节从训练集得到的错误率。Quinlan选择引入了一个基于二项分布的连续校正公式对在训练集中产生的错分样本率进行校正,连续校正后的错分样本率r’(t)=[e(t)+0.5]/n(t)。为计算简单起见,接下来的阐述将采用错分样本数而非错分样本率。

经过连续矫正之后,对节点t进行剪枝产生的错分样本数e’(t)=e(t)+1/2;非剪枝的错分样本数则变为e’(Tt)=∑[e(s)+0.5],其中s∈{ Tt 子树的所有叶子节点}。进一步,由于误差近似看成是二项式分布,根据u = np, σ2=npq,可引入子树Tt的服从二项分布的标准错误(标准差)即

SE (e’(Tt)) = [e’(Tt)·(n(t) - e(Tt))/ n(t) ]1/ 2

之所以引入标准差是因为我们目前所求的错分样本数(率)只是该训练集在这个决策树模型下的错分样本率,而不是决策树的错分率——我们所做的只是利用某一个或某几个训练集产生的错分样本率对整体进行估计,最终所能得到的是错分样本率在某一置信区间下的置信区间。而我们判断是否进行剪枝,则是根据剪枝之后的新的错分样本数是否满足我们对错分样本数范围的要求,即新错分样本数与规定置信水平的置信区间的上限的大小关系。那么首先,我们需要复习有关置信区间的内容:

设θ'在大样本下服从E(θ') = θ, 标准误差为σ'的正态分布,那么θ在置信度等于(1 - α)的置信区间是:

θ'± Z α/2 σ'

基于上述思想,我们可以获得根据训练集兼剪枝集估计出的错分样本数的置信区间上限为

e’(Tt)+SE (e’(Tt))

PEP算法采用自顶向下的顺序遍历完全决策树Tmax,对每个内部节点t都注意比较其e’(t)与e’(Tt)+SE (e’(Tt))两者间的大小,如满足e’(t)≤e’(Tt)+SE (e’(Tt)),就进行剪枝——删除以t为根节点的子树而以一个叶子节点代之。

PEP方法是存在一些局限性的,但是在实际应用中PEP表现出了较高的精度。此外,PEP方法不需要分离训练集合和验证机和,对于数据量比较少的情况比较有利。而且,因为在剪枝过程中、树中的每颗子树最多需要访问一次,即使是在最坏的情况下,它的计算时间复杂度也只和非剪枝树的非叶子节点数目成线性关系,策略上也比其它方法相比效率更高,速度更快。

2

最小错误剪枝

Niblett与Bratko在1986年提出该剪枝算法,是利用拉普拉斯(Laplace)概率估计来提高ID3算法在噪声域中的性能,1991年由Cestnik与Bratko利用Bayesian概率估计对MEP进行了改进。

MEP 希望通过剪枝得到一棵相对于独立数据集来说具有最小期望错误率(Expected Error Rate)的决策树。所使用的独立数据集是用来简化对未知样本的错分样本率的估计的,并不意味真正使用了独立的剪枝集 ,实际情况是无论早期版本还是改进版本均只利用了训练集的信息。

定义样本达到节点t且属于第i类的期望概率:Pt=[ ni(t)+paim]/n(t)+m,其中pai为由训练集得来的属于第i类的先验概率,m表示先验概率对期望概率pi(t)的影响程度,为简单起见,认为所有类别的m均相同。

自底向上计算每个内部节点t的期望错误率STE(t),成为静态错误,当m=k,pai=1/k,STE(t)=[e(t)+k-1]/[n(t)+k];树Tt的期望错误率称为动态错误率DYE(t),是其子节点的期望错误加权和。MEP自底向上顺序遍历完全决策树并计算STE(t)与DYE(t),若满足STE(t)≤DYE(t)时则剪枝。

3

基于错误剪枝

这种算法可以被认为是悲观错误剪枝算法的改进,在剪枝过程中,EBP无需专用的剪枝集,同样将训练集用于生成决策树及修剪决策树。在C4.5算法中,同样会采用这一种剪枝方法。

从概率的角度来看,错分样本率r(t)可看成是n(t)次实验中,某事件发生e(t)次的概率,同时可得到关于错分样本率的一个置信区间[LCF,UCF] ,对该置信区间设定一个置信水平CF,该置信区间的上限UCF可通过概率分布P(e(t)/n(t) ≤ UCF) =CF求得,并用该上限作为对期望错误率的估计。CF值用来控制剪枝,值越高剪枝越少,值越低剪枝越多,在C4.5算法中,默认为0.25 ,并假设错分样本的概率服从二项分布。

EBP算法与PEP算法不同的是EBP算法是自底向上进行剪枝,整体思想大致可分为三步:首先计算叶子节点的错分样本率估计的置信区间的上限;第二部,计算叶子节点的预测错分样本数;第三步,则是判断是否剪枝以及如何剪枝——分别计算三种预测错分样本数: (1) 计算以节点t为根的子树Tt的所有叶节点预测错分样本数之和,记为E1;(2) 计算子树 Tt被剪枝以叶节点代替时的预测错分样本数,记为E2;(3)计算子树T1的最大分支的预测错分样本数,记为E3。对三个值进行比较,E2最小时则把子树Tt剪掉并代以一个叶节点;E3最小时采用“嫁接”(grafting)策略,即用这个最大分枝来替代子树Tt ; E1最小则不进行剪枝。

4

代价复杂度剪枝

本剪枝算法在Breimen等人开发的CART系统中得到实现,在本文中只做简单说明。

CCP算法定义了代价和复杂度,以及一个可由用户设置的衡量代价与复杂度之间的关系参数α,α=[R(t)-R(Tt)]/(|Nt|-1)。其中R(t)是子树Tt被剪枝并待以叶子节点t后产生的错误样本数,R(Tt)表示没有被剪枝时的错误样本数。

CCP算法的主要步骤是对于完全决策树的每个非叶子节点计算阿尔法值,剪掉具有最小α值的子树,直到剩下根节点,在这一步骤中可得到一系列的剪枝树;之后用新的剪枝集对上一步骤中的各个剪枝树进行评估,并找出最佳剪枝树作为结果。采用此算法的结果是将得到一棵错分样本数和数的规模相折中的决策树。

参考文献

[1] Han Jiawei,Micheline K.数据挖掘:概念与技术[M] TP274.范明,孟小峰 译.北京:机械工业出版社,2001:70-218

[2] 毛国君,段立娟,王实.数据挖掘原来与算法[M].北京:清华大学出版社,2005

[3] Quinlan J R. C4.5:Programs for Machine Learning[M]. NewYork:Morgan Kaufnan,1993

[4] Quinlan J R. Induction of decision tree[J]. Machine Learning 1986, 1(1):81-106

[5] 冯少荣. 决策树算法的研究与改进[J]. 厦门大学学报(自然科学版),2007,17(5):16-18

[6] 李慧慧,万武族. 决策树分类算法C4.5中连续属性过程处理的改进[M] TP301. 1006-2475(2010)08-0008-03

[7] 黄爱辉. 决策树C4.5算法的改进及应用[J].科学技术与工程, 2009,9(1):34-36

[8] J.R.Quinlan. Improved Use of Continuous Attributes in C4.5[J]. Journal of Artificial Intelligence Rearch 4 (1996) 77-90

学堂君的历史合辑:

菜鸟也爱数据分析之SPSS篇

问卷设计与统计分析

线性回归

量表信效度分析

聚类分析

时间序列分析

粉丝常见问题

欢迎添加:

【数据分析服务】微信号:LYJ_312

 【社群服务助手】微信号:spss_shequn

 【加入团队】:请点击招募,我们是认真的!

基于阿尔法贝塔剪枝算法的五子棋_C4.5算法剪枝2相关推荐

  1. java五子棋核心算法_五子棋的核心算法(转)

    五子棋是一种受大众广泛喜爱的游戏,其规则简单,变化多端,非常富有趣味性和消遣性.这里设计和实现了一个人机对下的五子棋程序,采用了博弈树的方法,应用了剪枝和最大最小树原理进行搜索发现最好的下子位置.介绍 ...

  2. java五子棋核心算法_五子棋的核心算法概述

    五子棋是一种受大众广泛喜爱的游戏,其规则简单,变化多端,非常富有趣味性和消遣性.这里设计和实现了一个人机对下的五子棋程序,采用了博弈树的方法,应用了剪枝和最大最小树原理进行搜索发现最好的下子位置.介绍 ...

  3. java五子棋核心算法_五子棋的核心算法 | 学步园

    五子棋是一种受大众广泛喜爱的游戏,其规则简单,变化多端,非常富有趣味性和消遣性.这里设计和实现了一个人机对下的五子棋程序,采用了博弈树的方法,应用了剪枝和最大最小树原理进行搜索发现最好的下子位置.介绍 ...

  4. JAVAFX基于α-β剪枝树的五子棋人机博弈

    Main主类: 背景图片和音乐就不传了 package application;import java.util.Optional; import javafx.application.Applica ...

  5. 怎样做一道阿尔法贝塔剪枝的题(图解)

    写在前边 现在的时间:2019-06-20 不讨论原理,不说为什么,只讲怎么做这道题. 上学期就是说要考这个,结果没考,这学期又说要考,不知道考不考.记下来,万一再说下学期考呢. 概念与做题依据 概念 ...

  6. 组合游戏系列5: 井字棋、五子棋AlphaGo Zero 算法实战

    来源 | MyEncyclopedia 上一篇我们从原理层面解析了AlphaGo Zero如何改进MCTS算法,通过不断自我对弈,最终实现从零棋力开始训练直至能够打败任何高手.在本篇中,我们在已有的N ...

  7. 人机版五子棋两种算法概述

    人机版五子棋是很有挑战性的.至今好像没有保证可以取胜的算法,但已经有不少写的很专业的五子棋程序了.我在编写五子棋的过程中参考了不少资料,发现人机五子棋大致有两种策略.在这儿总结一下,与大家共享.先说两 ...

  8. 白话DQN(DeepQ-Learning)强化学习算法(五子棋九宫格对弈实例)

    介绍 本文公开一个基于dqn的九宫格游戏和五子棋游戏自动下棋算法源码,并对思路进行讲解. 源码地址:https://gitee.com/lizhigong/DQN-9pointgame 最近学习DQN ...

  9. 字符串匹配算法 -- AC自动机 基于Trie树的高效的敏感词过滤算法

    文章目录 1. 算法背景 2. AC自动机实现原理 2.1 构建失败指针 2.2 依赖失败指针过滤敏感词 3. 复杂度及完整代码 1. 算法背景 之前介绍过单模式串匹配的高效算法:BM和KMP 以及 ...

最新文章

  1. SAP WM初阶TO单据里的Source Destination 存储类型和货架
  2. JAVA学习之路 (三) 运算符
  3. linux中引入python的tkinter模块
  4. LINQ语法之into
  5. Python中的字典与集合
  6. mongoose的用法(注:连接数据库)
  7. 优学派看视频显示连接服务器,为何优学派WiFi连起了却进不去腾讯网
  8. 橡皮擦的英语_英语单词这样写,老师想扣卷面分都难!(建议收藏学习)
  9. 实战教程:平面设计配色原则
  10. App渗透中常见的加密与解密
  11. python扫描器爬虫_Python扫描器-常用库-Request
  12. 【实战篇】39 # 如何实现世界地图的新冠肺炎疫情可视化?
  13. android studio查看源码
  14. 网络(HCNA00笔记)
  15. 《我的PaddlePaddle学习之路》笔记一——PaddlePaddle的安装
  16. Java多线程编程——线程同步与线程安全问题及synchronized关键字
  17. 唐纳德与子串 Hard
  18. 王振堂:今年收购PC厂商 宏碁要超联想成老三
  19. 学习尚硅谷Nginx整理的笔记
  20. 今天吃什么随机网页_今天吃什么?火锅!火锅食材营养大揭秘!

热门文章

  1. Ubuntu首页挂预告,预计今晚12点推出平板Ubuntu系统
  2. jQuery - Ajax解决跨域问题
  3. linux里强制覆盖,Linux cp命令无法强制覆盖
  4. fastjson maven依赖_Spring Boot 使用 Maven 定制一个 parent 简化开发
  5. 自动化测试,面试【必备题】
  6. PowerShell实现“机器人定时在企业微信群中发送消息”功能(上)
  7. 高校邦c语言程序设计答案,C语言程序设计(黑龙江工程学院)知到答案全套
  8. linux搭建博客day2
  9. php随机分配的方法,PHP生成指定随机字符串的简单实现方法
  10. keras如何在验证集加噪声_Keras从时域、频域处理音频分类问题(带详细注释)...