特征选择在于选取对训练集有分类能力的特征,这样可以提高决策树学习的效率。

通常特征选择的准则是信息增益或信息增益比。

1. 信息增益

信息增益(information gain)表示得知特征XX的信息而使得类YY的信息不确定性减少量。

特征AA对训练数据集DD的信息增益g(D,A)g(D,A),定义为集合DD的经验熵H(D)H(D)与特征AA在给定条件下DD的经验条件熵H(DA)H(D|A)之差,即

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

一般地,熵H(X)H(X)与条件熵H(YX)H(Y|X)之差称为互信息(mutual information)。

关于条件熵互信息参考链接。关于信息增益和互信息之间的差别,参考https://www.zhihu.com/question/39436574

在给定训练数据集DD和特征AA,经验熵H(D)H(D)表示对数据集DD进行分类的不确定性。而经验条件熵H(DA)H(D|A)表示在特征AA给定的条件下对数据集DD进行分类的不确定性,那么它们的差就表示由于特征AA而使得对数据集DD的分类的不确定性减少的程度。信息增益大的特征具有更强的分类能力。

信息增益的算法

假设训练数据集为DDD|D|表示样本容量,即样本个数。设有KK个类CkC_kk=1,2,...,Kk=1,2,...,KCk|C_k|为属于类CkC_k的样本个数,k=1KCk=D\displaystyle\sum_{k=1}^K|C_k|=|D|

设特征AAnn个不同的取值a1,a2,...,an{a_1,a_2,...,a_n},根据特征AA的取值将DD划分为nn个子集D1,D2,...,DnD_1,D_2,...,D_nDi|D_i|DiD_i的样本个数,i=1nDk=D\displaystyle\sum_{i=1}^n|D_k|=|D|。记子集DiD_i中属于类CkC_k的样本集合为DikD_{ik}Dik|D_{ik}|DikD_{ik}的样本个数。

算法:

输入:训练数据集DD和特征AA

输出:特征AA对训练数据集DD的信息增益g(D,A)g(D,A)

1)计算数据集DD的经验熵H(D)H(D)

H(D)=k=1KCkDlog2CkD H(D)=-\displaystyle\sum_{k=1}^K \dfrac{|C_k|}{|D|}\mathrm{log}_2 {\dfrac{|C_k|}{|D|}}

2)计算特征AA对数据集DD的经验条件熵H(DA)H(D|A)

H(DA)=i=1nDiDH(Di)=i=1nDiDk=1KDikDilog2DikDi H(D|A)=\displaystyle\sum_{i=1}^n \dfrac{|D_i|}{|D|}H(D_i)=-\displaystyle\sum_{i=1}^n \dfrac{|D_i|}{|D|}\displaystyle\sum_{k=1}^K \dfrac{|D_{ik}|}{|D_i|}\mathrm{log}_2 {\dfrac{|D_{ik}|}{|D_i|}}

3)计算信息增益

g(D,A)=H(D)H(DA) 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)H(D),样本中“是”有9个,“否”有6个

H(D)=915log2915615log2615=0.971 H(D)=-\dfrac{9}{15}\mathrm{log}_2\dfrac{9}{15}-\dfrac{6}{15}\mathrm{log}_2\dfrac{6}{15}=0.971

2)计算各个特征对数据集的信息增益,A1A_1:年龄,A2A_2:有工作,A3A_3:有房子,A4A_4:信贷情况

H(DA1)=515H(D1)+515H(D2)+515H(D3)H(D|A_1)=\dfrac{5}{15}H(D_1)+\dfrac{5}{15}H(D_2)+\dfrac{5}{15}H(D_3)

=515(25log22535log235)+515(35log23525log225)+515(45log24515log215)=0.888=\dfrac{5}{15}(-\dfrac{2}{5}\mathrm{log}_2\dfrac{2}{5}-\dfrac{3}{5}\mathrm{log}_2\dfrac{3}{5})+\dfrac{5}{15}(-\dfrac{3}{5}\mathrm{log}_2\dfrac{3}{5}-\dfrac{2}{5}\mathrm{log}_2\dfrac{2}{5})+\dfrac{5}{15}(-\dfrac{4}{5}\mathrm{log}_2\dfrac{4}{5}-\dfrac{1}{5}\mathrm{log}_2\dfrac{1}{5})=0.888

H(DA2)=515H(D1)+1015H(D2)H(D|A_2)=\dfrac{5}{15}H(D_1)+\dfrac{10}{15}H(D_2)

H(DA3)=615H(D1)+915H(D2)H(D|A_3)=\dfrac{6}{15}H(D_1)+\dfrac{9}{15}H(D_2)

H(DA4)=515H(D1)+615H(D2)+415H(D3)H(D|A_4)=\dfrac{5}{15}H(D_1)+\dfrac{6}{15}H(D_2)+\dfrac{4}{15}H(D_3)

3)计算信息增益:

g(D,A1)=H(D)H(DA1)=0.9710.888=0.083g(D,A_1)=H(D)-H(D|A_1)=0.971-0.888=0.083

g(D,A2)=H(D)H(DA2)=0.9710.647=0.324g(D,A_2)=H(D)-H(D|A_2)=0.971-0.647=0.324

g(D,A3)=H(D)H(DA3)=0.9710.551=0.420g(D,A_3)=H(D)-H(D|A_3)=0.971-0.551=0.420

g(D,A4)=H(D)H(DA4)=0.9710.608=0.363g(D,A_4)=H(D)-H(D|A_4)=0.971-0.608=0.363

其中g(D,A3)g(D,A_3)最大,因此先选择特征A3A_3

2. 信息增益比

以信息增益比作为划分训练数据集的特征,存在偏向于选择取值较多的特征的问题。

使用信息增益比(information gain ratio)可以对这个问题进行校正。

特征AA对训练数据集DD的信息增益比gR(D,A)g_{\small R}(D,A)定义为信息增益g(D,A)g(D,A)与训练数据集DD关于特征AA的值的熵HA(D)H_A(D)之比,即

gR(D,A)=g(D,A)HA(D) g_{\small R}(D,A)=\dfrac{g(D,A)}{H_A(D)}

其中HA(D)=i=1nDiDlog2DiDH_A(D)=-\displaystyle\sum_{i=1}^n \dfrac{|D_i|}{|D|}\mathrm{log}_2 {\dfrac{|D_i|}{|D|}}nn是特征AA的取值个数。

3. 基尼指数

分类问题中,假设有KK个类,样本点属于第kk类的概率为pkp_k,则概率分布的基尼指数定义为

Gini(p)=k=1Kpk(1pk)=1k=1Kpk2 Gini(p)=\displaystyle\sum_{k=1}^K p_k(1-p_k)=1-\displaystyle\sum_{k=1}^Kp^2_k

对于二分类问题,若样本属于第一个类的概率为pp,则概率分布的基尼指数为

Gini(p)=2p(1p) Gini(p)=2p(1-p)

对于给定的样本集合DD,其基尼指数为

Gini(D)=1k=1KCk2D2 Gini(D)=1-\displaystyle\sum_{k=1}^K \dfrac{|C_k|^2}{|D|^2}

这里CkC_kDD中属于第kk类的样本子集,KK是类的个数。

如果样本集合DD根据特征AA是否取某一个可能的α\alpha被分割成D1D_1D2D_2两部分,即

D1={(x,y)DA(x)=α},   D2=DD1 D_1= \{(x,y)\in D|A(x)=\alpha\},\ \ \ D_2=D-D_1

则在特征AA的条件下,集合DD的基尼指数定义为:

Gini(D,A)=D1DGini(D1)+D2DGini(D2) Gini(D,A)=\dfrac{|D_1|}{|D|}Gini(D_1)+\dfrac{|D_2|}{|D|}Gini(D_2)

基尼指数Gini(D)Gini(D)表示集合DD的不确定性,基尼指数Gini(D,A)Gini(D,A)表示经过A=αA=\alpha分割后集合DD的不确定性。基尼指数越大,样本集合的不确定性也越大,这一点与熵相似。在选择特征的时候,选择基尼指数最小(也就是不确定性最小)的特征及其对应的切分点作为最优特征和切分点。

根据上表计算基尼指数:

A1A_1:年龄(1,2,3分别表示青,中,老年),

Gini(D,A1=1)=515(225(125))+1015(2710(1710))=0.44Gini(D,A_1=1)=\dfrac{5}{15}(2\cdot\dfrac{2}{5}\cdot (1-\dfrac{2}{5}))+\dfrac{10}{15}(2\cdot\dfrac{7}{10}\cdot (1-\dfrac{7}{10}))=0.44

Gini(D,A1=2)=0.48Gini(D,A_1=2)=0.48

Gini(D,A1=3)=0.44Gini(D,A_1=3)=0.44

由于Gini(D,A1=1)Gini(D,A_1=1)Gini(D,A1=1)Gini(D,A_1=1)相等且最小,所以A1=1,A1=3A_1=1,A_1=3都可以作为A1A_1的最优切分点。

A2A_2:有工作(1,2分别表示有,无工作),

Gini(D,A2=1)=0.32Gini(D,A_2=1)=0.32

A3A_3:有房子(1,2分别表示有,无房子)

Gini(D,A3=12)=0.27Gini(D,A_3=12)=0.27

A2A_2A3A_3只有一个切分点,所以它们就是最优切分点。

A4A_4:信贷情况(1,2,3分别表示信贷非常好,好,一般)

Gini(D,A4=1)=0.36Gini(D,A_4=1)=0.36Gini(D,A4=2)=0.47Gini(D,A_4=2)=0.47Gini(D,A4=3)=0.32Gini(D,A_4=3)=0.32

Gini(D,A4=3)Gini(D,A_4=3)最小,所以为A4A_4的最优切分点。

A1,A2,A3,A4A_1,A_2,A_3,A_4中,Gini(D,A3=12)=0.27Gini(D,A_3=12)=0.27最小,所以选择特征A3A_3为最优特征,且A3=1A_3=1为最优切分点。

results matching ""

    No results matching ""