Machine Learning
  • Introduction
  • 机器学习
    • 前言
      • 符号表
    • 监督式学习
      • 感知机
        • 感知机模型
        • 感知机学习算法
        • 算法python实现
      • Logistic回归
        • Logistic分布
        • Logistic回归模型
        • 算法python实现
      • 线性回归
        • 线性回归模型
        • 算法python实现
      • K近邻法
        • k近邻模型
        • kd树方法
        • kd树python实现
        • knn实例
      • 朴素贝叶斯法
        • 模型和原理
        • 参数估计
        • 算法和实现
      • 决策树
        • 模型与学习
        • 特征选择
        • 生成算法和剪枝
        • python实现
      • 支持向量机
    • 神经网络
      • 神经元模型和感知机
      • 神经网络
      • 神经网络的矩阵表达
      • 反向传播算法
        • 算法证明
        • 算法代码
        • 基于矩阵的计算
      • 改进神经网络的学习方法
        • 交叉熵代价函数
        • softmax
        • regularization
        • 权重初始化
      • 卷积神经网络
        • 基本介绍
    • 数学基础
      • 线性代数
        • 特征值和特征向量
      • 概率统计
        • 随机变量的特征
        • 样本统计量
        • 先验后验概率
      • 微积分
        • 向量内积
        • 方向导数和梯度
        • 梯度下降法
      • 信息论
        • 熵
        • 相对熵和交叉熵
        • 条件熵
        • 互信息
Powered by GitBook
On this page
  • 1. 信息增益
  • 信息增益的算法
  • 2. 信息增益比
  • 3. 基尼指数
  1. 机器学习
  2. 监督式学习
  3. 决策树

特征选择

Previous模型与学习Next生成算法和剪枝

Last updated 7 years ago

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

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

1. 信息增益

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

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

g(D,A)=H(D)−H(D∣A)g(D,A)=H(D)-H(D|A)g(D,A)=H(D)−H(D∣A)

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

关于、、参考链接。关于信息增益和互信息之间的差别,参考。

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

信息增益的算法

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

设特征AAA有nnn个不同的取值a1,a2,...,an{a_1,a_2,...,a_n}a1​,a2​,...,an​,根据特征AAA的取值将DDD划分为nnn个子集D1,D2,...,DnD_1,D_2,...,D_nD1​,D2​,...,Dn​,∣Di∣|D_i|∣Di​∣为DiD_iDi​的样本个数,∑i=1n∣Dk∣=∣D∣\displaystyle\sum_{i=1}^n|D_k|=|D|i=1∑n​∣Dk​∣=∣D∣。记子集DiD_iDi​中属于类CkC_kCk​的样本集合为DikD_{ik}Dik​,∣Dik∣|D_{ik}|∣Dik​∣为DikD_{ik}Dik​的样本个数。

算法:

输入:训练数据集DDD和特征AAA

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

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

H(D)=−∑k=1K∣Ck∣∣D∣log2∣Ck∣∣D∣H(D)=-\displaystyle\sum_{k=1}^K \dfrac{|C_k|}{|D|}\mathrm{log}_2 {\dfrac{|C_k|}{|D|}}H(D)=−k=1∑K​∣D∣∣Ck​∣​log2​∣D∣∣Ck​∣​

2)计算特征AAA对数据集DDD的经验条件熵H(D∣A)H(D|A)H(D∣A)

H(D∣A)=∑i=1n∣Di∣∣D∣H(Di)=−∑i=1n∣Di∣∣D∣∑k=1K∣Dik∣∣Di∣log2∣Dik∣∣Di∣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|}}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)g(D,A)=H(D)-H(D|A)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)H(D),样本中“是”有9个,“否”有6个

H(D)=−915log2915−615log2615=0.971H(D)=-\dfrac{9}{15}\mathrm{log}_2\dfrac{9}{15}-\dfrac{6}{15}\mathrm{log}_2\dfrac{6}{15}=0.971H(D)=−159​log2​159​−156​log2​156​=0.971

2)计算各个特征对数据集的信息增益,A1A_1A1​:年龄,A2A_2A2​:有工作,A3A_3A3​:有房子,A4A_4A4​:信贷情况

H(D∣A1)=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)H(D∣A1​)=155​H(D1​)+155​H(D2​)+155​H(D3​)

=515(−25log225−35log235)+515(−35log235−25log225)+515(−45log245−15log215)=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=155​(−52​log2​52​−53​log2​53​)+155​(−53​log2​53​−52​log2​52​)+155​(−54​log2​54​−51​log2​51​)=0.888

H(D∣A2)=515H(D1)+1015H(D2)H(D|A_2)=\dfrac{5}{15}H(D_1)+\dfrac{10}{15}H(D_2)H(D∣A2​)=155​H(D1​)+1510​H(D2​)

H(D∣A3)=615H(D1)+915H(D2)H(D|A_3)=\dfrac{6}{15}H(D_1)+\dfrac{9}{15}H(D_2)H(D∣A3​)=156​H(D1​)+159​H(D2​)

H(D∣A4)=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)H(D∣A4​)=155​H(D1​)+156​H(D2​)+154​H(D3​)

3)计算信息增益:

g(D,A1)=H(D)−H(D∣A1)=0.971−0.888=0.083g(D,A_1)=H(D)-H(D|A_1)=0.971-0.888=0.083g(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.324g(D,A_2)=H(D)-H(D|A_2)=0.971-0.647=0.324g(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.420g(D,A_3)=H(D)-H(D|A_3)=0.971-0.551=0.420g(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.363g(D,A_4)=H(D)-H(D|A_4)=0.971-0.608=0.363g(D,A4​)=H(D)−H(D∣A4​)=0.971−0.608=0.363

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

2. 信息增益比

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

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

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

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

其中HA(D)=−∑i=1n∣Di∣∣D∣log2∣Di∣∣D∣H_A(D)=-\displaystyle\sum_{i=1}^n \dfrac{|D_i|}{|D|}\mathrm{log}_2 {\dfrac{|D_i|}{|D|}}HA​(D)=−i=1∑n​∣D∣∣Di​∣​log2​∣D∣∣Di​∣​,nnn是特征AAA的取值个数。

3. 基尼指数

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

Gini(p)=∑k=1Kpk(1−pk)=1−∑k=1Kpk2Gini(p)=\displaystyle\sum_{k=1}^K p_k(1-p_k)=1-\displaystyle\sum_{k=1}^Kp^2_kGini(p)=k=1∑K​pk​(1−pk​)=1−k=1∑K​pk2​

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

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

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

Gini(D)=1−∑k=1K∣Ck∣2∣D∣2Gini(D)=1-\displaystyle\sum_{k=1}^K \dfrac{|C_k|^2}{|D|^2}Gini(D)=1−k=1∑K​∣D∣2∣Ck​∣2​

这里CkC_kCk​是DDD中属于第kkk类的样本子集,KKK是类的个数。

如果样本集合DDD根据特征AAA是否取某一个可能的α\alphaα被分割成D1D_1D1​和D2D_2D2​两部分,即

D1={(x,y)∈D∣A(x)=α},   D2=D−D1D_1= \{(x,y)\in D|A(x)=\alpha\},\ \ \ D_2=D-D_1D1​={(x,y)∈D∣A(x)=α},   D2​=D−D1​

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

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

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

根据上表计算基尼指数:

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

Gini(D,A1=1)=515(2⋅25⋅(1−25))+1015(2⋅710⋅(1−710))=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.44Gini(D,A1​=1)=155​(2⋅52​⋅(1−52​))+1510​(2⋅107​⋅(1−107​))=0.44

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

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

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

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

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

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

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

A2A_2A2​和A3A_3A3​只有一个切分点,所以它们就是最优切分点。

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

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

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

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

熵
条件熵
互信息
https://www.zhihu.com/question/39436574