大部分内容引用自:https://blog.csdn.net/HerosOfEarth/article/details/52347820 =.=

引言:

决策树(Decision Tree)是一种基本的分类与回归方法,本文主要讨论分类决策树。决策树模型呈树形结构,在分类问题中,表示基于特征对实例进行分类的过程。它可以认为是if-then规则的集合,也可以认为是定义在特征空间与类空间上的条件概率分布。相比朴素贝叶斯分类,决策树的优势在于构造过程不需要任何领域知识或参数设置,因此在实际应用中,对于探测式的知识发现,决策树更加适用。

决策树模型

1.定义

分类决策树模型是一种描述对实例进行分类的树形结构。决策树由结点和有向边组成。结点有两种类型:内部节点和叶节点,内部节点表示一个特征或属性,叶节点表示一个类。
分类的时候,从根节点开始,对实例的某一个特征进行测试,根据测试结果,将实例分配到其子结点;此时,每一个子结点对应着该特征的一个取值。如此递归向下移动,直至达到叶结点,最后将实例分配到叶结点的类中。
举一个通俗的栗子,各位立志于脱单的单身男女在找对象的时候就已经完完全全使用了决策树的思想。假设一位母亲在给女儿介绍对象时,有这么一段对话:

  1. 母亲:给你介绍个对象。
  2. 女儿:年纪多大了?
  3. 母亲:26。
  4. 女儿:长的帅不帅?
  5. 母亲:挺帅的。
  6. 女儿:收入高不?
  7. 母亲:不算很高,中等情况。
  8. 女儿:是公务员不?
  9. 母亲:是,在税务局上班呢。
  10. 女儿:那好,我去见见。

这个女生的决策过程就是典型的分类决策树。相当于对年龄、外貌、收入和是否公务员等特征将男人分为两个类别:见或者不见。假设这个女生的决策逻辑如下:

决策树算法(上)

上图完整表达了这个女孩决定是否见一个约会对象的策略,其中绿色结点(内部结点)表示判断条件,橙色结点(叶结点)表示决策结果,箭头表示在一个判断条件在不同情况下的决策路径,图中红色箭头表示了上面例子中女孩的决策过程。

这幅图基本可以算是一棵决策树,说它“基本可以算”是因为图中的判定条件没有量化,如收入高中低等等,还不能算是严格意义上的决策树,如果将所有条件量化,则就变成真正的决策树了。(以上的决策树模型纯属瞎编乱造,不代表任何女生的择偶观,旨在直观理解决策树)

2.决策树与if-then规则

现在我们可以更抽象一些。决策树可以看成一个if-then规则的集合:由决策树的根结点到叶结点的每一条路径构建一条规则;路径上的内部结点的特征对应着规则的条件,而叶结点对应着分类的结论。决策树的路径和其对应的if-then规则集合是等效的,它们具有一个重要的性质:互斥并且完备。这里的意思是说:每一个实例都被一条路径或一条规则所覆盖,而且只被一条规则所覆盖。

3.决策树与条件概率分布

决策树还是给定特征条件下类的条件概率分布的一种表示。该条件分布定义在特征空间的划分(partition)上,特征空间被划分为互不相交的单元(cell),每个单元定义一个类的概率分布就构成了一个条件概率分布。决策树的一条路径对应于划分中的一个单元。决策树所表示的条件概率分布由各个单元给定条件下类的条件概率分布组成。给定实例的特征X,一定落入某个划分,决策树选取该划分里最大概率的类作为结果输出。如图:

决策树算法(上)

图(a)表示该实例的特征向量是二维的(即具有两个特征),图(b)表示给定特征X分类属于+1类的条件概率分布。图中的方块有些地方完全没有,比如x(2)轴上[a2,1]这个区间,说明只要X落在这里,Y就一定是-1的,同理对于[0,a1][0,a2]围起来的一定是+1的。有些地方只有一半,比如x(1)轴上[a1,1]这个区间,说明决策树认为X落在这里,Y只有一半概率是+1的,根据选择条件概率大的类别的原则,就认为Y1的(因为不满足P(Y=+1|X)>0.5)。

4.决策树的学习

决策树学习算法包含特征选择、决策树的生成与剪枝过程。决策树的学习算法通常是递归地选择最优特征,并用最优特征对数据集进行分割。开始时,构建根结点,选择最优特征,该特征有几种值就分割为几个子集,每个子集分别递归调用此方法,返回结点,返回的结点就是上一层的子结点。直到所有特征都已经用完,或者数据集只有一维特征为止。

二、特征选择

特征选择问题希望选取对训练数据具有良好分类能力的特征,这样可以提高决策树学习的效率。如果利用一个特征进行分类的结果与随机分类的结果没有很大差别,则称这个特征是没有分类能力的(对象是否喜欢打游戏应该不会成为关键特征吧,也许也会……)。为了解决特征选择问题,找出最优特征,先要介绍一些信息论里面的概念。

1.熵(entropy)

熵是表示随机变量不确定性的度量。设X是一个取有限个值的离散随机变量,其概率分布为:

P(X=xi)=pi,i=1,2,....,n

则随机变量的熵定义为
H(X)=i=1npilogpi

另外,0log0=0,当对数的底为2时,熵的单位为bit;为e时,单位为nat。
熵越大,随机变量的不确定性就越大。从定义可验证

0H(p)logn

2.条件熵(conditional entropy)

设有随机变量(X,Y)其联合概率分布为

P(X=xi,Y=yi)=pij,i=1,2,...,n;j=1,2,...,m

条件熵H(Y|X)表示在已知随机变量X的条件下随机变量Y的不确定性。随机变量X给定的条件下随机变量Y的条件熵H(Y|X),定义为X给定条件下Y的条件概率分布的熵对X的数学期望

H(Y|X)=i=1npiH(Y|X=xi)

这里,pi=P(X=xi),i=1,2,,n

3.信息增益(information gain)

信息增益表示得知特征X的信息而使得类Y的信息的不确定性减少的程度。特征A对训练数据集D的信息增益g(D,A),定义为集合D的经验熵H(D)与特征A给定条件下D的经验条件熵H(D|A)之差,即

g(D,A)=H(D)H(D|A)

这个差又称为互信息。信息增益大的特征具有更强的分类能力。
根据信息增益准则的特征选择方法是:对训练数据集(或子集)计算其每个特征的信息增益,选择信息增益最大的特征。
计算信息增益的算法如下:
输入:训练数据集D和特征A
输出:特征A对训练数据集D的信息增益g(D,A)
(1)计算数据集D的经验熵H(D)

H(D)=k=1k|Ck||D|log2|Ck||D|

(2)计算特征A对数据集D的经验条件熵H(D|A)
H(D|A)=k=1k|Di||D|H(Di))=k=1k|Di||D|k=1k|Dik||Di|log2|Dik||Di|

(3)计算信息增益

g(D,A)=H(D)H(D|A)

4.信息增益比(information gain ratio)

特征A对训练数据集D的信息增益比gR(D,A)定义为其信息增益g(D,A)与训练数据集D关于特征A的值的熵HA(D)之比,即

gR(D,A)=g(D,A)HA(D))

其中,HA(D)=i=1n|Di||D|log2|Di||D|,n是特征A取值的个数。

其中,设训练数据为D|D|表示其样本容量,即样本个数。设有K个类Ckk=12,...,k|Ck|为属于Ck的样本个数,k=1k|Ck|=|D| ,设特征A的取值将D划分成n个子集D1,D2,...,Dn ,|Di|Di的样本个数,i=1n|Di|=|D| .记子集Di中属于类Ck的样本集合为Dik,即Dik=DiCk ,|Dik|Dik 的样本个数

例1 表5.1 是由一个15个样本组成的贷款训练数据,数据包括贷款申请人的4个特征:第1个特征是年龄,有3个可能值:青年,中年,老年,第2个特征是有工作,有2个可能值,第3个特征是有自己的房子,有2个可能值,第4个特征是贷款情况,有3个可能值,最后一列是类别,是否同意贷款,有2个取值
决策树算法(上)

解:首先计算经验熵H(D)
一共有两类,贷款的有9个数据,不贷款的有6个数据,所以:

H(D)=915log2915615log2615=0.971

然后计算各特征对数据集D的信息增益,分别以A1,A2,A3,A4表示年龄,有工作,有自己的房子和信贷情况4个特征,则
(1)

g(D,A1)=H(D)[515H(D1)+515H(D2)+515H(D3)]
=0.971[515(25log22535log235)+515(35log23525log225)+515(45log24515log215)]

这里D1,D2,D3 分别是DA1取值为青年、中年和老年的样本子集,类似的
(2)

g(D,A2)=H(D)[515H(D1)+1015H(D2)]=0.971[515×0+1015(410log2410610log2610)]=0.324

(3)

g(D,A3)=g(D,A3)=0.971[615×0+915(39log23969log269)]=0.9710.551=0.420

(4)

g(D,A4)=0.363

最后比较特征的信息增益值,发现房子的信息增益值最大,所以选择A3作为最优特征

ID3C4.5 算法通过使用信息增益与信息增益比递归选择最佳分类节点,本质上没有区别。

ID3算法由Ross Quinlan发明,建立在“奥卡姆剃刀”的基础上:越是小型的决策树越优于大的决策树(be simple简单理论)。ID3算法中根据信息增益评估和选择特征,每次选择信息增益最大的特征作为判断模块建立子结点。ID3算法可用于划分标称型数据集,没有剪枝的过程,为了去除过度数据匹配的问题,可通过裁剪合并相邻的无法产生大量信息增益的叶子节点(例如设置信息增益阀值)。使用信息增益的话其实是有一个缺点,那就是它偏向于具有大量值的属性。就是说在训练集中,某个属性所取的不同值的个数越多,那么越有可能拿它来作为分裂属性,而这样做有时候是没有意义的,另外ID3不能处理连续分布的数据特征,于是就有了C4.5算法。CART算法也支持连续分布的数据特征。

相关文章:

猜你喜欢
  • 2022-01-05
  • 2021-04-12
  • 2021-09-01
相关资源
相似解决方案