特征选择
1. 特征选择问题
特征选择在于选取对训练数据具有分类能力的特征。这样可以提高决策树学习的效率。如果利用一个特征进行分类的结果与随机分类的结果没有很大差别,则称这个特征是没有分类能力的。经验上扔掉这样的特征对决策树学习的精度影响不大。通常特征选择的准则是信息增益或信息增益比。
特征选择时决定是决定用哪个特征来划分特征空间。
**例1:**15个样本组成的贷款申请训练数据。贷款申请人有4个特征(年龄、有工作、有房子、借贷情况)。

数据学习到的两个可能的决策树,分别由两个不同特征的根结点构成。图(a)的根结点的特征是年龄,有3个取值,对应于不同的取值有不同的子结点。图(b)所示的根结点的特征是有工作,有2个取值,对应于不同的取值有不同的子结点。两个决策树都可以从此延续下去。问题是:究竟选择哪个特征更好些?这就要求确定选择特征的准则。直观上,如果一个特征具有更好的分类能力,或者说,按照这一特征将训练数据集分割成子集,使得各个子集在当前条件下有最好的分类,那么就更应该选择这个特征。信息增益(information gain)能表达着直观的准则。

2. 信息增益
在信息论与概率统计中,熵(entropy)是表示随机变量不确定性的度量。设X是一个取有限个值的离散随机变量,其概率分布为
P(X=xi)=pi,i=1,2,...,n
则随机变量X的熵定义为
H(X)=−i=1∑npilogpi(1)
若pi=0,则定义0log0=0。通常式(1)中的对数以2为底或e为底(自然对数),这时熵的单位分别称为比特(bit)或纳特(nat)。由定义知,熵只依赖与X的分布,而与X的取值无关,所以也可将X的熵记作H(p),即
H(p)=−i=1∑npilogpi
熵越大,随机变量的不确定性就越大。从定义可验证
0≤H(p)≤logn
当随机变量只取两个值,例如1,0时,即X的分布为
P(X=1)=p,P(X=0)=1−p,0≤p≤1
熵为
H(p)=−plog2p−(1−p)log2(1−p)
这时,熵H(p)随概率p变化的曲线如下图(单位为比特),是分布为贝努利分布时熵与概率的关系

当p=0或p=1时H(p)=0,随机变量完全没有不确定性。当p=0.5时,H(p)=1,熵取值最大,随机变量不确定最大。
设有随机变量(X,Y),其联合概率分布为
P(X=xi,Y=yi)=pij,i=1,2,...,n;j=1,2,...,m
条件熵H(Y∣X)表示在已知随机变量X的条件下随机变量Y的不确定性。随机变量X给定的条件下随机变量Y的条件熵(conditional entropy)H(Y∣X),定义为X给定条件下Y的条件概率分布的熵对X的数学期望
H(Y∣X)=i=1∑npiH(Y∣X=xi)
这里,pi=P(X=xi),i=1,2,...,n
当熵和条件熵中的概率由数据估计(特别是极大似然估计)得到时,所对应的熵与条件熵分别称为经验熵(empirical entropy)和经验条件熵(empirical conditional entropy)。此时,如果有0概率,令0log0=0。
信息增益(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(Y)与条件熵H(Y∣X)之差称为互信息(mutual information)。决策树学习中的信息增益等价于训练数据集中类与特征的互信息。
决策树学习应用信息增益准则选择特征。给定训练数据集D和特征A,经验熵H(D)表示对数据集D进行分类的不确定性。而经验条件熵H(D∣A)表示在特征A给定的条件下对数据集D进行分类的不确定性,那么它们的差,即信息增益,就表示由于特征A而使得对数据集D的分类的不确定性减少程度。显然,对于数据D而言,信息增益依赖与特征,不同的特征往往具有不同的信息增益。信息增益大的特征具有更强的分类能力。
根据信息增益准则的特征选择方法:对训练数据集(或子集)D,计算其每个特征的信息增益,并比较它们的大小,选择信息增益最大化的特征。
设训练数据集D,|D|表示其样本容量,即样本个数。设有K个类Ck,k=1,2,...,K,∣Ck∣为属于类Ck的样本个数,∑k=1K∣Ck∣=∣D∣。设特征A有n个不同的取值{a1,a2,...,an},根据特征A的取值将D划分为n个子集D1,D2,...,Dn,∣Di∣为Di的样本个数,∑i=1n∣Di∣=∣D∣。设子集Di中属于类Ck的样本的集合为Dik,即Dik=Di⋂Ck,∣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)=−l=1∑n∣D∣∣Di∣k=1∑K∣Di∣∣Dik∣log2∣Di∣∣Dik∣
(3)计算信息增益
g(D,A)=H(D)−H(D∣A)
**例2:**对例1所给的训练数据集D,根据信息增益准则选择最优特征。
**解:**首先计算经验熵H(D)。
H(D)=−159log2159−156log2156=0.971
然后计算各特征对数据集D的信息增益。分别以A1,A2,A3,A4表示年龄、有工作、有自己的房子和信贷情况4个特征,则
g(D,A1)=H(D)−[155H(D1)+155H(D2)+H(D3)]=0.971−[155(−52log252−53log253)+155(−53log253−52log252)+155(−54log254−51log251)]=0.971−0.888=0.083
这里D1,D2,D3分别是D中A1(年龄)取值为青年、中年和老年的样本子集。类似地
g(D,A2)=H(D)−[155H(D1)+1510H(D2)]=0.971−[155×0+1510(−104log2104−106log2106)]=0.324
g(D,A3)=0.971−[156×0+159(−93log293−96log296)]=0.971−0.551=0.420
g(D,A4)=0.971−0.608=0.363
最后,比较各特征的信息增益值。由于特征A3(有自己的房子)的信息增益值最大,所以选择特征A3作为最优特征。
3. 信息增益比
信息增益值的大小是相对于训练数据而言的,并没有绝对意义。在分类问题困难时,也就是在训练数据集的经验熵大的时候,信息增益值会偏大。反之,信息增益值会偏小。使用信息增益比(information gain ratio)可以对这一问题进行校正。这是特征选择的另一准则。
**信息增益比:**特征A对训练数据集D的信息增益比gR(D,A)定义为其信息增益g(D,A)与训练数据集D的经验熵H(D)之比:
gR(D,A)=H(D)g(D,A)