决策树(Decision Tree)是一种基本的分类与回归方法,本文主要讨论分类决策树。决策树模型呈树形结构,在分类问题中,表示基于特征对实例进行分类的过程。它可以认为是if-then规则的集合,也可以认为是定义在特征空间与类空间上的条件概率分布。相比朴素贝叶斯分类,决策树的优势在于构造过程不需要任何领域知识或参数设置,因此在实际应用中,对于探测式的知识发现,决策树更加适用。
4.1决策树理论
**定义:**分类决策树模型是一种描述对实例进行分类的树形结构。决策树由结点和有向边组成。结点有两种类型:内部节点和叶节点,内部节点表示一个特征或属性,叶节点表示一个类。 分类的时候,从根节点开始,对实例的某一个特征进行测试,根据测试结果,将实例分配到其子结点;此时,每一个子结点对应着该特征的一个取值。如此递归向下移动,直至达到叶结点,最后将实例分配到叶结点的类中。
4.1.1决策树ID3算法的信息论基础
1948年,大牛 香农提出了 ”信息熵(entropy)“ 的概念:一条信息的信息量大小和它的不确定性有直接的关系,要搞清楚一件非常非常不确定的事情,或者是我们一无所知的事情,需要了解大量信息,然而信息量的度量就等于不确定性的多少,这也是熵的来源。
在1970年代,一个叫昆兰(J.Ross. Quinlan)的大牛找到了用信息论中的熵来度量决策树的决策选择过程,方法一出,它的简洁和高效就引起了轰动,昆兰把这个算法叫做ID3。下面我们就看看ID3算法是怎么选择特征的。
首先,我们需要熟悉信息论中熵的概念。熵度量了事物的不确定性,越不确定的事物,它的熵就越大。
设 X X X是一个取有限个值的离散随机变量,其概率分布为
P ( X = z 1 ) = p i , i = 1 , 2 , . . . , n \color{red}P(X=z_1)=p_i,i=1,2,...,n P(X=z1)=pi,i=1,2,...,n
随机变量 X X X的熵的表达式如下:
H ( X ) = − ∑ i = 1 n p i l o g p i \color{red}H(X)=-\sum_{i=1}^{n}p_ilogp_i H(X)=−∑i=1npilogpi
其中 n n n 代表 X X X的 n n n种不同的离散取值。而 p i p_i pi代表了 X X X取值为 i i i的概率, l o g log log为以 2 2 2或者 e e e为底的对数。当对数的底为 2 2 2时,熵的单位为bit;为e时,单位为nat。
熵越大,随机变量的不确定性就越大。从定义可验证:
0 < H ( p ) < l o g n 0<H(p)<logn 0<H(p)<logn
为了很好的理解熵的概念,举个例子吧,比如 X X X有 2 2 2个可能的取值,而这两个取值各为 1 / 2 1/2 1/2时 X X X的熵最大,此时 X X X具有最大的不确定性。值为
H ( X ) = − ( 1 / 2 l o g 1 / 2 + 1 / 2 l o g 1 / 2 ) = l o g 2 H(X)=-(1/2log1/2+1/2log1/2)=log2 H(X)=−(1/2log1/2+1/2log1/2)=log2
如果一个值概率大于 1 / 2 1/2 1/2,另一个值概率小于 1 / 2 1/2 1/2,则不确定性减少,对应的熵也会减少。比如一个概率 1 / 3 1/3 1/3,一个概率 2 / 3 2/3 2/3,则对应熵为
H ( X ) = − ( 1 / 3 l o g 1 / 3 + 2 / 3 l o g 2 / 3 ) = l o g 3 − 2 / 3 l o g 2 H(X)=-(1/3log1/3+2/3log2/3) = log3-2/3log2 H(X)=−(1/3log1/3+2/3log2/3)=log3−2/3log2
则 l o g 3 − 2 / 3 l o g 2 < l o g 2 log3-2/3log2<log2 log3−2/3log2<log2
熟悉了一个变量 X X X的熵,很容易推广到多个个变量的联合熵,这里给出两个变量 X X X和 Y Y Y的联合熵表达式:
H ( X , Y ) = − ∑ i = 1 n p ( x i , y i ) l o g p ( x i , y i ) \color{red}H(X,Y)=-\sum_{i=1}^{n}p(x_i,y_i)logp(x_i,y_i) H(X,Y)=−∑i=1np(xi,yi)logp(xi,yi)
有了联合熵,又可以得到条件熵的表达式 H ( X ∣ Y ) H(X|Y) H(X∣Y),条件熵类似于条件概率,它度量了我们的 X X X在知道 Y Y Y以后剩下的不确定性。表达式如下:
H ( X ∣ Y ) = − ∑ i = 1 n p ( x i , y i ) l o g p ( x i ∣ y i ) = ∑ j = 1 n p ( y j ) H ( X ∣ y i ) \color{red}H(X|Y)=-\sum_{i=1}^{n}p(x_i,y_i)logp(x_i|y_i)= \sum_{j=1}^{n}p(y_j)H(X|y_i) H(X∣Y)=−∑i=1np(xi,yi)logp(xi∣yi)=∑j=1np(yj)H(X∣yi)
H ( X ) H(X) H(X)度量了 X X X的不确定性,条件熵 H ( X ∣ Y ) H(X|Y) H(X∣Y)度量了我们在知道 Y Y Y以后 X X X剩下的不确定性,那么 H ( X ) − H ( X ∣ Y ) H(X)-H(X|Y) H(X)−H(X∣Y)呢?从上面的描述大家可以看出,它度量了 X X X在知道 Y Y Y以后不确定性减少程度,这个度量我们在信息论中称为互信息,记为 I ( X , Y ) I(X,Y) I(X,Y)。在决策树ID3算法中叫做信息增益。ID3算法就是用信息增益来判断当前节点应该用什么特征来构建决策树。信息增益大,则越适合用来分类。
参考文献:
[1]《机器学习》周志华著
[2]《统计学习方法》李航著