ID3的基本思想和算法分析Word下载.docx

上传人:b****6 文档编号:21972266 上传时间:2023-02-02 格式:DOCX 页数:26 大小:232.51KB
下载 相关 举报
ID3的基本思想和算法分析Word下载.docx_第1页
第1页 / 共26页
ID3的基本思想和算法分析Word下载.docx_第2页
第2页 / 共26页
ID3的基本思想和算法分析Word下载.docx_第3页
第3页 / 共26页
ID3的基本思想和算法分析Word下载.docx_第4页
第4页 / 共26页
ID3的基本思想和算法分析Word下载.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

ID3的基本思想和算法分析Word下载.docx

《ID3的基本思想和算法分析Word下载.docx》由会员分享,可在线阅读,更多相关《ID3的基本思想和算法分析Word下载.docx(26页珍藏版)》请在冰豆网上搜索。

ID3的基本思想和算法分析Word下载.docx

在医疗领域中,成堆的电子数据可能已放在那儿很多年了,比如病人,症状,发病时间,发病频率以及当时的用药种类,剂量,住院时间等.在药物实验中,可能有很多种不同的组合,每种若加以实验,则成本太大,决策树方法可以被用来大减少实验次数.这种方法已被许多大的制药公司所采用.生物医学的大量研究大都集中在DNA数据的分析上.人类大约有105个基因,几乎是不计其数.因此,数据挖掘成为DNA分析中的强力工具,如:

对DNA序列间的相似搜索和比较;

应用关联分析对同时出现的基因序列的识别;

应用路径分析发现在疾病不同阶段的致病基因等.

电信业已经迅速从单纯的提供市话和长途服务变为综合电信服务,如语音,传真,移动电话,电子邮件,互联网接入服务.电信市场的竞争也变得越来越激烈和全方位化.利用数据挖掘来帮助理解商业行为,对电信数据的多维分析,检测非典型的使用模式以寻找潜在的盗用者,分析用户一系列的电信服务使用模式来改进服务,根据地域分布疏密性找出最急需建立网点的位置,确定电信模式,捕捉盗用待业,更好的利用资源和提高服务质量是非常必要的.借助数据挖掘,可以减少很多损失,保住顾客.

1.2信息论基础

为了寻找对样本进行分类的最优方法,我们要做的工作就是使对一个样本分类时需要问的问题最少(即树的深度最小).因此,我们需要某种函数据来衡量哪些问题将提供最为平衡的划分,信息增益就是这样的函数之一.

1.2.1信息熵的概念

那么信息熵的定义为:

设P是训练样本集,它包含n个类别的样本,这些类别分别用C1,C2,…,Cn,表示,若给定的概率分布Pi=(P1,P2,…Pn)表示Ci的概率,则由该分布传递的信息量称为P的信息熵,记为:

1.2.2信息增益的概念

信息增益用来衡量熵的期望减少值,因此使用属性A相对实例集合S进行的划分获得的信息增益gain(S,A)定义为:

gain(S,A)是指因为知道属性A的值后导致的熵的期望压缩.gain(S,A)越大,说明选择测试属性A对分类提供的信息越多.因为熵越小代表节点越纯,按照信息增益的定义,信息增益越大,熵的减小量也越大,节点就趋向于更纯.因此,可以对每个属性按照它们的信息增益大小排序,获得最大信息增益的属性被选择为分支属性.

1.3决策树算法

1.3.1决策树基本算法概述

决策树算法是一种常用的数据挖掘算法,它是从机器学习领域中逐渐发展起来的一种分类函数逼近方法.决策树学习的基本算法是贪心算法,采用自顶向下的递归方式构造决策树.目前利用决策树进行数据分类的方法已经被深入地研究,并且形成了许多决策树算法.

决策树算法的分类模型是一棵有向无环树,除了根节点以外,决策树的每个节点有且仅有一个父节点.

每个叶节点对应一个类标号,它的值就是使用决策树对未知样本分类的类标号的值.每个内部节点都对应一个分支方案,它包括用于节点分裂的属性A和分支的判断规则q.训练样本的属性分为数值属性和分类属性,数值属性的取值范围是一个连续的区间,比如实数集R;

而分类属性的取值范围则是离散值的集合,比如属性性别的取值范围就是集合{男,女}.如果属性A是数值属性,那么q的形式是A

S'是A的取值范围S(A)的子集.

在数学上可以对决策树分类器作如下表述:

给定样本集X,其中的样本属性c个类别,用Xi表示X中属于第i类的样本集.定义一个指标集I={1,2,…,c}和一个I的非空子集的集合

={I1,I2…,Ib}.

我们可以令当i

i’时,Ii

Ii’=

.一个广义决策规则f就是X到

的一个映射(记为f:

).若f把第i类的某个样本映射到包含i的那个子集Ik中,则识别正确.

设Q(X,I)是由样本集X和指标集I所形成的所有可能的映射的集合,则Q(X,I)可表示为由(ai,

i)所组成的集合,元素(ai,

i)称为一个节点,ai是该节点上表征这种映射的参数,

i={Ii1,Ii2…,

}是该节点上指标集Ii的非空子集的集合.令ni和nj是T(X,I)的两个元素,其中

则称ni为nj的父节点,或称nj为ni的子节点.

设B

Q(X,I)是节点的有限集,且n

B中没有一个元素是n的父节点,则称n是B的根节点.当B

Q(X,I)满足下列条件时,它就是一个决策树分类器.

(1)B中有一个并且只有一个根节点

(2)设ni和nj是B中的两个不同元素,则

(3)对于每一个i

I,B中存在一个节点

'中有一个元素是i(与它对应的n’的子节点叫叶节点,又称终止节点)

1.3.2决策树生成算法

通用的自顶向下构建决策树的算法.

决策树的深度优先构建算法

输入:

节点N,训练数据集D,分支指标SI

输出:

以节点N为根节点的基于数据集D,分支指标SI的决策树

Proceduremake_tree(N,D,SI)

初始化根节点

 在D中计算SI,求解节点N的分支方案;

 If(节点N满足分支条件)

   选择最好的分支方案将D分为D1,D2;

   创建N的子节点N1,N2;

   make_tree(N1,D1,SI)

   make_tree(N2,D2,SI)

 endif

end

1.3.3修剪算法介绍

在树的构建阶级生成的决策树依赖于训练样本,因此它可能存在对训练样本的过度适应问题.例如,训练样本中的噪声数据和统计波动可能会使决策树产生不必要的分支,从而导致在使用决策树模型对观察样本实施分类时出错.为了避免这种错误,需要对决策树进行修剪,除去不必要的分支.

给定一个假设空间H,假设h

H,如果存在假设h'

H,在训练样本集上h的分类错误率比h'小,但在整个样本空间上h'的分类错误率比h小,则称假设h过度适应训练样本集.

剪枝用于解决过度适应的问题.剪枝的原则包括:

(1)奥卡姆剃刀原则――"如无必要,勿增实体".即在与观察相容的情况下,就当选择最简单的一个;

(2)决策树越小就越容易理解,其存储与传输的代价也就越小;

(3)决策树越复杂,节点越多,每个节点包含的训练样本个数越少,则支持每个节点的假设的样本个数就越少,可能导致决策树在测试集上的分类错误率越大.但决策树过小也会导致错误率较大,因此,需要在树的大小与正确之间寻找均衡点.

常用的剪枝技术有预剪枝(pre-pruning)和后剪枝(post-pruning)两种.预剪枝技术限制决策树的过度生长(如CHAIDID3家族的ID3C4.5T算法等),后剪枝技术则是待决策树生成后再进行剪枝(如CART算法等).

预剪枝:

最直接的预剪枝方法是事先限定决策树的最大生长高度,使决策树不能过度生长.这种停止标准一般能够取得比较好的效果.不过指定树高度的方法要求用户对数据的取值分布有较为清晰的把握,而且需对参数值进行反复尝试,否则无法给出一个较为合理的树高度阈值.更普遍的作法是采用统计意义下的

2检验,信息增益等度量,评价每次节点分裂对系统性能的增益.如果节点分裂的增益值小于预先给定的阈值,则不对该节点进行扩展.如果在最好的扩展增益都小于阈值,即使有些节点的样本不属于同一类,算法也可以终止.选取阈值是困难的,阈值较高可能导致决策树过于简化,而阈值较低可能对决策树的化简不够充分.

预剪枝存在的视野效果的问题.在相同的标准下,当前的扩展不满足标准,但进一步的扩展有可能满足标准.采用预剪枝的算法有可能过早地停止决策树的构造,但由于不必生成完整的决策树,算法的效率很高,适合应用于大规模问题.

后剪枝:

后剪枝技术允许决策树过度生长,然后根据一定的规则,剪去决策树中那些不具有一般代表性的叶节点或分支.

后剪枝算法有自上而下的和自下而上的两种剪枝策略.自下而上的算法首先从最底层的内节点开始剪枝,剪去满足一定条件的内节点,在生成的新决策上递归调用这个算法,直到没有要可以剪枝的节点为止.自上而下的算法是从根节点开始向下逐个考虑节点的剪枝问题,只要节点满足剪枝的条件就进行剪枝.

决策树修剪的基本算法:

Prune_tee(节点N)

 If(节点N为叶节点)

  返回C(t)+1

minCost1=prune_tree(N1)

minCost2=prune_tree(N2)

minCostN=min{C(t)+1,Csplit(N)+1+minCost1+minCost2};

if(minCostN==C(t)+1)

 将N的子节点N1和N2从决策树中修剪掉;

返回minCostN

在算法中,t为属于节点N的所有训练样本,C(t)和Csplit(N)分别为将N作为叶节点和内部节点本构建决策树的代价,算法的基本思想就是要使构建决策树的总代价最小.计算C(t)的公式为

其中,n为t中样本的个数,k为t中样本的类别数,ni为t中属于类i的样本数.

计算Csplit(N)要分为两种情况:

(1)当节点N的分支属性为连续属性时,Csplit(N)=log2a+log2(v-1)

(2)当节点N的分支属性为离散属性时,Csplit(N)=log2a+log2(2v-2)

其中,a为决策树中用于节点分裂的属性的个数,v是分支属性可能取值的个数.

目前,决策树修剪策略主要有三种:

代价复杂度修剪(cost-complexitypruning),悲观修剪(pressimisticpruning)和基于最小描述长度(minimumdescriptionlength,MDL)原理的修剪.悲观修剪是非曲直Quinlan在1987年提出的,该方法将所有的样本用于树的构建和修剪,但是这种方法产生的树太大,并且有时候精度不高.代价复杂修剪使用了独立的样本用于修剪,这种策略适用于训练样本比较多的情况.在训练样本数目较少的情况下,需要将所有的样本既用于树的构建,又用于树的修剪,基于MDL原理的修剪是使用较多并且效果较好的方法.

基于MDL原理的决策树算法有两个部分:

一是决定数据编码代价和模型编码代价的编码模式,包括数据编码和模型编码;

二是比较各个子树,确定是否剪枝的算法.

MDL修剪过程是一个自底向上的递归过程.

修剪算法:

Pruning_the_tree(t)

Iftisaleafnodethen

Returncleaf=1;

//cleafisthecostofaleafnode

Else

Letcleafbeerrorsplus1;

//seeoption

(1)

Ifthesplitattributeisanumericattribute

Ltest=1

Countthenumberofsuchtestsusedinthetree(sayn);

Ltest=log2(n);

Cboth=1+ltest+pruning_the_tree(t.leftchild)+pruning_the_tree(t.rightchild);

Ifcleaf<

cboth

Prunecbothchildrenoft’s,andconverttintoaleaf;

Returncleaf;

Else

Returncboth

1.4决策树ID3

1.4.1ID3的基本概念和相关信息论定义

在数据仓库和数据挖掘的应用中,分类是一种非常重要的方法.分类的概念是在已有数据的基础上学会一个分类函数或构造出一个分类模型,即我们通常所说的分类器(Classifier).该函数或模型能够把数据库中的数据纪录映射到给定类别中的某一个,从而可以应用于数据预测.分类的主要算法有:

ID3算法是基于信息论(InformationTheory)的方法.给定一个记录的集合,每个记录都有相同的结构,并且每个记录是由若干个成对的属性值组成的.这些属性代表记录所属的类别.ID3需要解决的问题是构造一个决策树,从而可以由非类别的属性值正确地预测出类别属性的值.

ID3算法可以分为两个阶段,一是建立决策树阶段,一是利用决策树给实例分类的阶段.在ID3算法建立决策树的过程中,可以递归地进行:

首先,选择一个属性作为根节点,并为每一个可能的属性值生成一个分支.这样,把实例集合划分成多个子集合,该属性的每一个值划分为一个子集合.现在对每一个分支重复以上的过程,过程中使用的实例集合是属于该分支的实例.如果在一个节点的所有实例属于相同的类,则停止扩展那一部分子树.这样ID3的所建立的决策树中每一个非叶子节点对应着一个非类别属性,与属性中具有最大信息量的非类别属性相关联;

每个叶节点代表从树根到叶节点之间的路径所对应的记录所属的类别属性值.在ID3建立决策树的过程中,一个重要的环节就是分裂属性的选择.选择分裂属性时ID3中采用了信息增益的标准.

1.4.2ID3算法

基于ID3的基本思想,ID3的具体算法是:

FunctionID3

R:

一个非类别属性集合;

C:

类别属性;

S:

一个训练集.

返回一个决策树.

Begin

IfS为空,返回一个值为丢失值的单个节点;

IfS是由其值均为相同类别属性值的记录组成,返回一个带有该值的单个节点;

IfR为空,则返回一个单节点,其值为在S的记录中找出的频率最高的类别属性值;

将R中属性之间具有最大gain(D,S)值的属性赋给D;

将属性D的值赋给{dj∣j=1,2,…,m};

将分别由对应于D的值为dj的记录组成的S的子集赋给{sj∣j=1,2,…,m};

返回一棵树,其根标记为D,树枝标记为d1,d2,…,dm;

再分别构造以下树:

ID3(R-{D},C,S1),ID3(R-{D},C,S2),…,ID3(R-{D},C,S1);

EndID3

1.4.3一个实例的具体分析

下面就以有关天气问题的数据为例仔细介绍一下信息增益的概念和最佳分裂属性的选择过程.

有关天气问题的数据如表一所示:

outlook

(类型)

temperature

(温度)

humidity

(湿度)

windy

(风)

play

(玩)

sunny

hot

high

False

no

True

overcast

yes

rainy

mild

cool

normal

一个属性的信息增益是由于使用这个属性分割实例而导致的期望熵降低.例如,属性A相对实例集合S的信息增益Gain(S,A)定义为:

对表一中的各非类别属性计算信息增益的过程如下:

1.计算总的信息熵

信息熵的定义为:

若给定的概率分布P=(P1,P2,…Pn),则由该分布传递的信息量称为P的信息熵,记为:

在没有建立决策树之前,训练实例集合包括9个yes和5个no节点,相应总的信息熵为info([9,5])=0.940bits.

2.计算以outlook属性为根节点的树分裂后各个节点的平均信息熵

如图以outlook属性为根节点建立的树为:

考虑一下每个节点的实例数目,我们计算一下他们的平均信息值;

第一个和第三个节点有5个实例,第二个节点有4个,第三个节点有5个:

info([2,3],[4,0],[3,2])=(5/14)×

0.971+(4/14)×

0+(5/14)×

0.971=0.693bits

3.计算属性outlook的信息获得

gain(outlook)=info([9,5])-info([2,3],[4,0],[3,2])=0.940-0.693=0.247bits,

4.重复上述步骤,得到temperature、humidity和windy的信息获得分别为:

gain(temperature)=0.029bits

gain(humidity)=0.152bits

gain(windy)=0.048bits,

计算出各个非类别属性的信息获得后,我们由此来选择信息获得最大的属性作为分裂属性,由上述计算结果可以看出属性outlook的信息获得最大,则选择其作为分裂属性来建立决策树.

然后我们继续递归下去,图二表明当outlook=sunny时,可能在节点产生一个更深的分支.很明显,还依照outlook(观看)属性来划分下一层分支得不到任何新的东西,所以只考虑其它三个属性.他们各自的信息获得值是

gain(temperature)=0.571bits

gain(humidity)=0.971bits

gain(windy)=0.020bits,

所以我们选择humidity(湿度)作为这个点的划分属性,没有必要作进一步的划分了,这个分支结束.

继续用同样的方法得到图三的weather(天气)数据的决策树.理想的情况是当所有叶子节点是纯洁的时候过程结束.即,他们所包含的实例属于同一类.然而,也许不可能达到这种状态

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 农学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1