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

决策树,生成剪枝,CART算法
决策树,生成剪枝,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.2.2 信息增益比

(,)(,)()R A g D A g D A H D

. 其中()A H D 表示特征集D 关于特征A 的值得熵。

1.3 决策树的生成

1.3.1 ID3算法

a.选取特征:信息增益准则

b.算法终止条件:所有特征的信息增益均很小或者没有特征可以选择。

c.算法过程: Algorithm 1 ID3

输入

训练数据集D ,特征集A ,阈值E 输出

决策树T 1:

若D 中所有实例属于同一类C k ,则T 为单节点树,将C k 作为该结点类标记,返回T 。 2

若A=?,则T 为单节点树,将D 中实例数最多的类作为该结点类标记,返回T 。 3:

否则,计算A 中各特征对D 的信息增益,选取信息增益最大的特征A g 。 4:

如果特征A g 的信息增益小于E ,则T 为单结点树,将实例数最多的类作为该结点的类标记,返回T 。 5:

否则,对A g 将训练集划分为多个D i ,创建子结点。每个D i 中实例 数最多的类作为该子结点的类标记。返回此时构建的树T 。 6: 对每一个子结点,以D i 为训练集,{A-A g }为特征集,递归调用上

述5个步骤,得到字数T i ,返回T i .

1.3.2 C4.5算法

算法过程与ID3算法类似。不同的是该算法将信息增益比作为特征选择的准则。

1.4 决策树剪枝

原理:极小化决策树整体的损失函数。

方法:

设:

树T 的叶结点个数为|T|,

T 是树T 的一个叶结点,并且包含N t 个样本点。其中k 类的样本点个数为N tk 。

则,决策树的损失函数定义为:

||

a t 1()()||T t t C T N H T a T ==+∑

其中,1()log()K tk tk t k t t

N N H T N N ==-∑。 上式中,N t 的意义:

假设我们最后的分类结果是为每个样本都分配了一个叶子节点,则此时的经验熵为0(1log1=0)。然而极端情况基本是不存在的。我们一般都会有类别数量的限制。想像这样的一个情况,对于前i 个类我们为其每个分配一个样本,后面所有的样本归为一个类,此时损失可能比较小.但是这样的分类完全没有意义(单叶子节点过拟合,后面的欠拟合)。所以在每个叶子节点的经验熵前面乘以一个系数N t 。放大欠拟合部分的损失,以平衡损失函数。当然如果仅仅这样做,并不能防止过拟合,还应该加上正则项来防止过拟合。

对于上式般令C (T )等于左边项,表示模型对训练数据的预测误差。第二项为正则项,避免过拟合,|T|可以看做是对模型复杂度的度量。

树的剪枝算法:

Algorithm 2 树的剪枝算法

输入

树T ,参数a 输出

修剪后的决策树T 1:

计算每个结点的经验熵 2 递归的从树的叶结点向上回缩,计算前后整体树的损失函数值,如果减小或相等则剪枝。 3: 返回2,直至不能继续为止

1.4.1 REP(错误率降低剪枝) 上面所讲的方法叫做错误率降低剪枝

该算法以bottom-up 的方式遍历所有的子树,对于完全决策树中的每一个非叶子节点的子树,我们尝试着把它替换成一个叶子节点,该叶子节点的类别我们用子树所覆盖训练样本中存在最多的那个类来代替,这样就产生了一个简化决策树,然后比较这两个决策树在测试数据集中的表现,如果简化决策树在测试数据集中的错误比较少,那么该子树就可以替换成叶子节点。直至没有任何子树可以替换使得测试数据集的表现得以改进时,算法就可以终止。

1.4.2 PEP悲观错误剪枝

该方法基于训练数据的误差评估,因此不用单独找剪枝数据集。但训练数据也带来错分误差偏向于训练集,因此需要加入修正1/2。是自上而下的修剪。

具有T个节点的树的误差率衡量为:

其中,e(t)表示节点t之下的训练集的误判的个数。

N(t)表示节点t之下的训练集的总个数。

PEP算法流程:

INOUT :TREE

OUTPUT: PRUNING TREE

PROCESS:

For all nodes:

自顶向下逐层遍历:

If 剪枝前子树的错误数- 剪枝后叶子错误数>剪枝前分类错误个数的标准差删除该节点所在分支

END FOR

其中标准差的计算:

子树的错误个数经过验证可以近似看成是二项分布,就可以根据二项分布的标准差公式算出标准差。B(N,e)的二项分布,根据公式,均值为Ne,方差为Ne (1-e)。N为子树样本总个数。子树中有N的实例,就是进行N次试验,每次实验的错误的概率为e。

例子:

那么根据e的公式e=(7+0.5×3)/ 16 = 8.5 /16

= 0.53

根据二项分布的标准差公式,标准差为

(16×0.53×(1-0.53))^0.5 = 2.00

子树的错误数为“所有叶子实际错误数+0.5调整值” =7 + 0.5×3 = 8.5

把子树剪枝后,只剩下T4,T4的错误数为7+0.5=7.5

这样, 8.5-2 < 7.5,因此不满足剪枝标准,不能用T4替换整个子树。

https://www.360docs.net/doc/3216228340.html,/p/794d08199e5e

1.5 CART算法

1.5.1 CART生成

CART树假设决策树是二叉树。剪枝标准同样是损失函数最小。使用基尼系数

选择最优特征,选择基尼系数小得特征作为最优特征。

假设有k 个类,则概率分布的基尼系数定义为:

=1p (1)K

k k k G p p -∑()=

二分类问题的概率分布基尼系数为:

()2(1)G p p p =- (j )

在决策树问题中,利用基尼系数进行特征选择的原理是:

1212()()D D G G D G D D D

+(D,A )=

其中G(D 1),G(D 2)的计算方法利用式(j):来计算的。 Algorithm 3 CART 生成算法

输入

训练数据集D ,算法终止条件 输出

CART 决策树T 1: 在每个结点处,计算现有特征A 对该数据集的基尼系数。因为CART 是二叉树,然而有的特征却有多个值,根据A=a 可以将训练数据集

分成两个不同的子集,应分别计算A=a 时的基尼系数

2 在所有特征A 以及A 所有可能的切分点中,选择基尼系数最小的特

征及此时A 的取值a 为最优的切分点,从此结点生成两个子结点,

将数据集分到不同的子结点中去

3:

递归调用上述两个步骤,直到满足终止条件,返回决策树T

算法终止条件是样本个数小于预定阈值或只有同一类,样本集的基尼系数小于预定阈值,没有更多特征。

1.5.2 CART 剪枝(代价复杂度剪枝ccp )

剪枝的前提是剪枝后损失函数不增大:

根据子树的损失函数公式:

其中,T 为任意子树, 为对训练数据的预测误差(如基尼系数),|T|为树的叶结点个数,a>=0为参数, 为参数是a 时的子树T 的整体损失。a 的意义在于权衡对训练数据的拟合程度与模型的复杂度。

cpp 主要思想,不同的a ,可剪枝的情况也不一样,所以该方法就是计算出所有不同的情况,然后利用交叉验证的方法来选择最优的模型。

对整体树T 的任意内部节点t,设以t 为单节点树的子树损失函数为: ;且由损失函数公式得:

= ;

以t 为根节点的子树 的损失函数为:

易知:

与的大小关系关于a的形式为:

当a等于0或者充分小时,<;

当a增大到等于g(t)=时,=;

当a继续增大,则有:>;

关于统计学习方法这本书中P73页,g(t)表示剪枝后整体损失的减小程度,而我们每次剪枝反而是剪去g(t)最小的,解释:

我们知道要想使剪枝后的损失减小,a的取值应该大于等于g(t),而我们剪枝的过程是需要满足a逐渐增大(一方面模拟下面算法中a逐渐增大的过程,以得到所有情况下的最有剪枝策略;随着a的不断增大,总会有一颗子树该剪枝,而其他子树不需要剪枝,这样随着a的增大,才会不断的剪枝,最后回溯到整棵树的根节点。另一方面,a逐渐增大,后面剪枝选取的a仍然能够保证前面的剪枝操作是正确的。),从而得到n颗剪枝后的子树,最后通过交叉验证得到最优子树。

算法策略:

1.初始化参数:令a=,k=0(计数器),T=。

2.对该树的所有内部节点t,计算它的g(t)和a=min(a,g(t))。

3.对g(t)=a的节点进行剪枝,并通过多数表决的方法决定叶子节点t的类。

4.令k++,=T,,(Tk为-的最优子树)

5.如果,不是一根节点和两个叶子结点组成的树,则回到2.

6.采用交叉验证法在子树序列中选取最优子树.

说明:

实际上2,3的过程是根据g(t)从小到大的顺序依次剪去非叶子节点,并是此时的=g(t)。

此方法巧妙的地方在于:如果我们要不断增大a,这是一个连续过程,并不能够进行下去。而此方法通过剪枝的过程模拟a的不断增大。

1.6几种剪枝方法比较

1.7 优缺点比较

ID3:

算法一般会优先选择有较多属性值的特征(信息增益反映的给定一个条件以后不确定性减少的程度,必然是分得越细的数据集确定性更高,也就是条件熵越小,信息增益越大),因为属性值多的特征会有相对较大的信息增益. ID3只能对离散属性的数据集构造决策树。

C4.5采用信息增益率的方式去选择变量,避免了ID3优先选择有较多属性值的特征.C4.5还弥补了ID3中不能处理特征属性值连续的问题。但是,对连续属性值需要扫描排序,会使C4.5性能下降.

R语言-决策树算法知识讲解

R语言-决策树算法

决策树算法 决策树定义 首先,我们来谈谈什么是决策树。我们还是以鸢尾花为例子来说明这个问题。 观察上图,我们判决鸢尾花的思考过程可以这么来描述:花瓣的长度小于 2.4cm的是setosa(图中绿色的分类),长度大于1cm的呢?我们通过宽度来判别,宽度小于1.8cm的是versicolor(图中红色的分类),其余的就是 virginica(图中黑色的分类) 我们用图形来形象的展示我们的思考过程便得到了这么一棵决策树: 这种从数据产生决策树的机器学习技术叫做决策树学习, 通俗点说就是决策树,说白了,这是一种依托于分类、训练上的预测树,根据已知预测、归类未来。 前面我们介绍的k-近邻算法也可以完成很多分类任务,但是他的缺点就是含义不清,说不清数据的内在逻辑,而决策树则很好地解决了这个问题,他十分好理解。从存储的角度来说,决策树解放了存储训练集的空间,毕竟与一棵树的存储空间相比,训练集的存储需求空间太大了。 决策树的构建 一、KD3的想法与实现 下面我们就要来解决一个很重要的问题:如何构造一棵决策树?这涉及十分有趣的细节。 先说说构造的基本步骤,一般来说,决策树的构造主要由两个阶段组成:第一阶段,生成树阶段。选取部分受训数据建立决策树,决策树是按广度优先建立直到每个叶节点包括相同的类标记为止。第二阶段,决策树修剪阶段。用剩余数据检验决策树,如果所建立的决策树不能正确回答所研究的问题,我们要对决策树进行修剪直到建立一棵正确的决策树。这样在决策树每个内部节点处进行属性值的比较,在叶节点得到结论。从根节点到叶节点的一条路径就对应着一条规则,整棵决策树就对应着一组表达式规则。 问题:我们如何确定起决定作用的划分变量。 我还是用鸢尾花的例子来说这个问题思考的必要性。使用不同的思考方式,我们不难发现下面的决策树也是可以把鸢尾花分成3类的。 为了找到决定性特征,划分出最佳结果,我们必须认真评估每个特征。通常划分的办法为信息增益和基尼不纯指数,对应的算法为C4.5和CART。 关于信息增益和熵的定义烦请参阅百度百科,这里不再赘述。 直接给出计算熵与信息增益的R代码:

决策树算法介绍(DOC)

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

决策树剪枝

剪枝理论,决策树的剪枝在上一节中没有仔细讲,趁这个机会学习了剪枝的基础理论,这里会详细学习。 决策树为什么(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,悲观剪枝)

决策树算法介绍

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

决策树,生成剪枝,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 熵的均值。 计算信息增益。

决策树影像分析

决策树分类法 概念:决策树(Decision Tree),也就是一个类似于流程图的树型结构。一个决策树由一个根节点(Rootnodes)、一系列内部节点(Internal nodes)和分支以及若干个叶节点(Terminal nodes)组成,每个内部节点只有一个父节点和两个或多个子节点,节点和子节点之间形成分支。其中树的每个内部节点代表一个决策过程中所要测试的属性;每个分支代表测试的一个结果,不同属性值形成不同分支;而每个叶节点就代表一个类别,即图像的分类结果。树的最高层节点称为根节点,是整个决策树的开始。图1就是一棵用于遥感影像分类的二叉决策分类器的简单示意图。从中可以看到决策树的基本组成部分:根节点、分支和叶节点[18,19]。 决策树是一种直观的知识表示方法,同时也是高效的分 类器。它以信息论为基础,将复杂的决策形成过程抽象成易于 理解和表达的规则或判断。此方法利用信息论中的信息增益 寻找示例数据库中具有最大信息量的属性字段,形成一条规 则以此建立决策树的一个节点,依据这条规则对指定遥感图 像进行运算,所产生逻(真或假)派生出两类结果,或根据属性 的不同取值形成多个分支, 该过程可向下继续拓展,直至图 像分出类别(叶节点)。这种以自顶向下递归的方式构造判定 决策树的方法称之为“贪心算法”。 树的质量取决于分类精度和树的大小。一般来说,决策树 进行遥感图像分类主要有三个阶段组成:第一阶段为准备阶 段,输入图像,确定地物类型,统计训练区内各地物类型的信息 (光谱和非光谱信息); 第二阶段为构造阶段,选取具有较大信 息量的属性形成规则建立决策树的内部节点,直到每个叶节 点包括相同的类别为止;第三阶段为调整阶段,检查分类结果 是否能正确分出所需类别,如果不能,需要对决策树进行调整 (剪枝和增加节点)直到建立一棵正确的决策树。 1

项目6决策树和决策规则

项目6 决策树和决策规则 6.1 实验目的 (1)掌握使用决策树进行分类决策的操作方法,并学会对结果进行解释、提取合理的分类规则; (2)理解决策树模型相对于其他预测模型(如神经网络)的优势所在,如它的决策模型可以为自然语言构成的规则或为逻辑陈述; (3)了解较为流行的决策树模型的不同特征,如CHAID和CART; (4)了解决策树模型中的替代规则对于处理缺失值的优势,掌握操作方法; (5)学会使用决策树模型进行变量选择。 6.2 实验原理 数据库内容丰富,蕴藏大量信息,可以用来作出智能的决策。分类和预测是数据分析的两种形式,可以用来提取描述重要数据类的模型或预测未来的数据趋势。分类是预测分类标号,而预测建立连续值函数模型。在本章中,我们将学习利用决策树进行数据分类的技术。 决策树是一个类似于流程图的树结构,其中每个内部节点表示在一个属性上的测试,每个分枝代表一个测试输出,而每个树叶节点代表类或类分布。树的最顶层节点是根节点。有些决策树算法只产生二叉树,而另一些决策树算法可以产生非二叉树。 对于一个需要进行分类的数据,我们可以利用该数据的各个属性的值,在决策树的包括根节点在内的节点上对相应的数据的属性进行测试,这样就形成了一条由顶到底的或从根节点到某个叶子节点的路径。该数据所到达的叶子节点给出了该数据所应归属的类。 决策树容易转换成为分类规则。我们可以根据需要分类的数据在决策树中所经过的所有可能的路径得到一组分类规则,并利用分类规则对数据进行分类。 决策树的构造不需要任何领域知识或参数设置,因此适合于探测式知识发现。决策树可以处理高维数据。获取的知识用树的形式表示是直观的,并且容易理解。 决策树建立时,许多分枝可能反映的是训练数据中的噪声或离群点。树剪枝试图识别并剪去这种分枝,以提高对未知数据分类的准确性。 6.2.1 决策树归纳 目前比较有名的决策树算法大概有上百种,其中,最有影响的当属ID3、C4.5、C5.0,

完整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

决策树算法总结

决策树决策树研发二部

目录 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

决策树剪枝的必要性

决策树剪枝的讨论 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。

决策树分类算法

决策树分类算法 决策树是一种用来表示人们为了做出某个决策而进行的一系列判断过程的树形图。决策树方法的基本思想是:利用训练集数据自动地构造决策树,然后根据这个决策树对任意实例进行判定。 1.决策树的组成 决策树的基本组成部分有:决策节点、分支和叶,树中每个内部节点表示一个属性上的测试,每个叶节点代表一个类。图1就是一棵典型的决策树。 图1 决策树 决策树的每个节点的子节点的个数与决策树所使用的算法有关。例如,CART算法得到的决策树每个节点有两个分支,这种树称为二叉树。允许节点含有多于两个子节点的树称为多叉树。 下面介绍一个具体的构造决策树的过程,该方法

是以信息论原理为基础,利用信息论中信息增益寻找数据库中具有最大信息量的字段,建立决策树的一个节点,然后再根据字段的不同取值建立树的分支,在每个分支中重复建立树的下层节点和分支。 ID3算法的特点就是在对当前例子集中对象进行分类时,利用求最大熵的方法,找出例子集中信息量(熵)最大的对象属性,用该属性实现对节点的划分,从而构成一棵判定树。 首先,假设训练集C 中含有P 类对象的数量为p ,N 类对象的数量为n ,则利用判定树分类训练集中的对象后,任何对象属于类P 的概率为p/(p+n),属于类N 的概率为n/(p+n)。 当用判定树进行分类时,作为消息源“P ”或“N ”有关的判定树,产生这些消息所需的期望信息为: n p n log n p n n p p log n p p )n ,p (I 22++-++- = 如果判定树根的属性A 具有m 个值{A 1, A 2, …, A m },它将训练集C 划分成{C 1, C 2, …, C m },其中A i 包括C 中属性A 的值为A i 的那些对象。设C i 包括p i 个类P 对象和n i 个类N 对象,子树C i 所需的期望信息是I(p i , n i )。以属性A 作为树根所要求的期望信息可以通过加权平均得到

机器学习CART算法

机器学习CART算法 导读:人工智能机器学习有关算法内容,今天我们重点探讨一下CART算法。继上两篇决策树算法之ID3算法和ID3的改进算法-C4.5算法后,本文继续讨论另一种二分决策树算法-CART算法。我们知道十大机器学习中决策树算法占有两席位置,即C4.5算法和CART算法,可见CART算法的重要性。下面重点介绍CART算法。 不同于ID3与C4.5,CART为一种二分决策树,是满二叉树。CART算法由Breiman等人在1984 年提出,它采用与传统统计学完全不同的方式构建预测准则,它是以二叉树的形式给出,易于理解、使用和解释。由CART 模型构建的预测树在很多情况下比常用的统计方法构建的代数学预测准则更加准确,且数据越复杂、变量越多,算法的优越性就越显著。 CART算法既可用于分类也可用于回归。CART算法被称为数据挖掘领域内里程碑式的算法。 CART算法概念:CART(ClassificaTIon andRegression Tree)分类回归树是一种决策树构建算法。CART是在给定输入随机变量X条件下输出随机变量Y的条件概率分布的学习方法。CART假设决策树是二叉树,内部结点特征的取值为是和否,左分支是取值为是的分支,右分支是取值为否的分支。这样的决策树等价于递归地二分每个特征,将输入空间即特征空间划分为有限个单元,并在这些单元上确定预测的概率分布,也就是在输入给定的条件下输出的条件概率分布。 CART算法既可以处理离散型问题,也可以处理连续型问题。这种算法在处理连续型问题时,主要通过使用二元切分来处理连续型变量,即特征值大于某个给定的值就走左子树,或者就走右子树。 CART算法组成:1)决策树生成:基于训练数据集生成决策树,生成的决策树要尽量大;自上而下从根开始建立节点,在每个节点处要选择一个最好(不同算法使用不同指标来定义"最好")的属性来分裂,使得子节点中的训练数据集尽量的纯。

数据挖掘决策树算法概述

决策树是分类应用中采用最广泛的模型之一。与神经网络和贝叶斯方法相比,决策树无须花费大量的时间和进行上千次的迭代来训练模型,适用于大规模数据集,除了训练数据中的信息外不再需要其他额外信息,表现了很好的分类精确度。其核心问题是测试属性选择的策略,以及对决策树进行剪枝。连续属性离散化和对高维大规模数据降维,也是扩展决策树算法应用范围的关键技术。本文以决策树为研究对象,主要研究内容有:首先介绍了数据挖掘的历史、现状、理论和过程,然后详细介绍了三种决策树算法,包括其概念、形式模型和优略性,并通过实例对其进行了分析研究 目录 一、引言 (1) 二、数据挖掘 (2) (一)概念 (2) (二)数据挖掘的起源 (2) (三)数据挖掘的对象 (3) (四)数据挖掘的任务 (3) (五)数据挖掘的过程 (3) (六)数据挖掘的常用方法 (3) (七)数据挖掘的应用 (5) 三、决策树算法介绍 (5) (一)归纳学习 (5) (二)分类算法概述 (5) (三)决策树学习算法 (6) 1、决策树描述 (7) 2、决策树的类型 (8) 3、递归方式 (8) 4、决策树的构造算法 (8) 5、决策树的简化方法 (9) 6、决策树算法的讨论 (10) 四、ID3、C4.5和CART算法介绍 (10) (一)ID3学习算法 (11) 1、基本原理 (11) 2、ID3算法的形式化模型 (13) (二)C4.5算法 (14) (三)CART算法 (17) 1、CART算法理论 (17) 2、CART树的分支过程 (17) (四)算法比较 (19) 五、结论 (24) 参考文献...................................................................................... 错误!未定义书签。 致谢.............................................................................................. 错误!未定义书签。

决策树剪枝的方法与必要性

决策树剪枝的方法与必要性 1 决策树剪枝的必要性 本文讨论的决策树主要是基于ID3算法实现的离散决策树生成。ID3算法的基本思想是贪心算法,采用自上而下的分而治之的方法构造决策树。首先检测训练数据集的所有特征,选择信息增益最大的特征A建立决策树根节点,由该特征的不同取值建立分枝,对各分枝的实例子集递归,用该方法建立树的节点和分枝,直到某一子集中的数据都属于同一类别,或者没有特征可以在用于对数据进行分割。ID3算法总是选择具有最高信息增益(或最大熵压缩)的属性作为当前结点的测试属性。该属性使得结果划分中的样本分类所需的信息量最小,并反映划分的最小随机性或“不纯性”。这种信息理论方法使得对一个对象分类所需的期望测试数目达到最小,并尽量确保一棵简单的(但不必是最简单的)树来刻画相关的信息。 在ID3算法中,计算信息增益时,由于信息增益存在一个内在偏置,它偏袒具有较多值的属性,太多的属性值把训练样例分割成非常小的空间。因此,这个属性可能会有非常高的信息增益,而且被选作树的根结点的决策属性,并形成一棵深度只为一级但却非常宽的树,这棵树可以理想地分类训练数据。但是这个决策树对于测试数据的分类性能可能会相当差,因为它过分地完美地分割了训练数据,不是一个好的分类器。 在J.Mingers关于ID3算法的研究中,通过对五种包含噪音的学习样例的实验发现,多数情况下过度拟合导致决策树的精度降低了10%一25%。过度拟合不仅影响决策树对未知实例的分类精度,而且还会导致决策树的规模增大。一方面,叶子节点随分割不断增多。在极端的情况下,在一棵完成分割的决策树中,每个叶子节点中只包含一个实例。此时决策树在学习样例上的分类精度达到100%,而其叶子节点的数目等于学习样例中实例的数目。但是显然这棵决策树对任何未见的实例都是毫无意义的。另一方面,决策树不断向下生长,导致树的深度增加。因为每一条自根节点到叶子节点的路径都对应一条规则,所以树的深度越大,其对应的规则越长。作为一种蕴含于学习样例中的知识,这样一组过长的

决策树算法的原理与应用

决策树算法的原理与应用 摘要:在机器学习与大数据飞速发展的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)决策树算法可以帮助使用者创建复杂的树,但是在训练的过程中,如

Matlab决策树

Matlab决策树 matlab版本: matlab r2010b matlab决策树有两种:回归树Regrection Trees和分类树Classification Trees 涉及两个最基本的函数,建立决策树classregtree,进行预测eval。以前的版本会用treefit 建立决策树,用treedisp显示决策树,建议使用新的。我们使用classregtree建立一个决策树模型t,然后其他操作可以使用t.function实现,非常方便。详细信息在Browser中搜索classification tree和regression tree。 相关函数 下面介绍一些关键函数。 classregtree——构造决策树 语法 t = classregtree(X,y) t = classregtree(X,y,'Name',value) X是样本特征值,y是样本类别,Name\value是成对出现的可选项,具体作用参见下表。t是得到的决策树模型。如果y是确定的数值,得到的是回归树。如果y是分类变量、字符

数组或者字符串数组,得到的就是分类树。 view()——画出决策树 语法 view(t) view(t,param1,val1,param2,val2,...)

prune——决策树剪枝 语法 t2 = prune(t1,'level',level) t2 = prune(t1,'nodes',nodes) t2 = prune(t1) 说明 t2 = prune(t1,'level',level),剪掉t1中的后level层,0不剪枝,1表示最底层,2表示最深的两层,以此类推。 t2 = prune(t1,'nodes',nodes)。剪掉第nodes个分枝节点后的所有枝,如果nodes不是分枝节点就不会剪枝。 t2 = prune(t1)。剪枝控制选项,如果classregtree里的没有剪枝,可以在这里实现。 eval——用决策树进行预测 语法 yfit = eval(t,X) yfit = eval(t,X,s) [yfit,nodes] = eval(...) [yfit,nodes,cnums] = eval(...) [...] = t(X) [...] = t(X,s) 说明 t是决策树模型,X是预测样本,yfit是预测结果。s是剪枝选项,如果s是单个数值,就是几层剪枝。如果s是数值数组,那么返回一个矩阵,yfit(i)就是s(i)层剪枝的结果。nodes 返回该样本所处的节点位置。cnums返回预测的类别号,1、2、3等。 示例 loadfisheriris; t = classregtree(meas,species,'names',{'SL' 'SW' 'PL' 'PW'}) view(t) t2 = prune(t,’level’,1) t2.view [yfit,nodes,cnums]=eval(t,meas); matlab自带的决策树函数应该是最基本的ID3算法,功能十分完善。网上的其他算法,在画图、剪枝等方法可能有所不足。

数据挖掘算法CART

数据挖掘算法---CART 1. 前言 分类与回归树(Classification and Regression Trees, CART)是由四人帮Leo Breiman, Jerome Friedman, Richard Olshen与Charles Stone 于1984年提出,既可用于分类也可用于回归。本文将主要介绍用于分类的CART。CART被称为数据挖掘领域内里程碑式的算法。 不同于C4.5,CART本质是对特征空间进行二元划分(即CART生成的决策树是一棵二叉树),并能够对标量属性(nominal attribute)与连续属性(continuous attribute)进行分裂。 2. CART生成 前一篇提到过决策树生成涉及到两个问题:如何选择最优特征属性进行分裂,以及停止分裂的条件是什么。 特征选择 CART对特征属性进行二元分裂。特别地,当特征属性为标量或连续时,可选择如下方式分裂: An instance goes left if CONDITION, and goes right otherwise 即样本记录满足CONDITION则分裂给左子树,否则则分裂给右子树。 标量属性 进行分裂的CONDITION可置为不等于属性的某值;比如,标量属性Car Type取值空间为{Sports, Family, Luxury},二元分裂与多路分裂如下: 连续属性 CONDITION可置为不大于ε;比如,连续属性Annual Income,ε取属性相邻值的平均值,其二元分裂结果如下: 接下来,需要解决的问题:应该选择哪种特征属性及定义CONDITION,才能分类效果比较好。CART采用Gini指数来度量分裂时的不纯度,之所以采用Gini指数,是因为较于熵而言其计算速度更快一些。对决策树的节点t,Gini指数计算公式如下: Gini(t)=1?∑k [p(c k |t)] 2 (1) Gini指数即为1与类别c k的概率平方之和的差值,反映了样本集合的不确定性程度。Gini指数越大,样本集合的不确定性程度越高。分类学习过程的本质是样本不确定性程度的减少(即熵减过程),故应选择最小Gini指数的特征分裂。父节点对应的样本集合为D,CART选择特征A 分裂为两个子节点,对应集合为D L与D R;分裂后的Gini指数定义如下: G(D,A)=|D L ||D| Gini(D L )+|D R ||D| Gini(D R ) (2) 其中,|?|表示样本集合的记录数量。

基于决策树生成及剪枝的数据集优化及其应用

2018年1月计算机工程与设计Ja n.2018 第 39 卷第1 期 C O M P U T E R E N G IN E E R IN G A N D D E S I G N V o l.39 N o.1 基于决策树生成及剪枝的数据集优化及其应用 李国和123,王峰12,郑阳12,吴卫江123,洪云峰3,周晓明3 (1.中国石油大学(北京$地球物理与信息工程学院,北京102249# 2.中国石油大学(北京$油气数据挖掘北京市重点实验室,北京102249# 3.北京兆信信息技术股份有限公司石大兆信数字身份管理与物联网技术研究院,北京100029) 摘要:为提高智能模型的识别精度,增强其泛化能力,需要对用于智能建模的数据集中的对象类别异常进行检测和修正。在进行数据集和决策树形式化描述的基础上,将基尼指数增益率作为确定连续条件属性最优二分原则,采用递归算法 生成叶节点中对象为同一类别的二叉决策树。利用信息熵评价决策树剪除叶节点中对象的类别分布效果,实现数据集类别 异常的类别修正。决策树的生成和剪枝本质上是完成基于基尼指数和信息熵的连续条件属性数据空间分割和合并类别修正。实验和实际应用验证了决策树生成和剪枝是数据集类别优化的有效方法。 关键词:信息熵#基尼指数#决策树#剪枝#数据优化 中图法分类号!T P181 文献标识号:A文章编号%1000-7024 (2018)01-0205-07 d o i: 10. 16208/1. is s n l000-7024. 2018. 01. 036 O ptim ization of d ata set and its application based on co n stru ctio n and pruning of decision tree LI Guohe1’2’3,WANG Feng1’2,ZHENG Yang1’2,WUWe-iang1’2’3,HONG Yun-feng3,ZHOU Xiao-ming3 (1.C o lle g e o f G e o p h ysics and In fo rm a tio n E n g in e e rin g’C h in a U n iv e r s ity o f P e tro le u m (B e ijin g)’B e ijin g 102249’C h in a; 2.B e ijin g K e y L a b o f D a ta M in in g fo r P e tro le u m D a ta’C h in a U n iv e r s ity o f P e tro le u m (B e ijin g)’B e ijin g 102249’C h in a; 3.PanP ass In s t it u te o f D ig ita l Id e n tific a tio n M a n a g e m e n t and In te rn e t o f T h in g s’B e ijin g PanP ass In fo rm a tio n T e c h n o lo g y L im ite d C o rp o ra tio n’B e ijin g 100029’C h in a) A b s tra c t:T o im p ro v e th e re c o g n itio n accu racy and th e g e n e ra tio n a b ility o f in te llig e n t m o d e ls’i t is ne cessary to d e te ct and re vise th e a b n o rm a lity o f o b je cts in th e d a ta se t used to c o n s tru c t th e in te llig e n t m o d e ls.O n th e basis o f th e fo rm a l d e s c rip tio n o f d a ta-set and d e cisio n tre e’th e G in i-in d e x g a in w as used as b is e c tio n c rite rio n fo r c o n tin u o u s c o n d itio n a ttr ib u te s’and th e c o n s tru c tio n o f b in a ry d e cisio n tre e w as based on th e re c u rs iv e a lg o r ith m’a ll th e o b je cts in a ll w h o se le a f node m a tio n e n tro p y w as a p p lie d to e va lu a te th e d is tr ib u tio n o f o b je cts b y th e ir la b e ls in th e le a f nodes o f p ru n e d de cisio n tr e e’to im-p le m e n t th e re v is io n o f th e a b n o rm a l labe ls o f o b je cts.In n a tu re’th e c o n s tru c tio n and p ru n in g o f d e cisio n tre e w e re th e d iv is io n and m e rg in g o f co n tin u o u s d a ta space o f c o n d itio n a ttrib u te s u s in g G in i-in d e x and in fo rm a tio n e n tro p y to re vise th e o b je c ts)la-b e ls.A l l th e e x p e rim e n ts and a p p lic a tio n s v e r ify th a t th e c o n s tru c tio n and p ru n in g o f d e cisio n tre e are e ffe c tiv e’w h ic h are succe ssful m e th o d s fo r o p tim iz a tio n o f th e o b je c ts)la b e ls. K e y w o rd s:in fo rm a tio n e n tro p y;G in i in d e x;d e cisio n tre e;tre e p r u n in g;d a ta o p tim iz a tio n 收稿日期:2016-11-30;修订日期:2017-02-14 基金项目:国家863高技术研究发展计划基金项目(2009AA062802);国家自然科学基金项目(60473125);中国石油(CNPC)石油科技 中青年创新基金项目(05E7013);国家重大专项子课题基金项目(G5800-08-ZS-WX);中国石油大学(北京)克拉玛依校区科研启动基金 项目(RCYJ2016B03-001) 作者简介:李国和(1965 -),男,福建漳州人,博士,教授,博士生导师,研究方向为人工智能、机器学习、知识发现;王峰(1992-),男,山东济南人,硕士研究生,CCF会员,研究方向为数据挖掘与知识发现;郑阳(1991-),男,陕西咸阳人,硕士研究生,研究方向为 数据挖掘与知识发现;吴卫江$971-),男,河北唐山人,博士研究生,副教授,研究方向为人工智能、知识发现;洪云峰(1966 -),男,福建龙岩人,高级工程师,研究方向为ERP与数据管理;周晓明(1963 -),男,湖北武汉人,高级工程师,研究方向为信息管理系 统、决策支持。E-mail:98211650l@https://www.360docs.net/doc/3216228340.html,

相关文档
最新文档