数据挖掘(决策树)_追逐梦想的顾咏丰_新浪博客

决策树(Design Tree)是数据挖掘的一种基本分类算法(Classification Algorithm),属于有监督学习(supervised learning),即它的训练数据是要带标记的。适用的场景就是一系列实例,每个实例属于不同的类别(称为Class 或 Label),且都可以被一系列的属性(称为Features 或 Attributes)所表示,当我们需要判断新来的实例的类别,我们就可以运用到决策树这个算法了。

一、分类思想

该算法的实质就像它的名字一样,建立一棵具有分类能力的树的模型,每一个节点代表一个属性,每一条边代表该属性的一个取值( 如果该属性是nominal,则每条边代表不同的值;如果该属性是numeric,则每条边代表不同的取值范围),叶子节点代表最终分成的类。

例如,我们现在有一个数据集,它 包含了 outlook天气),temperature温度),humidity湿度),windy是否有风)的属性,也包含一个类别标记,就是 play是否出去玩,作为类别),这些训练样本展示了属性和类别之间的复杂关系。

数据挖掘(决策树)


那么,现在我们的问题来了,当属性值是的时候,是否可以预测最终出去玩了没有(即 play 是 yes 还是 no)。

不要慌,决策树帮你预测,运用 C4.5 算法(决策树算法的一种)建立的决策树如下所示:

数据挖掘(决策树)

根据这个决策树,我们知道当拿到一个实例的时候,可以首先判断 outlook,如果是 overcast 就 play,如果是 sunny 或者是 rainy 就分别继续判断 humiditywindy 这2个属性,以此类推,那么对于之前的那个问题, outlook 属性值是 rainy,windy 属性值是 FALSE,那么最后的叶子节点是 yes,也就是决策树预测结果是 play = yes,出去玩!

那么算法是如何构建这一课决策树的呢?下面给出基本构造算法:可见整个树生成的过程其实是一个不断寻求最佳属性分割点,进行分割,直到满足停止准则而得到的一棵树,是一个迭代的过程。

算法:DT
输入:
  • D,训练样本集合
  • Attr_List,候选属性集合
  • Attr_Sel_Method,选取最佳属性的方法

    while( 不满足停止准则 ){
    寻找最佳属性分割点;
    分割节点;
    }
输出:
  • 一颗决策树

二、分裂准则

我们知道由于决策树迭代的性质,该算法需要在每一次迭代中找到一个最佳的属性,来对训练样本进行分类,那么如何从剩余的属性列表中选取最佳的属性(即如何设定分裂准则)呢,ID3,C4.5 和 CART 给出了自己不同的解决方案。

在20世纪70到80年代,机器学习的研究者 J.Ross Quinlan 开发了决策树算法,称之为迭代二分器 ID3,后来 Quinlan 再接再厉,发明了 C4.5 (ID3的后继)。1984年,多为统计学家 L.Breiman,J.Friedman,R.Olshen 和 C.Stone 出版了《Classification and Regression Trees》,提出了决策树的版本 CART ,值得注意的是他们的主要区别就在于如何选取最佳属性上。

1)在 ID3 中,用信息增益作为比较来选取属性,即选取信息增益最大的属性。

数据挖掘(决策树)

Info(D)也称作节点 D 的熵,是样本期望的信息值。我们可以这样理解,熵代表着分类的“不确定性”。举个例子,当一件事情的 2 个结果的概率分别是 0.5 时,Info(D) = -(0.5*log(0.5) + 0.5*log(0.5)) = 1;当 2 个结果的概率分别是 0 和 1 时,Info(D) = 0。某种程度上证明熵越小,事情越确定(0 比 1);熵越大,事情越不确定(0.5 比 0.5)。
数据挖掘(决策树)

Info_A(D) 计算的是按照属性 A 划分后,熵的期望值。

数据挖掘(决策树)

Gain(A) 定义为信息增益,是按照属性 A 来划分样本后,前后熵之差,可以认为差值越大,不确定性下降的越多,得到的分类结果越纯。我们的目标就是选取每一次是的划分后的分类结果最纯的属性。换句话说:每次通过计算,选取 Gain( A ) 最大的属性 A 作为下一次属性分割的对象。

2)Quinlan 在改进了 ID3 后,提出的 C4.5 算法中运用信息增益率来选取属性。之所以提出算法名称叫 C4.5 而不是 ID 3.1, ID 3.2 是因为决策树提出来后,太火爆了,学术界提出了很多改进版本(也可以看做是跟风之作),Quinlan 只好取了一个新名字,即 C4.5,它主要解决的问题有 2 个: a)ID3 无法对连续型属性进行分割;b)ID3 在属性划分时,更倾向于选择取值较多的属性。 

数据挖掘(决策树)

SplitInfo(D)表示的属性分裂信息,而 Gain 依旧是 ID3 中的信息增益。

数据挖掘(决策树)

GainRatio(A)就是信息增益率,我们希望它越大越好。换句话说:每次通过计算,选取 GainRate( A ) 最大的属性 A 作为下一次属性分割的对象。

3) CART 算法用基尼指数(Gini index)来选取最佳属性。

CART 算法全称是 Classification and Regression Tree,顾名思义,它既能处理回归问题(此时它是回归树),又能处理分类问题(此时它是分类树),这里我着重讨论 CART 作为分类树时的情况。Gini 系数是一种类似于信息增益的东西,定义如下

数据挖掘(决策树)

Gini (D) 表示节点 D 的基尼系数。化简后的结果是 1- \sum( pi ^ 2 )。

数据挖掘(决策树)

注意, CART 在划分属性的时候是二分划分,也就是说节点 D 只可能划分为 D1 和 D2。

数据挖掘(决策树)

最终,选取基尼系数之差最大的属性 A 作为下一个划分的属性对象。

三、停止准则

决策树不可能无限制的划分,总有一个停下来的规则。基本规则是:当划分后的节点里都是同一类别,或者已经没有待划分的属性了。当然为了避免过拟合(Overfitting),人们想到了用阈值来控制属性的划分,即 minSplit 规定划分前节点包含最小实例数,minBucket 规定划分后叶子节点包含最小实例数。

四、决策树的后续

当 CART,ID3,C4.5 出来后,(二十多年前的)人们并没有就此满足,后续仍有大量的改进版本出现。如能够处理大规模数据的 SLIQ(Supervised Learning In Quest)算法, SPRINT(Scalable PaRallelizable INduction of decision Trees )算法。采用预剪枝技术的 PUBLIC(A Decision Tree that Integrates Building and Pruning)算法等,另外,如随机树,随机森林等也在数据挖掘中占据着重要地位。

----------------
【参考】

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值