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

本文介绍了基于阿尔法贝塔剪枝算法的五子棋决策树剪枝策略,重点讲解了悲观错误剪枝(PEP)和最小错误剪枝(MEP)。PEP利用连续校正公式对训练集误差进行校正,通过比较剪枝前后的错分样本率决定是否剪枝。MEP则通过期望错误率来寻找最佳剪枝方案,以达到在独立数据集上的最小期望错误率。这两种方法在实际应用中展现出较高的精度和效率。
摘要由CSDN通过智能技术生成

caf32324fe5555b343a4c052041401d2.gif

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

3dcb5c07155b7477d57afc90835a30da.png 6a0bd2a83b2b1f5ba8f161d363cd1408.png1

悲观错误剪枝

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

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

54dff50b1177b462b3ea28f3bff11e0c.png

  由上图我们可以看到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方法不需要分离训练集合和验证机和,对于数据量比较少的情况比较有利。而且,因为在剪枝过程中、树中的每颗子树最多需要访问一次,即使是在最坏的情况下,它的计算时间复杂度也只和非剪枝树的非叶子节点数目成线性关系,策略上也比其它方法相比效率更高,速度更快。

d282bae914d3c824cfe074245e1ff1e3.png

3dcb5c07155b7477d57afc90835a30da.png 6a0bd2a83b2b1f5ba8f161d363cd1408.png2

 最小错误剪枝

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)时则剪枝。

d282bae914d3c824cfe074245e1ff1e3.png 3dcb5c07155b7477d57afc90835a30da.png 6a0bd2a83b2b1f5ba8f161d363cd1408.png3

基于错误剪枝

这种算法可以被认为是悲观错误剪枝算法的改进,在剪枝过程中,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最小则不进行剪枝。

d282bae914d3c824cfe074245e1ff1e3.png 3dcb5c07155b7477d57afc90835a30da.png 6a0bd2a83b2b1f5ba8f161d363cd1408.png4

代价复杂度剪枝

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

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

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

d282bae914d3c824cfe074245e1ff1e3.png

参考文献

[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

16eba662f988910a08fd55c2762aec93.png

学堂君的历史合辑:

  菜鸟也爱数据分析之SPSS篇

  问卷设计与统计分析

  线性回归

  量表信效度分析

  聚类分析

  时间序列分析

  粉丝常见问题

欢迎添加:

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

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

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

5a18267c0c74b70a12445988110a0f11.gif

======================================================================== MICROSOFT FOUNDATION CLASS LIBRARY : fir ======================================================================== AppWizard has created this fir application for you. This application not only demonstrates the basics of using the Microsoft Foundation classes but is also a starting point for writing your application. This file contains a summary of what you will find in each of the files that make up your fir application. fir.dsp This file (the project file) contains information at the project level and is used to build a single project or subproject. Other users can share the project (.dsp) file, but they should export the makefiles locally. fir.h This is the main header file for the application. It includes other project specific headers (including Resource.h) and declares the CFirApp application class. fir.cpp This is the main application source file that contains the application class CFirApp. fir.rc This is a listing of all of the Microsoft Windows resources that the program uses. It includes the icons, bitmaps, and cursors that are stored in the RES subdirectory. This file can be directly edited in Microsoft Visual C++. fir.clw This file contains information used by ClassWizard to edit existing classes or add new classes. ClassWizard also uses this file to store information needed to create and edit message maps and dialog data maps and to create prototype member functions. res\fir.ico This is an icon file, which is used as the application's icon. This icon is included by the main resource file fir.rc. res\fir.rc2 This file contains resources that are not edited by Microsoft Visual C++. You should place all resources not editable by the resource editor in this file. ///////////////////////////////////////////////////////////////////////////// For the main frame window: MainFrm.h, MainFrm.cpp These files contain the frame class CMainFrame, which is derived from CFrameWnd and controls all SDI frame features. ///////////////////////////////////////////////////////////////////////////// AppWizard creates one document type and one view: firDoc.h, firDoc.cpp - the document These files contain your CFirDoc class. Edit these files to add your special document data and to implement file saving and loading (via CFirDoc::Serialize). firView.h, firView.cpp - the view of the document These files contain your CFirView class. CFirView objects are used to view CFirDoc objects. ///////////////////////////////////////////////////////////////////////////// Other standard files: StdAfx.h, StdAfx.cpp These files are used to build a precompiled header (PCH) file named fir.pch and a precompiled types file named StdAfx.obj. Resource.h This is the standard header file, which defines new resource IDs. Microsoft Visual C++ reads and updates this file. ///////////////////////////////////////////////////////////////////////////// Other notes: AppWizard uses "TODO:" to indicate parts of the source code you should add to or customize. If your application uses MFC in a shared DLL, and your application is in a language other than the operating system's current language, you will need to copy the corresponding localized resources MFC42XXX.DLL from the Microsoft Visual C++ CD-ROM onto the system or system32 directory, and rename it to be MFCLOC.DLL. ("XXX" stands for the language abbreviation. For example, MFC42DEU.DLL contains resources translated to German.) If you don't do this, some of the UI elements of your application will remain in the language of the operating system. /////////////////////////////////////////////////////////////////////////////
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值