本章对应于周志华——《机器学习》书本P73页,第四章:决策树。
【引言】决策树是基于树结构来进行决策的,可以类比于常见的if条件语句。一般对于二分类,其判断过程就被称为“决策”或“判定”的过程。而前一轮的决策结果便是下一轮的必然前提,最终的决策结论对应了我们所希望的判定结果。
1、基本流程
【概念】:一颗决策树包含一个根结点、若干个内部结点和若干个叶结点。叶结点对应于决策结果,其他每个结点则对应于一个属性测试;每个节点包含的样本集合根据属性测试的结果被划分到子节点中;根节点包含样本全集。从根结点到每个叶节点的路径对应了一个判定测试序列。
决策树学习的目的是为了产生一颗泛化性能强,即处理未见示例能力强的决策树,其基本流程遵循简单且直观的“分而治之”原则。
生成决策树的过程是递归过程。其逻辑如下:
(1)生成结点node,对所有样本进行属性判别,找到划分能力最强的属性特征(类别标记样本数最多的属性),以该属性作为node生成根结点;
(2)此时所有样本应该已被分为两类(属于该属性的和不属于改属性的)。此时生成node2,分别对两类重复(1)中的划分过程。
(3)以此类推,最后直到只能划分出单一类别为止。
在决策树的基本算法中,又三种情形会导致递归返回:
(1)当前结点包含的样本全属于同一个类别,无需划分;
(2)当前属性集为空,或是所有样本在所有属性上取值相同,无法划分;
(3)当前结点包含的样本集合为空,不能划分。
纵观以上三个过程,都遵循了少数服从多数原则,无论是(2)或是(3),最终都以多数类或父类作为最后的分类依据。
2、划分选择
很显然,决策树算法中最关键的部分是选出划分能力最强的属性作为结点的决策准则。我们希望决策树的分支结点所包含的样本尽可能属于同一类别,即结点的“纯度”越来越高。
2.1 信息增益
信息熵:是度量样本集合纯度最常用的一种指标。假设当前样本集合D中第k类样本所占的比例为pk(k=1, 2, …|Y|),则D的信息熵定义为(其中,pk取不到1,因为此时一定在上一个结点时已经分类完毕,继承父结点所属的类别):
E n t ( D ) = − ∑ k = 1 ∣ Y ∣ p k l o g 2 p k Ent(D) = -\sum_{k=1}^{|Y|}p_klog_2p_k Ent(D)=−k=1∑∣Y∣pklog2pk
当 p = 0 时 , p l o g 2 p = 0 , 因 此 E n t ( D ) 的 最 小 值 为 0 , 最 大 值 为 l o g 2 ∣ Y ∣ 。 当p=0时,plog_2p=0,因此Ent(D)的最小值为0,最大值为log_2|Y|。 当p=0时,plog2p=0,因此Ent(D)的最小值为0,最大值为log2∣Y∣。
因此可见Ent(D)的值越小,则D的纯度越高。
由于决策树是根据离散属性a来进行划分的,因此有多少的离散属性一般就会产生多少个分支结点,而可以计算每一个分支结点(划分属性)上的信息上Dv,其中V表示离散属性a可能的取值{a1, a2, …, aV}。
考虑到不同分支结点所包含的样本数不同,给分支结点赋予权重: W = ∣ D V ∣ ∣ D ∣ W = \frac {|D^V|}{|D|} W=∣D∣∣DV∣DV为属于V类数据集的信息熵,D为整体数据集的信息熵。
可见样本数越多的分支结点影响越大,因为样本数越多,Ent(DV)的值越大,自然上述权重W的值越大。
而对于整个样本空间D而言,可以计算出用属性a对样本集D进行划分所获得的信息增益。
G a i n ( D , a ) = E n t ( D ) − ∑ v = 1 V ∣ D V ∣ D E n t ( D v ) Gain(D, a)=Ent(D)-\sum_{v=1}^{V} \frac{|D^V|}{D}Ent(D^v) Gain(D,a)=Ent(D)−v=1∑VD∣DV∣Ent(Dv)
可以看出,该式的含义在于:信息增益=样本空间的信息熵 - (离散属性a的v各分支对应的信息熵 * 对应样本空间中权重)之和 。
【例】:假设有17个西瓜,其中又8个好瓜,9个坏瓜;
共计6种特征分别为:色泽、根蒂、敲声、纹理、脐部、触感;
可以得出如下对应的公式变量:
1、Y代表最终的判别类型的数目,此处|Y|=2代表共两类,分别代表好瓜和坏瓜:
∣ Y ∣ = 2 , 即 k ∈ 1 , 2 |Y|=2,即k∈{1, 2} ∣Y∣=2,即k∈1,2
2、6种特征代表将A分为了6个分支,每个分支为 A = a 1 , a 2 , a 3 , a 4 , a 5 , a 6 , 而 针 对 属 性 属 性 a i A = a_1,a_2,a_3,a_4,a_5,a_6,而针对属性属性a_i A=a1,a2,a3,a4,a5,a6,而针对属性属性ai
其中都将分为v个不同的例子,代表v种不同的类别:
a = a 1 , a 2 , . . . , a v , 例 如 a 1 a={a^1,a^2,...,a^v},例如a_1 a=a1,a2,...,av,例如a1
分为三种类别,即V = {青绿、乌黑、浅白},针对每个类别在正例、反例种的比例,继续计算对应的信息熵。
【计算】:
p 1 = 8 17 代 表 正 例 ; p 2 = 9 17 代 表 反 例 p_1=\frac {8}{17}代表正例;p_2 =\frac {9}{17}代表反例 p1=178代表正例;p2=179代表反例
因此可以计算样本空间的信息熵:
E n t ( D ) = − ∑ k = 1 2 p k l o g 2 p k Ent(D)=-\sum_{k=1}^{2}p_klog_2p_k Ent(D)=−k=1∑2pklog2pk
即: E n t ( D ) = − ( p 1 ∗ l o g 2 p 1 + p 2 ∗ l o g 2 p 2 ) Ent(D) =-( p_1*log_2p_1 +p_2*log_2p_2) Ent(D)=−(p1∗log2p1+p2∗log2