特征工程(3):特征选择—信息增益

       信息增益,基于信息熵来计算,它表示信息消除不确定性的程度,可以通过信息增益的大小为变量排序进行特征选择。信息量与概率呈单调递减关系,概率越小,信息量越大。

1. 基本概念

1.1 信息量

       信息量的数学定义如下式所示,U表示发送的信息,则u_{i}表示发送信息U中的一种类型。

                                             

1.2 先验熵 

          信息熵表示信息量的数学期望,是信源发出信息前的平均不确定性,也称为先验熵。信息熵的定义如下式所示 :

                  

        (1)当u_{i} 中某一种类型的概率为1时,即没有发送信息的不确定性,信息熵Ent(U)=0

          (2)  当u_{i} 对应的概率都相等时,即概率都为1/k,信息熵Ent(U)=log_{2}k

1.3 后验熵 

      信息熵Ent(U)表示在发出信息U之前存在的不确定性,在接收到信息V之后,信息U的不确定性会发生改变,即后验熵,它是接收到一定的信息后,对信息U进行的后验判断,定义如下:

                        

      考虑所有信息V时,得到后验熵的期望(又称为条件熵)如下,Ent(U|V)表示在接收到V后对信息U仍存在的平均不确定性,即后验不确定性,通常由随机干扰引起。

                        

2. 特征选择

    基于信息增益的特征选择有两种方式,即信息增益和信息增益率。

2.1 信息增益

        信息增益,即先验熵到后验熵减少的部分,反映了信息消除不确定性的程度,定义如下:

                                

       特征选择原理:在进行特征选择时,以目标变量作为信息U,由特征变量作为信息V,带入公式计算信息增益,通过信息增益的大小排序,来确定特征的顺序,以此进行特征选择。信息增益越大,表示变量消除不确定性的能力越强。

       缺点:当接收信号V为全不相同的类别时,将会使Ent(U|V)=0,信息增益将最大。由于每一个V值都是一个类别,对应的U值也只有一个值,取该值的概率为1,这明显是一种过拟合,因此基于信息增益来进行特征选择存在不足。

2.2 信息增益率

     为解决信息增益的不足,在计算信息增益的同时,考虑接收信号V的自身特点,定义信息增益率如下:

                                                     

     当接收信号V具有较多类别值时,它自己的信息熵范围会增大 (即各类别出现的概率相等时,有最大熵Ent(U)=log_{2}k​​​​​​​,因此当k较大时,其熵的取值范围更大),而信息增益率不会随着增大,从而消除类别数目带来的影响。

3. 代码实现:R语言

        R语言的程序包FSelector提供了information.gain函数来计算信息增益,gain.ratio函数来计算信息增益率。实现代码为:

library(FSelector)

#计算信息增益
wt1 <- information.gain(y~.,data=data_xl)

#计算信息增益率
wt2 <- gain.ratio(y~.,data=data_xl)


result <- c(wt1,wt2)
result <- data.frame(result)
# rownames(result)<-rows
colnames(result)<-c("gain","gain-ratio")
write.csv(result,"gain_result.csv")

 

你可能感兴趣的:(机器学习)