决策树ID3算法

来源:互联网 发布:湖北广电网络最新消息 编辑:程序博客网 时间:2024/06/08 18:02

经典的决策树算法

• ID3

• C4.5

• CART

都采用了贪心方法,决策树以自顶向下递 归的分治方式构造。

决策树算法:

1. 树以单个节点 N

开始,N代表D中的训练元组

如果样本都在同一个类,则该节点 N 成为树叶, 并用该类标记它 / 候选集合属性为空

2. 否则,算法调用属性选择方法确定分裂准则

选择能够最好的将样本分类的属性,该属性成为 节点的“测试”或“判定”属性。

3. 对测试属性每个已知的值,创建一个分支,并以 此划分样本

东华大学计算机科学与技术学院 -45

4. 算法使用同样的过程,递归的形成每个划分上的 样本判定树。一旦一个属性出现在一个节点上,就不在该节点的任何子节点上出现

5. 递归划分步骤停止的条件

• 给定节点的所有样本属于同一类

• 没有剩余属性可以用来进一步划分样本

• 没有剩余的样本

 

分类算法ID3

采用信息增益,熵entropy作为不纯度测量

选择属性的标准:选择具有最高信息增益的属性。该属性使结果分区中对元组分类所需要的信息量最小,反应这些分区中的最小,反映这些分区中的最小随机性或“不纯性”。

 

三个步骤:

1.原始信息熵

假设有两个类:P 和 N

集合S中含有p个类别为P的样本,n个类别为N的样本

将S中一个已知样本进行分类所需要的期望信息定义为:


2.新的信息熵

假设使用属性A将把集合S划分成 V份 { S 1 , S 2, …, S v } 

• 如果S i中包含p i个类别,为P 的样本, n i个类别为N的样本。那么新的信息需求就是:


3.信息增益

信息增益定义为:原有信息需求 – 新的信息需求

 

实际例子分析

14天的气象数据(指标包括outlook,temperature,humidity,windy),并已知这些天气是否打球(play)。如果给出新一天的气象指标数据:sunny,cool,high,TRUE,判断一下会不会去打球

outlook

temperature

humidity

windy

play

sunny

hot

high

false

no

sunny

hot

high

true

no

overcast

hot

high

false

yes

rainy

mild

high

false

yes

rainy

cool

normal

false

yes

rainy

cool

normal

true

no

overcast

cool

normal

true

yes

sunny

mild

high

false

no

sunny

cool

normal

false

yes

rainy

mild

normal

false

yes

sunny

mild

normal

true

yes

overcast

mild

high

true

yes

overcast

hot

normal

false

yes

rainy

mild

high

true

no

属性有4个:outlook,temperature,humidity,windy。我们首先要决定哪个属性作树的根节点。

1、在没有给定任何天气信息时,根据历史数据,我们只知道新的一天打球的概率是9/14,不打的概率是5/14。此时的熵为:

 

对每项指标分别统计:在不同的取值下打球和不打球的次数。

下面我们计算当已知变量outlook的值时,信息熵为多少。

 

outlook=sunny时,2/5的概率打球,3/5的概率不打球。entropy=0.971

outlook=overcast时,entropy=0

outlook=rainy时,entropy=0.971

而根据历史统计数据,outlook取值为sunny、overcast、rainy的概率分别是5/14、4/14、5/14,所以当已知变量outlook的值时,信息熵为:5/14 × 0.971 + 4/14 × 0 +5/14 × 0.971 = 0.693

这样的话系统熵就从0.940下降到了0.693,

信息增溢gain(outlook)为0.940-0.693=0.247

同样可以计算出gain(temperature)=0.029,

gain(humidity)=0.152,gain(windy)=0.048

gain(outlook)最大(即outlook在第一步使系统的信息熵下降得最快),所以决策树的根节点就取outlook。

接下来要确定下一个节点取temperature、humidity还是windy?

在已知outlook=sunny的情况,根据历史数据,按照根节点的求法分别计算gain(temperature)、gain(humidity)和gain(windy),选最大者作为下一个节点。

 

过拟合:产生的决策树出现过分适应数据的问题。即该决策树对训练数据可以得到很低的错误率,但是运用到测试数据却得到非常多的错误率。

1.数据中存在噪声和孤立点:许多决策树的分枝反应的噪音数据作为分割标准,导致决策树无法代表真实数据。

2.缺少代表性数据:训练数据没有包含所有具有代表性的数据,导致某一类数据无法很好的匹配。

 

防止分类中的过拟合

防止过拟合的两种方法:

1.    先剪枝:提前停止树的构建。如果在一个节点划分样本将导致低于预定义临界值的分裂(使用信息增益)。

缺点:选择一个合适的临界值往往很困难

2.    后剪枝:由完全生长的树剪去分枝。对于树中的每个非树叶节点,计算该节点上的子树被剪枝可能出现的期望错误率。实际中,先剪枝和后剪枝可以交叉使用,后剪枝所需的计算比先剪枝多,但通常可产生更可靠的树。

0 0
原创粉丝点击