决策树剪枝

决策树剪枝
决策树剪枝

剪枝理论,决策树的剪枝在上一节中没有仔细讲,趁这个机会学习了剪枝的基础理论,这里会详细学习。

决策树为什么(WHY)要剪枝?原因是避免决策树过拟合(Overfitting)样本。前面的算法生成的决策树非常详细并且庞大,每个属性都被详细地加以考虑,决策树的树叶节点所覆盖的训练样本都是“纯”的。因此用这个决策树来对训练样本进行分类的话,你会发现对于训练样本而言,这个树表现完好,误差率极低且能够正确得对训练样本集中的样本进行分类。训练样本中的错误数据也会被决策树学习,成为决策树的部分,但是对于测试数据的表现就没有想象的那么好,或者极差,这就是所谓的过拟合(Overfitting)问题。Quinlan教授试验,在数据集中,过拟合的决策树的错误率比经过简化的决策树的错误率要高。

现在问题就在于,如何(HOW)在原生的过拟合决策树的基础上,生成简化版的决策树?可以通过剪枝的方法来简化过拟合的决策树。剪枝可以分为两种:预剪枝(Pre-Pruning)和后剪枝(Post-Pruning),下面我们来详细学习下这两种方法:

PrePrune:预剪枝,及早的停止树增长,方法可以参考见上面树停止增长的方法。PostPrune:后剪枝,在已生成过拟合决策树上进行剪枝,可以得到简化版的剪枝决策树。其实剪枝的准则是如何确定决策树的规模,可以参考的剪枝思路有以下几个:

1:使用训练集合(Training Set)和验证集合(Validation Set),来评估剪枝方法在修剪结点上的效用

2:使用所有的训练集合进行训练,但是用统计测试来估计修剪特定结点是否会改善训练集合外的数据的评估性能,如使用Chi-Square(Quinlan,1986)测试来进一步扩展结点是否能改善整个分类数据的性能,还是仅仅改善了当前训练集合数据上的性能。

3:使用明确的标准来衡量训练样例和决策树的复杂度,当编码长度最小时,停止树增长,如MDL(Minimum Description Length)准则。

我们先看下使用思路一来解决问题的集中后剪枝方法:

Reduced-Error Pruning(REP,错误率降低剪枝)

该剪枝方法考虑将书上的每个节点作为修剪的候选对象,决定是否修剪这个结点有如下步骤组成:

1:删除以此结点为根的子树

2:使其成为叶子结点

3:赋予该结点关联的训练数据的最常见分类

4:当修剪后的树对于验证集合的性能不会比原来的树差时,才真正删除该结点

因为训练集合的过拟合,使得验证集合数据能够对其进行修正,反复进行上面的操作,从底向上的处理结点,删除那些能够最大限度的提高验证集合的精度的结点,直到进一步修剪有害为止(有害是指修剪会减低验证集合的精度)

REP是最简单的后剪枝方法之一,不过在数据量比较少的情况下,REP方法趋于过拟合而较少使用。这是因为训练数据集合中的特性在剪枝过程中被忽略,所以在验证数据集合比训练数据集合小的多时,要注意这个问题。

尽管REP有这个缺点,不过REP仍然作为一种基准来评价其它剪枝算法的性能。它对于两阶段决策树学习方法的优点和缺点提供了了一个很好的学习思路。由于验证集合没有参与决策树的创建,所以用REP剪枝后的决策树对于测试样例的偏差要好很多,能够解决一定程度的过拟合问题。

Pessimistic Error Pruning(PEP,悲观剪枝)

先计算规则在它应用的训练样例上的精度,然后假定此估计精度为二项式分布,并计算它的标准差。对于给定的置信区间,采用下界估计作为规则性能的度量。这样做的结果,是对于大的数据集合,该剪枝策略能够非常接近观察精度,随着数据集合的减小,离观察精度越来越远。该剪枝方法尽管不是统计有效的,但是在实践中有效。

PEP为了提高对测试集合的预测可靠性,PEP对误差估计增加了连续性校正(Continuity Correction)。PEP方法认为,如果:

成立,则Tt应该被剪枝,上式中:

其中,e(t)为结点t出的误差;i为覆盖Tt的叶子结点;Nt为子树Tt的叶子树;n(t)为在结点t处的训练集合数量。PEP采用自顶向下的方式,如果某个非叶子结点符合上面的不等式,就裁剪掉该叶子结点。该算法被认为是当前决策树后剪枝算法中经度比较高的算法之一,但是饿存在有缺陷。首先,PEP算法是唯一使用Top-Down剪枝策略,这种策略会导致与先剪枝出现同样的问题,将该结点的某子节点不需要被剪枝时被剪掉;另外PEP方法会有剪枝失败的情况出现。

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

可能有同学会对上面的那个不等式有疑问,可以参考这篇文章https://www.360docs.net/doc/1617883298.html,/s/blog_68ffc7a40100urn3.html中关于PEP剪枝部分内容。PEP方法实际上是将结点误差数目看做二项式分布,根据期望和方差得到的结果。

Cost-Complexity Pruning(CCP、代价复杂度)

CCP方法包含两个步骤:

1:从原始决策树T0开始生成一个子树序列{T0、T1、T2、...、Tn},其中Ti+1是从Ti总产生,Tn为根节点

2:从子树序列中,根据树的真实误差估计选择最佳决策树。

在步骤一中,生成子树序列{T0、T1、T2、...、Tn}的基本思想是从T0开始,裁剪Ti中关于训练数据集合误差增加最小的分支来得到Ti+1。实际上当一棵树T在结点t出剪枝时,它的误差增加直观上认为是:

其中R(t)为在结点t的子树被裁剪后结点t的误差,R(Tt)为在结点t的子树没被裁剪时子树T 的误差。不过剪枝后T的叶子树减少了|L(Ti)|-1,其中|L(Ti)|为子树Ti的叶子树,也就是说T的复杂性降低。因此考虑到树的复杂性因素,树分支被裁剪后误差增加率可以由下式决定:

Ti+1就是选择Ti中具有最小\alpha值所对应的剪枝树

如何从第一步骤产生的子树序列{T0、T1、T2、...、Tn}中选择出最佳决策树是CCP方法的第二步骤的关键。通常可以采用V-交叉验证(V-fold Cross-Validation)和基于独立剪枝数据集两种方法,这两种方法可以参考(Classification And Regression Trees,Breiman et.al)。当使用基于独立数据集剪枝时,和REP方法相比,CCP选择出来的最有决策树,不是从原始决策树T的所有可能子树中得到,所以有可能会找到到最有决策树。

其它如Minimum Error Pruning(MEP),Critical Value Pruning(CVP),Optimal Pruning(OPP),Cost-Sensitive Decision Tree Pruning(CSDTP)等方法,这些剪枝方法各有利弊,关注不同的优化点,感兴趣的同学可以学习下。

剪枝过程特别重要,所以在最优决策树生成过程中占有重要地位。有研究表明,剪枝过程的重要性要比树生成过程更为重要,对于不同的划分标准生成的最大树(Maximum Tree),在剪枝之后都能够保留最重要的属性划分,差别不大。反而是剪枝方法对于最优树的生成更为关键。重点理解这些剪枝方法的理论,对于最终最优树的生成是有好处的,其中上篇文章https://www.360docs.net/doc/1617883298.html,/blog/1844097中C4.5使用了PEP剪枝方法,本文的CART使用了CCP 的剪枝方法,实际上,不应该对于算法使用的剪枝方法过于追根究底,而是应该对于剪枝过程理解透彻,对于在何种场景下对于不同的数据类型使用何种的剪枝方法能够获得最优树的选择,才是真正理解了剪枝的理论和重要性。

决策树示例

决策树示例 %************************************************************** %* mex interface to Andy Liaw et al.'s C code (used in R package randomForest) %* Added by Abhishek Jaiantilal ( abhishek.jaiantilal@https://www.360docs.net/doc/1617883298.html, ) %* License: GPLv2 %* Version: 0.02 % % Calls Regression Random Forest % A wrapper matlab file that calls the mex file % This does training given the data and labels % Documentation copied from R-packages pdf % https://www.360docs.net/doc/1617883298.html,/web/packages/randomForest/randomForest.pdf % Tutorial on getting this working in tutorial_ClassRF.m %%************************************************************** % function model = classRF_train(X,Y,ntree,mtry, extra_options) % %___Options % requires 2 arguments and the rest 3 are optional % X: data matrix % Y: target values % ntree (optional): number of trees (default is 500). also if set to 0 % will default to 500 % mtry (default is floor(sqrt(size(X,2))) D=number of features in X). also if set to 0 % will default to 500 % % % Note: TRUE = 1 and FALSE = 0 below % extra_options represent a structure containing various misc. options to % control the RF % extra_options.replace = 0 or 1 (default is 1) sampling with or without % replacement % extra_options.strata = (not Implemented) % extra_options.sampsize = Size(s) of sample to draw. For classification, % if sampsize is a vector of the length the number of strata, then sampling is stratified by strata, % and the elements of sampsize indicate the numbers to be drawn from the strata. I don't yet know how this works. % extra_options.nodesize = Minimum size of terminal nodes. Setting this number larger causes

决策树算法介绍(DOC)

3.1 分类与决策树概述 3.1.1 分类与预测 分类是一种应用非常广泛的数据挖掘技术,应用的例子也很多。例如,根据信用卡支付历史记录,来判断具备哪些特征的用户往往具有良好的信用;根据某种病症的诊断记录,来分析哪些药物组合可以带来良好的治疗效果。这些过程的一个共同特点是:根据数据的某些属性,来估计一个特定属性的值。例如在信用分析案例中,根据用户的“年龄”、“性别”、“收入水平”、“职业”等属性的值,来估计该用户“信用度”属性的值应该取“好”还是“差”,在这个例子中,所研究的属性“信用度”是一个离散属性,它的取值是一个类别值,这种问题在数据挖掘中被称为分类。 还有一种问题,例如根据股市交易的历史数据估计下一个交易日的大盘指数,这里所研究的属性“大盘指数”是一个连续属性,它的取值是一个实数。那么这种问题在数据挖掘中被称为预测。 总之,当估计的属性值是离散值时,这就是分类;当估计的属性值是连续值时,这就是预测。 3.1.2 决策树的基本原理 1.构建决策树 通过一个实际的例子,来了解一些与决策树有关的基本概念。 表3-1是一个数据库表,记载着某银行的客户信用记录,属性包括“姓名”、“年龄”、“职业”、“月薪”、......、“信用等级”,每一行是一个客户样本,每一列是一个属性(字段)。这里把这个表记做数据集D。 银行需要解决的问题是,根据数据集D,建立一个信用等级分析模型,并根据这个模型,产生一系列规则。当银行在未来的某个时刻收到某个客户的贷款申请时,依据这些规则,可以根据该客户的年龄、职业、月薪等属性,来预测其信用等级,以确定是否提供贷款给该用户。这里的信用等级分析模型,就可以是一棵决策树。在这个案例中,研究的重点是“信用等级”这个属性。给定一个信用等级未知的客户,要根据他/她的其他属性来估计“信用等级”的值是“优”、“良”还是“差”,也就是说,要把这客户划分到信用等级为“优”、“良”、“差”这3个类别的某一类别中去。这里把“信用等级”这个属性称为“类标号属性”。数据集D中“信用等级”属性的全部取值就构成了类别集合:Class={“优”,

决策树算法研究及应用概要

决策树算法研究及应用? 王桂芹黄道 华东理工大学实验十五楼206室 摘要:信息论是数据挖掘技术的重要指导理论之一,是决策树算法实现的理论依据。决 策树算法是一种逼近离散值目标函数的方法,其实质是在学习的基础上,得到分类规则。本文简要介绍了信息论的基本原理,重点阐述基于信息论的决策树算法,分析了它们目前 主要的代表理论以及存在的问题,并用具体的事例来验证。 关键词:决策树算法分类应用 Study and Application in Decision Tree Algorithm WANG Guiqin HUANG Dao College of Information Science and Engineering, East China University of Science and Technology Abstract:The information theory is one of the basic theories of Data Mining,and also is the theoretical foundation of the Decision Tree Algorithm.Decision Tree Algorithm is a method to approach the discrete-valued objective function.The essential of the method is to obtain a clas-sification rule on the basis of example-based learning.An example is used to sustain the theory. Keywords:Decision Tree; Algorithm; Classification; Application 1 引言 决策树分类算法起源于概念学习系统CLS(Concept Learning System,然后发展 到ID3

基于决策树的分类方法研究

南京师范大学 硕士学位论文 基于决策树的分类方法研究 姓名:戴南 申请学位级别:硕士 专业:计算数学(计算机应用方向) 指导教师:朱玉龙 2003.5.1

摘要 厂 {数掘挖掘,又称数据库中的知识发现,是指从大型数据库或数据仓库中提取 具有潜在应用价值的知识或模式。模式按其作用可分为两类:描述型模式和预测型模式。分类模式是一种重要的预测型模式。挖掘分娄模式的方法有多种,如决 策树方法、贝叶斯网络、遗传算法、基于关联的分类方法、羊H糙集和k一最临近方、/ 法等等。,/驴 I 本文研究如何用决策树方法进行分类模式挖掘。文中详细阐述了几种极具代表性的决策树算法:包括使用信息熵原理分割样本集的ID3算法;可以处理连续属性和属性值空缺样本的C4.5算法;依据GINI系数寻找最佳分割并生成二叉决策树的CART算法;将树剪枝融入到建树过程中的PUBLIC算法:在决策树生成过程中加入人工智能和人为干预的基于人机交互的决策树生成方法;以及突破主存容量限制,具有良好的伸缩性和并行性的SI,lQ和SPRINT算法。对这些算法的特点作了详细的分析和比较,指出了它们各自的优势和不足。文中对分布式环境下的决策树分类方法进行了描述,提出了分布式ID3算法。该算法在传统的ID3算法的基础上引进了新的数掘结构:属性按类别分稚表,使得算法具有可伸缩性和并行性。最后着重介绍了作者独立完成的一个决策树分类器。它使用的核心算法为可伸缩的ID3算法,分类器使用MicrosoftVisualc++6.0开发。实验结果表明作者开发的分类器可以有效地生成决策树,建树时间随样本集个数呈线性增长,具有可伸缩性。。 ,,荡囊 关键字:数据挖掘1分类规则,决策树,分布式数据挖掘

决策树及线性最优化求解

土地开发权购买战略分析-决策树及线性最优化求解 一、相关计算 1、确定决策变量 2、确定目标函数 设修建大户型x座,小户型y座。 构建线性最优化模型 总利润max z = 185x+130y-100*500-(0.5x+0.4y)*100-(4x+3y)*10 = 185x+130y-50000-50x-40y-40x-30y=(185x-50x-40x)+(130y-40y-30y)-50000=95x+60y-50000 3、确定约束方程 0.41x+0.08y<=100 0.5x+0.4y<=400 4x+3y<=4000

4、线性最优化模型求解 采用 SOLVER宏,解出 X=500, y=375 5、公寓利润计算 A 全部建大户型大户型套数应为714,利润z=95x714-50000=17830万元 B 全部建小户型,小户型套数应为1000,利润z=60x1000-50000=10000万元 C大小户型混合修建,利润最大化条件下,大户型套数为500,小户型套数为375,利润z=95x500+60x375-50000=20000万元。 二、问题结论 1、根据决策树分析,海景公司应采取的最佳策略是,不请咨询公司投标。 2、根据决策树中计算的情报价值,咨询公司的情报价值为443万元,小于500 万元,因此不应考虑请调查咨询公司,其提出的500万元咨询费过高。 3、如果海景公司获得了地块的开发权,应该根据11月居民的投票结果来确定是 否完成土地的购买手续。如果投票结果改变计划,则完成购买手续,如果不 改变计划,则放弃购买。 4、如果完成了土地购买,根据利益最大化原则,采取大小户型混合修建的方式, 其中大户型500个,小户型375个。 5、如果采取了最佳策略,他可能获得的最大期望利益是20000万元。 附决策树分析图。

决策树剪枝

剪枝理论,决策树的剪枝在上一节中没有仔细讲,趁这个机会学习了剪枝的基础理论,这里会详细学习。 决策树为什么(WHY)要剪枝?原因是避免决策树过拟合(Overfitting)样本。前面的算法生成的决策树非常详细并且庞大,每个属性都被详细地加以考虑,决策树的树叶节点所覆盖的训练样本都是“纯”的。因此用这个决策树来对训练样本进行分类的话,你会发现对于训练样本而言,这个树表现完好,误差率极低且能够正确得对训练样本集中的样本进行分类。训练样本中的错误数据也会被决策树学习,成为决策树的部分,但是对于测试数据的表现就没有想象的那么好,或者极差,这就是所谓的过拟合(Overfitting)问题。Quinlan教授试验,在数据集中,过拟合的决策树的错误率比经过简化的决策树的错误率要高。 现在问题就在于,如何(HOW)在原生的过拟合决策树的基础上,生成简化版的决策树?可以通过剪枝的方法来简化过拟合的决策树。剪枝可以分为两种:预剪枝(Pre-Pruning)和后剪枝(Post-Pruning),下面我们来详细学习下这两种方法: PrePrune:预剪枝,及早的停止树增长,方法可以参考见上面树停止增长的方法。PostPrune:后剪枝,在已生成过拟合决策树上进行剪枝,可以得到简化版的剪枝决策树。其实剪枝的准则是如何确定决策树的规模,可以参考的剪枝思路有以下几个: 1:使用训练集合(Training Set)和验证集合(Validation Set),来评估剪枝方法在修剪结点上的效用 2:使用所有的训练集合进行训练,但是用统计测试来估计修剪特定结点是否会改善训练集合外的数据的评估性能,如使用Chi-Square(Quinlan,1986)测试来进一步扩展结点是否能改善整个分类数据的性能,还是仅仅改善了当前训练集合数据上的性能。 3:使用明确的标准来衡量训练样例和决策树的复杂度,当编码长度最小时,停止树增长,如MDL(Minimum Description Length)准则。 我们先看下使用思路一来解决问题的集中后剪枝方法: Reduced-Error Pruning(REP,错误率降低剪枝) 该剪枝方法考虑将书上的每个节点作为修剪的候选对象,决定是否修剪这个结点有如下步骤组成: 1:删除以此结点为根的子树 2:使其成为叶子结点 3:赋予该结点关联的训练数据的最常见分类 4:当修剪后的树对于验证集合的性能不会比原来的树差时,才真正删除该结点 因为训练集合的过拟合,使得验证集合数据能够对其进行修正,反复进行上面的操作,从底向上的处理结点,删除那些能够最大限度的提高验证集合的精度的结点,直到进一步修剪有害为止(有害是指修剪会减低验证集合的精度) REP是最简单的后剪枝方法之一,不过在数据量比较少的情况下,REP方法趋于过拟合而较少使用。这是因为训练数据集合中的特性在剪枝过程中被忽略,所以在验证数据集合比训练数据集合小的多时,要注意这个问题。 尽管REP有这个缺点,不过REP仍然作为一种基准来评价其它剪枝算法的性能。它对于两阶段决策树学习方法的优点和缺点提供了了一个很好的学习思路。由于验证集合没有参与决策树的创建,所以用REP剪枝后的决策树对于测试样例的偏差要好很多,能够解决一定程度的过拟合问题。 Pessimistic Error Pruning(PEP,悲观剪枝)

基于决策树的分类算法

1 分类的概念及分类器的评判 分类是数据挖掘中的一个重要课题。分类的目的是学会一个分类函数或分类模型(也常常称作分类器),该模型能把数据库中的数据项映射到给定类别中的某一个。分类可用于提取描述重要数据类的模型或预测未来的数据趋势。 分类可描述如下:输入数据,或称训练集(training set)是一条条记录组成的。每一条记录包含若干条属性(attribute),组成一个特征向量。训练集的每条记录还有一个特定的类标签(类标签)与之对应。该类标签是系统的输入,通常是以往的一些经验数据。一个具体样本的形式可为样本向量:(v1,v2,…,…vn:c)。在这里vi表示字段值,c表示类别。 分类的目的是:分析输入数据,通过在训练集中的数据表现出来的特性,为每一个类找到一种准确的描述或者模型。这种描述常常用谓词表示。由此生成的类描述用来对未来的测试数据进行分类。尽管这些未来的测试数据的类标签是未知的,我们仍可以由此预测这些新数据所属的类。注意是预测,而不能肯定。我们也可以由此对数据中的每一个类有更好的理解。也就是说:我们获得了对这个类的知识。 对分类器的好坏有三种评价或比较尺度: 预测准确度:预测准确度是用得最多的一种比较尺度,特别是对于预测型分类任务,目前公认的方法是10番分层交叉验证法。 计算复杂度:计算复杂度依赖于具体的实现细节和硬件环境,在数据挖掘中,由于操作对象是巨量的数据库,因此空间和时间的复杂度问题将是非常重要的一个环节。 模型描述的简洁度:对于描述型的分类任务,模型描述越简洁越受欢迎;例如,采用规则表示的分类器构造法就更有用。 分类技术有很多,如决策树、贝叶斯网络、神经网络、遗传算法、关联规则等。本文重点是详细讨论决策树中相关算法。

决策树剪枝的必要性

决策树剪枝的讨论 1.剪枝的必要性 现实世界的数据一般不可能是完美的,可能某些属性字段上缺值;可能缺少必要的数据而造成数据不完整;可能数据不准确、含有噪声甚至是错误的。基本的决策树构造算法没有考虑噪声,因此生成的决策树完全与训练例子拟合。在有噪声情况下,完全拟合将导致过分拟合,即对训练数据的完全拟合反而使对现实数据的分类预测性能下降。剪枝是一种克服噪声的基本技术,同时它也能使树得到简化而变得更容易理解。 2.剪枝的策略 有两种基本的剪枝策略: 1)预先剪枝:在生成树的同时决定是继续对不纯的训练子集进行划分还是停机。 2)后剪枝:是一种拟合-化简的两阶段方法。首先生成与训练数据完全拟合的一颗决策树,然后从树的叶子开始剪枝,逐步向根的方向剪。剪枝时要用到一个测试数据集合,如果存在某个叶子剪去后使得在测试集上的准确度或其他测度不降低(不变的更坏),则剪去该叶子;否则停机。 理论上,后剪枝要好于预先剪枝,但计算量大。 3.决策树剪枝的方法 1)CCP方法 CCP 方法主要包含两个步骤: (1) 从原始决策树T0开始生成一个子树序列T0,T1,、、,Tn。其中,T(i + 1)从Ti产生, Tn为根节点。(2)从第1步产生的子树序列中,根据树的真实误差估计选择最佳决策树。 在步骤1中,生成子树序列{T 0, T 1, , , T n}的基本思想是从T0开始,裁剪Ti中关于训练数据集误差增加最小的分枝来得到T(i+1)。实际上,当1棵树T在节点t处剪枝时,它的误差增加直观上认为是R(t)-R( T t ) , 其中,R(t)为在节点t的子树被裁剪后节点t的误差,R(Tt)为在节点t的子树没被裁剪时子树Tt的误差。然而, 剪枝后,T的叶子数减少了L(Tt)-1,其中,L(Tt)为子树Tt的叶子数,也就是说,T的复杂性减少了。因此,考虑树的复杂性因素,树分枝被裁剪后误差增加率由下式决定: A=[R(t) - R(Tt)]/[|L(Tt)|-1] T(i+1)就是选择Ti中具有最小A值所对应的剪枝树。 2)REP方法 REP 方法它需要一个分离数据集D用于剪枝。该方法的基本思路是,对于决策树T的每棵非叶子树S,用叶子替代这棵子树。如果S被叶子替代后形成的新树关于D的误差等于或小于S关于D所产生的误差,则用叶子替代子树S。

新决策树例子

rpart包的rpart函数 Iris数据集 library(rpart) #加载rpart包 head(iris) #看看iris数据集里有哪些变量 iris以鸢尾花的特征作为数据来源,数据集包含150个数据,分为3类,每类50个数据,每个数据包含4个属性分别是花萼长度、花萼宽带、花瓣长度、花瓣宽度 用gini度量纯度 iris.rp1=rpart(Species~.,data=iris,method="class",parms=list(split="g ini")) # rpart(formula, data, method, parms, ...)得到决策树对象,其中(1)formula是回归方程的形式,y~x1+x2+…,iris一共有5个变量,因变量是Species,自变量是其余四个变量,所以formula可以省略为 Species~. (2)data是所要学习的数据集 (3)method根据因变量的数据类型有如下几种选择:anova(连续型),poisson (计数型),class(离散型),exp(生存型),因为我们的因变量是花的种类,属于离散型,所以method选择class (4)parms可以设置纯度的度量方法,有gini(默认)和information(信息增益)两种。 plot(iris.rp1, uniform=T, branch=0, margin=0.1,main="Classification Tree\nIris Species by Petal and Sepal Length") #plot的对象是由rpart得到的决策树对象,可以把这课决策树画出来,其中 (1) uniform可取T,F两个值,T表示图形在空间上均匀分配 (2) branch刻画分支的形状,取值在0和1之间,branch=0是倒v型,branch=1是直角型,而当branch属于(0,1)时是梯形

完整word版,决策树算法总结

决策树研发二部

目录 1. 算法介绍 (1) 1.1.分支节点选取 (1) 1.2.构建树 (3) 1.3.剪枝 (10) 2. sk-learn中的使用 (12) 3. sk-learn中源码分析 (13)

1.算法介绍 决策树算法是机器学习中的经典算法之一,既可以作为分类算法,也可以作为回归算法。决策树算法又被发展出很多不同的版本,按照时间上分,目前主要包括,ID3、C4.5和CART版本算法。其中ID3版本的决策树算法是最早出现的,可以用来做分类算法。C4.5是针对ID3的不足出现的优化版本,也用来做分类。CART也是针对ID3优化出现的,既可以做分类,可以做回归。 决策树算法的本质其实很类似我们的if-elseif-else语句,通过条件作为分支依据,最终的数学模型就是一颗树。不过在决策树算法中我们需要重点考虑选取分支条件的理由,以及谁先判断谁后判断,包括最后对过拟合的处理,也就是剪枝。这是我们之前写if语句时不会考虑的问题。 决策树算法主要分为以下3个步骤: 1.分支节点选取 2.构建树 3.剪枝 1.1.分支节点选取 分支节点选取,也就是寻找分支节点的最优解。既然要寻找最优,那么必须要有一个衡量标准,也就是需要量化这个优劣性。常用的衡量指标有熵和基尼系数。 熵:熵用来表示信息的混乱程度,值越大表示越混乱,包含的信息量也就越多。比如,A班有10个男生1个女生,B班有5个男生5个女生,那么B班的熵值就比A班大,也就是B班信息越混乱。 基尼系数:同上,也可以作为信息混乱程度的衡量指标。

有了量化指标后,就可以衡量使用某个分支条件前后,信息混乱程度的收敛效果了。使用分支前的混乱程度,减去分支后的混乱程度,结果越大,表示效果越好。 #计算熵值 def entropy(dataSet): tNum = len(dataSet) print(tNum) #用来保存标签对应的个数的,比如,男:6,女:5 labels = {} for node in dataSet: curL = node[-1] #获取标签 if curL not in labels.keys(): labels[curL] = 0 #如果没有记录过该种标签,就记录并初始化为0 labels[curL] += 1 #将标签记录个数加1 #此时labels中保存了所有标签和对应的个数 res = 0 #计算公式为-p*logp,p为标签出现概率 for node in labels: p = float(labels[node]) / tNum res -= p * log(p, 2) return res #计算基尼系数 def gini(dataSet): tNum = len(dataSet) print(tNum) # 用来保存标签对应的个数的,比如,男:6,女:5 labels = {} for node in dataSet: curL = node[-1] # 获取标签 if curL not in labels.keys(): labels[curL] = 0 # 如果没有记录过该种标签,就记录并初始化为0 labels[curL] += 1 # 将标签记录个数加1 # 此时labels中保存了所有标签和对应的个数 res = 1

决策树,生成剪枝,CART算法

决策树 1. 原理 1.1 模型简介 决策树是一种基本的回归和分类算法。在分类问题中,可以认为是一系列if-then 规则的几何。决策树学通常包括三个步骤:特征选择,决策树的生成,决策树的修剪。 定义:决策树由结点和有向边组成,内部节点表示一个特征和属性,叶子结点表示一个类。 性质:决策树路径(或者对应的if-then 规则)具有互斥且完备性:每一个实例都被一条路径或规则所覆盖,而且只被这条路径或规则所覆盖。 决策树学习:能够正确对数据集进行分类的决策树可能有多个,也可能一个也没有,我们的目的是找到一个与训练数据集矛盾较小的,同时具有很好泛化能力的决策树。 特征选择:一种是在决策树学习开始的时候,对特征进行选择,只留下对训练数据有足够分类能力的特征,一种是在学习过程中对训练数据分割成自己的时候,选择最优的特征进行分割。 决策树生成:一般这是一个递归的规程。 决策树的剪枝:提高决策树的泛化能力。 1.2 特征选择 特征选择的准则一般是:信息增益和信息增益比 1.2.1 信息增益 a.信息增益:信息增益大的特征具有更强的分类能力,即选择信息增益值大的特征作为最优特征。 b.信息熵:表示变量的不确定性(在得知特征X 的信息时,使得Y 的信息不确定性减少的程度),熵越大,变量的不确定性越大。设X 是一个取有限值的离散型随机变量,其概率分布为: ()i i p X x p == 则随机变量X 的熵定义为:

1()log n i i i H X p p ==-∑ 注:若p i =0,定义0log 00=。其中若对数以2为底,熵的单位称为比特,若以e 为底,单位称为纳特。 c.条件熵:随机变量X 在给定条件下随机变量Y 的条件熵H (Y|X )表示:X 给定条件下Y 的条件概率分布的熵 关于X 的数学期望: 1(|)(|)n i i i H Y X p H Y X x ===∑ 其中,()i i p X x p ==。 当熵和条件熵有数据估计(特别是极大似然估计)得到时,被分别称为经验熵和经验条件熵。 信息增益: 特征A 对训练数据集D 的信息增益g(D|A)定义为: (,)()(|)g D A H D H D A =- 其中,()H D 为集合D 的经验熵,(|)H D A 为特征A 给定条件下D 的经验条件熵。 d.信息增益的计算方法。 设: 训练数据集D ,个数为|D|。 K 个类,分别为C k..每个类内个数|C k | 根据特征A ,能够将训练集划分为n 个子集:D 1,D 2,…D n 。|D I |为该子集的样本个数。 子集D i 中属于类C k 的个数|D ik |。 则计算信息增益的公式为: 数据集D 的信息熵: i 1||||()log()||||k K K C C H D D D ==-∑ 特征A 对数据集D 的经验条件熵: 111||||||||(|)()log()||||||||n n K i i ik ik i i i k i i D D D D H D A H D D D D D =====∑∑∑ 注:此公式意义:在特征A 作用下,将数据集D 分为多个D i 。这时关于D 的熵等于关于D i 熵的均值。 计算信息增益。

决策树算法总结

决策树决策树研发二部

目录 1. 算法介绍 (1) 1.1. 分支节点选取 (1) 1.2. 构建树 (3) 1.3. 剪枝 (10) 2. sk-learn 中的使用 (12) 3. sk-learn中源码分析 (13)

1. 算法介绍 决策树算法是机器学习中的经典算法之一,既可以作为分类算法,也可以作 为回归算法。决策树算法又被发展出很多不同的版本,按照时间上分,目前主要包括,ID3、C4.5和CART版本算法。其中ID3版本的决策树算法是最早出现的,可以用来做分类算法。C4.5是针对ID3的不足出现的优化版本,也用来做分类。CART也是针对 ID3优化出现的,既可以做分类,可以做回归。 决策树算法的本质其实很类似我们的if-elseif-else语句,通过条件作为分支依据,最终的数学模型就是一颗树。不过在决策树算法中我们需要重点考虑选取分支条件的理由,以及谁先判断谁后判断,包括最后对过拟合的处理,也就是剪枝。这是我们之前写if语句时不会考虑的问题。 决策树算法主要分为以下3个步骤: 1. 分支节点选取 2. 构建树 3. 剪枝 1.1. 分支节点选取 分支节点选取,也就是寻找分支节点的最优解。既然要寻找最优,那么必须要有一个衡量标准,也就是需要量化这个优劣性。常用的衡量指标有熵和基尼系数。 熵:熵用来表示信息的混乱程度,值越大表示越混乱,包含的信息量也就越多。比如,A班有10个男生1个女生,B班有5个男生5个女生,那么B班的熵值就比A班大,也就是B班信息越混乱。 Entropy = -V p ” 基尼系数:同上,也可以作为信息混乱程度的衡量指标。 Gini = 1 - p: l-L

决策树分类-8页文档资料

基于专家知识的决策树分类 概述 基于知识的决策树分类是基于遥感影像数据及其他空间数据,通过专家经验总结、简单的数学统计和归纳方法等,获得分类规则并进行遥感分类。分类规则易于理解,分类过程也符合人的认知过程,最大的特点是利用的多源数据。 如图1所示,影像+DEM就能区分缓坡和陡坡的植被信息,如果添加其他数据,如区域图、道路图土地利用图等,就能进一步划分出那些是自然生长的植被,那些是公园植被。 图1.JPG 图1 专家知识决策树分类器说明图 专家知识决策树分类的步骤大体上可分为四步:知识(规则)定义、规则输入、决策树运行和分类后处理。 1.知识(规则)定义 规则的定义是讲知识用数学语言表达的过程,可以通过一些算法获取,也可以通过经验总结获得。 2.规则输入

将分类规则录入分类器中,不同的平台有着不同规则录入界面。 3.决策树运行 运行分类器或者是算法程序。 4.分类后处理 这步骤与监督/非监督分类的分类后处理类似。 知识(规则)定义 分类规则获取的途径比较灵活,如从经验中获得,坡度小于20度,就认为是缓坡,等等。也可以从样本中利用算法来获取,这里要讲述的就是C4.5算法。 利用C4.5算法获取规则可分为以下几个步骤: (1)多元文件的的构建:遥感数据经过几何校正、辐射校正处理后,进行波段运算,得到一些植被指数,连同影像一起输入空间数据库;其他空间数据经过矢量化、格式转换、地理配准,组成一个或多个多波段文件。 (2)提取样本,构建样本库:在遥感图像处理软件或者GIS软件支持下,选取合适的图层,采用计算机自动选点、人工解译影像选点等方法采集样本。 (3)分类规则挖掘与评价:在样本库的基础上采用适当的数据挖掘方法挖掘分类规则,后基于评价样本集对分类规则进行评价,并对分类规则做出适当的调整和筛选。这里就是C4.5算法。 4.5算法的基本思路基于信息熵来“修枝剪叶”,基本思路如下: 从树的根节点处的所有训练样本D0开始,离散化连续条件属性。计算增益比率,取GainRatio(C0)的最大值作为划分点V0,将样本分为两个部分D11和D12。对属性C0的每一个值产生一个分支,分支属性值的相应样本子集被移到新生成的子节点上,如果得到的样本都属于同一个类,那么直接得到叶子结点。相应地将此方法应用于每个子节点上,直到节点的所有样本都分区到某个类中。到达决策树的叶节点的每条路径表示一条分类规则,利用叶列表及指向父结点的指针就可以生成规则表。

决策树算法的原理与应用

决策树算法的原理与应用 摘要:在机器学习与大数据飞速发展的21世纪,各种不同的算法成为了推动发 展的基石.而作为十大经典算法之一的决策树算法是机器学习中十分重要的一种算法。本文对决策树算法的原理,发展历程以及在现实生活中的基本应用进行介绍,并突出说明了决策树算法所涉及的几种核心技术和几种具有代表性的算法模式。 关键词:机器学习算法决策树 1.决策树算法介绍 1.1算法原理简介 决策树模型是一种用于对数据集进行分类的树形结构。决策树类似于数据结 构中的树型结构,主要是有节点和连接节点的边两种结构组成。节点又分为内部 节点和叶节点。内部节点表示一个特征或属性, 叶节点表示一个类. 决策树(Decision Tree),又称为判定树, 是一种以树结构(包括二叉树和多叉树)形式表达的 预测分析模型,决策树算法被评为十大经典机器学习算法之一[1]。 1.2 发展历程 决策树方法产生于上世纪中旬,到了1975年由J Ross Quinlan提出了ID3算法,作为第一种分类算法模型,在很多数据集上有不错的表现。随着ID3算法的 不断发展,1993年J Ross Quinlan提出C4.5算法,算法对于缺失值补充、树型结 构剪枝等方面作了较大改进,使得算法能够更好的处理分类和回归问题。决策树 算法的发展同时也离不开信息论研究的深入,香农提出的信息熵概念,为ID3算 法的核心,信息增益奠定了基础。1984年,Breiman提出了分类回归树算法,使 用Gini系数代替了信息熵,并且利用数据来对树模型不断进行优化[2]。 2.决策树算法的核心 2.1数据增益 香农在信息论方面的研究,提出了以信息熵来表示事情的不确定性。在数据 均匀分布的情况下,熵越大代表事物的越不确定。在ID3算法中,使用信息熵作 为判断依据,在建树的过程中,选定某个特征对数据集进行分类后,数据集分类 前后信息熵的变化就叫作信息增益,如果使用多个特征对数据集分别进行分类时,信息增益可以衡量特征是否有利于算法对数据集进行分类,从而选择最优的分类 方式建树。 如果一个随机变量X的可以取值为Xi(i=1…n),那么对于变量X来说,它 的熵就是 在得到基尼指数增益之后,选择基尼指数增益最大的特征来作为当前步骤的 分类依据,在之后的分类中重复迭代使用这一方法来实现模型的构造。 3. 决策树算法的优缺点 3.1决策树算法的优点[3] (1)计算速度快,算法简单,分类依据清晰 (2)在处理数据时,有很高的准确度,同时分类结果清晰,步骤明朗。 (3)可以处理连续和种类字段 (4)适合高维数据 3.2决策树算法的缺点 (1)决策树算法可以帮助使用者创建复杂的树,但是在训练的过程中,如

决策树C4.5算法属性取值优化研究

Computer Science and Application 计算机科学与应用, 2015, 5, 171-178 Published Online May 2015 in Hans. https://www.360docs.net/doc/1617883298.html,/journal/csa https://www.360docs.net/doc/1617883298.html,/10.12677/csa.2015.55022 C4.5 of Decision Tree Algorithm Optimization of Property Values Shifan Huang*, Yong Shen, Ruifang Wang, Huali Ma, Changgeng Chen, Yuhao Zhang School of Software, Yunnan University, Kunming Yunnan Email: *974794674@https://www.360docs.net/doc/1617883298.html, Received: May 7th, 2015; accepted: May 23rd, 2015; published: May 28th, 2015 Copyright ? 2015 by authors and Hans Publishers Inc. This work is licensed under the Creative Commons Attribution International License (CC BY). https://www.360docs.net/doc/1617883298.html,/licenses/by/4.0/ Abstract About the decision tree algorithm, the quantity of the attribute value types determines the quan-tity of the decision tree branch. Based on this, we put forward a new method which can optimize attribute value. The examples show that the method can optimize the quantity of the decision tree branch, and reach the purpose that simplifies the decision tree structure. This method has no ef-fect on the classification accuracy of the C4.5 algorithm. Keywords Decision Tree, C4.5 Algorithm, Property Values, Optimization 决策树C4.5算法属性取值优化研究 黄世反*,沈勇,王瑞芳,马华丽,陈长赓,张宇昊 云南大学软件学院,云南昆明 Email: *974794674@https://www.360docs.net/doc/1617883298.html, 收稿日期:2015年5月7日;录用日期:2015年5月23日;发布日期:2015年5月28日 摘要 在决策树算法中,属性取值种类的多少决定着决策树分支数量的多少。基于此,提出了一种新的属性取*通讯作者。

决策树实例计算

计算题 一 1.为生产甲产品,小行星公司设计了两个基本方案:一是建大工厂,二是建小工厂。如果销路好,3年以后考虑扩建。建大工厂需投资300万元,建小工厂需投资160万元,3年后扩建另需投资140万元。扩建后可使用7年,其年度损益值与大工厂相同。每种自然状态的预测概率及年度损益值如下表: 前 3 年 后 7 年 根据上述资料试用决策树法做出决策。 四、计算题(15分)

答:建大厂收益=581-300=281 建小厂收益=447-160=287 所以应选择建小厂方案。 二 山姆公司的生产设备已经落后,需要马上更新。公司有人认为,目前产品销路增长,应在更新设备的同时扩大再生产的规模。但也有人认为,市场形势尚难判断,不如先更新设备,3年后再根据形势变化考虑扩大再生产的规模问题。这样,该公司就面临着两个决策方案。决策分析的有关资料如下: A、现在更新设备,需投资35万元, 3年后扩大生产规模,另需投资40万元。 B、现在更新设备的同时扩大再生产的规模,需投资60万元。 C、现在只更新设备,在销售情况良好时,每年可获利6万元;在销售情况不好时,每年可获利4、5万元。 D、如果现在更新与扩产同时进行,若销售情况好,前3年每年可获利12万元;后7年每年可获利15万元;若销售情况不好,每年只获利3万元。 E、每种自然状态的预测概率如下表

前 3 年 后 7 年 根据上述资料试用决策树法做出决策。 答案:

结点7收益值=0、85×7 × 15+0、15 ×7 ×3=92、4(万元)

结点8收益值=0、85×7 ×6+0、15 ×7 ×4、5=40、4(万元) 结点9收益值=0、1×7 × 15+0、9 ×7 ×3=29、4(万元) 结点10收益值=0、1×7 × 6+0、9 ×7 ×4、5=32、6(万元) 结点1收益值=0、7×[52、4+(3 × 6)]+0、3 ×[32、6+(3 × 4、5)]=63、1(万元) 结点2收益值=0、7×[92、4+(3 × 12)]+0、3 ×[29、4+(3 × 3)]=101、4(万元) 答:用决策树法进行决策应选择更新扩产方案,可获得收益41、4万元。 三 某厂准备生产Y种新产品,对未来的销售前景预测不准,可能出现高需求、中需求、低需求三种自然状态。组织有三个方案可供选择:新建一个车间;扩建原有车间;对原有车间的生产线进行局部改造。三个方案在5年内的经济效益见下表(单位:万元): 0 1 请分别用悲观决策法、乐观决策法、最大最小后悔决策法做出决策。 悲观决策法指当存在几种自然状态的情况下,宁可把情况估计得坏一 些,从中选择一个收益最大的方案,决策稳妥可靠。按此准则,在低需求的自然状态下,5年内新建方案亏损160万,扩建方案保本,改造方案获利80万。改造方案最佳。 乐观决策法: 新建E=(0、7X600)+(1-0、7)X(-160)=372(万元) 扩建E=(0、7X400)+ (1-0、7)X0=280 (万元) 改造E=(0、7X300)+ (1-0、7)X80=234 (万元) 比较结果,新建方案最佳。 最大最小后悔决策,是用后悔值计算表进行计算的: 后悔值计算表

基于matlab的决策树

数据挖掘大作业 ——---------ID3决策树 学号:02105111 姓名:张旭

一.决策树算法 Ⅰ.决策树的基本概念 机器学习中,决策树是一个预测模型;它代表的是对象属性值与对象值之间的一种映射关系。树中每个节点表示某个对象,每个分叉路径则代表的某个可能的属性值,而每个叶结点则对应具有上述属性值的子对象。决策树仅有单一输出;若需要多个输出,可以建立独立的决策树以处理不同输出。 从数据产生决策树的机器学习技术叫做决策树学习,通俗说就是决策树。决策树学习也是数据挖掘中一个普通的方法。在这里,每个决策树都表述了一种树型结构,它由它的分支来对该类型的对象依靠属性进行分类。每个决策树可以依靠对源数据库的分割进行数据测试。这个过程可以递归式的对树进行修剪。当不能再进行分割或一个单独的类可以被应用于某一分支时,递归过程就完成了。另外,随机森林分类器将许多决策树结合起来以提升分类的正确率。 决策树同时也可以依靠计算条件概率来构造。决策树如果依靠数学的计算方法可以取得更加理想的效果。 决策树一般可归纳为2类:分类与预测。本文着重关于其分类的作用,并以此来构建一个完整的决策树。 Ⅱ.决策树分类器的优点 以此次用的ID3算法为例,以此算法产生的决策树分类器具有很多优点:决策树的构造不需要任何领域知识或参数设置,因此适合于探测式知识发现;决策树可以处理高维数据,推理过程完全依赖于属性变量的取值特点,可自动忽略目标变量没有贡献的属性变量,也为判断属性变量的重要性,减少变量的数目提供参考,同时对噪声数据具有很好的健壮性;决策树归纳的学习和分类步骤是简单和快速的,推理过程可以表示成If Then形式,并且具有很好的准确率;获取的知识用树的形式表示是直观的,并且容易被人理解。因而,决策树归纳分类是目前应用最广泛的归纳推理算法之一,在数据挖掘中受到研究者的广泛关注。 但是其缺点也是很多的,如:信息增益的计算依赖于特征数目较多的特征,而属性取值最多的属性并不一定最优。ID3是非递增算法。ID3是单变量决策树(在分枝节点上只考虑单个属性),许多复杂概念的表达困难,属性相互关系强调不够,容易导致决策树中子树的重复或有些属性在决策树的某一路径上被检验多次。抗噪性差,训练例子中正例和反例的比例较难控制。 二.ID3算法 ID3算法主要针对属性选择问题,是决策树学习方法中最具影响和最为典型的算法。ID3采用贪心方法,其中决策树以自顶向下递归的分治方式构造。大多数决策树归纳算法都沿用这种自顶向下的方法,从训练元组集和它们的相关联的类标号开始构造决策树。随着树的构建,训练集递归地划分成较小的子集。 ID3算法中关键的一步是属性选择度量,即选择分裂准则。其中的三种度量方法分别是信息增益、增益率和Gini指标。(示例算法选择了第一种方法)。当获取信息时,将不确定的内容转为确定的内容,因此信息伴着不确定性。 算法的基本策略如下: 1.选择一个属性放置在根节点,为每个可能的属性值产生一个分支

相关文档
最新文档