特征选择在于选取对训练集有分类能力的特征,这样可以提高决策树学习的效率。
通常特征选择的准则是信息增益或信息增益比。
1. 信息增益
信息增益(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)
一般地,熵H(X)与条件熵H(Y∣X)之差称为互信息(mutual information)。
关于熵、条件熵、互信息参考链接。关于信息增益和互信息之间的差别,参考https://www.zhihu.com/question/39436574。
在给定训练数据集D和特征A,经验熵H(D)表示对数据集D进行分类的不确定性。而经验条件熵H(D∣A)表示在特征A给定的条件下对数据集D进行分类的不确定性,那么它们的差就表示由于特征A而使得对数据集D的分类的不确定性减少的程度。信息增益大的特征具有更强的分类能力。
信息增益的算法
假设训练数据集为D,∣D∣表示样本容量,即样本个数。设有K个类Ck,k=1,2,...,K,∣Ck∣为属于类Ck的样本个数,k=1∑K∣Ck∣=∣D∣。
设特征A有n个不同的取值a1,a2,...,an,根据特征A的取值将D划分为n个子集D1,D2,...,Dn,∣Di∣为Di的样本个数,i=1∑n∣Dk∣=∣D∣。记子集Di中属于类Ck的样本集合为Dik,∣Dik∣为Dik的样本个数。
算法:
输入:训练数据集D和特征A
输出:特征A对训练数据集D的信息增益g(D,A)
1)计算数据集D的经验熵H(D)
H(D)=−k=1∑K∣D∣∣Ck∣log2∣D∣∣Ck∣
2)计算特征A对数据集D的经验条件熵H(D∣A)
H(D∣A)=i=1∑n∣D∣∣Di∣H(Di)=−i=1∑n∣D∣∣Di∣k=1∑K∣Di∣∣Dik∣log2∣Di∣∣Dik∣
3)计算信息增益
g(D,A)=H(D)−H(D∣A)
示例:
贷款申请样本数据表:
ID |
年龄 |
有工作 |
有自己的房子 |
信贷情况 |
类别 |
1 |
青年 |
否 |
否 |
一般 |
否 |
2 |
青年 |
否 |
否 |
好 |
否 |
3 |
青年 |
是 |
否 |
好 |
是 |
4 |
青年 |
是 |
是 |
一般 |
是 |
5 |
青年 |
否 |
否 |
一般 |
否 |
6 |
中年 |
否 |
否 |
一般 |
否 |
7 |
中年 |
否 |
否 |
好 |
否 |
8 |
中年 |
是 |
是 |
好 |
是 |
9 |
中年 |
否 |
是 |
非常好 |
是 |
10 |
中年 |
否 |
是 |
非常好 |
是 |
11 |
老年 |
否 |
是 |
非常好 |
是 |
12 |
老年 |
否 |
是 |
好 |
是 |
13 |
老年 |
是 |
否 |
好 |
是 |
14 |
老年 |
是 |
否 |
非常好 |
是 |
15 |
老年 |
否 |
否 |
一般 |
否 |
1)计算经验熵H(D),样本中“是”有9个,“否”有6个
H(D)=−159log2159−156log2156=0.971
2)计算各个特征对数据集的信息增益,A1:年龄,A2:有工作,A3:有房子,A4:信贷情况
H(D∣A1)=155H(D1)+155H(D2)+155H(D3)
=155(−52log252−53log253)+155(−53log253−52log252)+155(−54log254−51log251)=0.888
H(D∣A2)=155H(D1)+1510H(D2)
H(D∣A3)=156H(D1)+159H(D2)
H(D∣A4)=155H(D1)+156H(D2)+154H(D3)
3)计算信息增益:
g(D,A1)=H(D)−H(D∣A1)=0.971−0.888=0.083
g(D,A2)=H(D)−H(D∣A2)=0.971−0.647=0.324
g(D,A3)=H(D)−H(D∣A3)=0.971−0.551=0.420
g(D,A4)=H(D)−H(D∣A4)=0.971−0.608=0.363
其中g(D,A3)最大,因此先选择特征A3。
2. 信息增益比
以信息增益比作为划分训练数据集的特征,存在偏向于选择取值较多的特征的问题。
使用信息增益比(information gain ratio)可以对这个问题进行校正。
特征A对训练数据集D的信息增益比gR(D,A)定义为信息增益g(D,A)与训练数据集D关于特征A的值的熵HA(D)之比,即
gR(D,A)=HA(D)g(D,A)
其中HA(D)=−i=1∑n∣D∣∣Di∣log2∣D∣∣Di∣,n是特征A的取值个数。
3. 基尼指数
分类问题中,假设有K个类,样本点属于第k类的概率为pk,则概率分布的基尼指数定义为
Gini(p)=k=1∑Kpk(1−pk)=1−k=1∑Kpk2
对于二分类问题,若样本属于第一个类的概率为p,则概率分布的基尼指数为
Gini(p)=2p(1−p)
对于给定的样本集合D,其基尼指数为
Gini(D)=1−k=1∑K∣D∣2∣Ck∣2
这里Ck是D中属于第k类的样本子集,K是类的个数。
如果样本集合D根据特征A是否取某一个可能的α被分割成D1和D2两部分,即
D1={(x,y)∈D∣A(x)=α}, D2=D−D1
则在特征A的条件下,集合D的基尼指数定义为:
Gini(D,A)=∣D∣∣D1∣Gini(D1)+∣D∣∣D2∣Gini(D2)
基尼指数Gini(D)表示集合D的不确定性,基尼指数Gini(D,A)表示经过A=α分割后集合D的不确定性。基尼指数越大,样本集合的不确定性也越大,这一点与熵相似。在选择特征的时候,选择基尼指数最小(也就是不确定性最小)的特征及其对应的切分点作为最优特征和切分点。
根据上表计算基尼指数:
A1:年龄(1,2,3分别表示青,中,老年),
Gini(D,A1=1)=155(2⋅52⋅(1−52))+1510(2⋅107⋅(1−107))=0.44
Gini(D,A1=2)=0.48
Gini(D,A1=3)=0.44
由于Gini(D,A1=1)和Gini(D,A1=1)相等且最小,所以A1=1,A1=3都可以作为A1的最优切分点。
A2:有工作(1,2分别表示有,无工作),
Gini(D,A2=1)=0.32
A3:有房子(1,2分别表示有,无房子)
Gini(D,A3=12)=0.27
A2和A3只有一个切分点,所以它们就是最优切分点。
A4:信贷情况(1,2,3分别表示信贷非常好,好,一般)
Gini(D,A4=1)=0.36,Gini(D,A4=2)=0.47,Gini(D,A4=3)=0.32
Gini(D,A4=3)最小,所以为A4的最优切分点。
在A1,A2,A3,A4中,Gini(D,A3=12)=0.27最小,所以选择特征A3为最优特征,且A3=1为最优切分点。