互信息特征选择python_基于互信息的特征选择方法杂谈

我们现在处于一个数据驱动的时代,但并不是所有的数据都是有意义的。只有有效的数据才能

带给我们"信息",无效的数据并不能带给我们"信息"。

如果我们在做一件事情之前,可以通过各种数据得到这件事情所有相关信息,那么我们就可以

最初最完美的决策,使利益最大化。

基于熵的特征选择方法就是选择一个能提供给类别尽可能多"信息"的特征子集,从而得到关于类别更多的"信息",进而为分类提供帮助。

如何衡量数据所携带信息的多少呢,克劳德·艾尔伍德·香农给出了熵的概念,通过熵我们可以

衡量数据携带信息的多少。香农

熵的定义如下:

举一个简单的例子:如果有人告诉你11点过60分钟是12点,你一定觉得他说的是废话;但是

如果有人告诉你你的期末成绩优秀,你一定很感兴趣。这是因为前者的概率

因此它的熵为0,所以给你提供的信息也是0。

而后者的概率

(不及格,及格,中等,良好,优秀)

因此这件事情的熵为0.69,所以会提供给你一些信息。熵

第一步先介绍一下熵的相关概念。维恩图

上图

,

表示事件

,

的信息;

被称为条件熵:表示在知道事件

的情况下,此时再知道事件

可以提供给我们

的信息。

被称为互信息:表示事件

共同提供的信息;也可以理解为知道了事件

可以对事件

提供多少信息,反之亦然。

被称为联合熵:表示知道事件

之后可以提供给我们的信息。

其中有:

(怎么计算

等公式我就不写了,主要是理解各种信息的关系)特征选择

这部分稍微谈一下特征选择方法。特征选择方法根据是否与后续的分类器交互分为过滤式、嵌

入式以及包裹式。其中过滤式特征选择不需要与分类器交互,而其他两种都需要和分类器进行

交互。特征选择流程

特征选择主要分为子集生成、子集评价、停止准则三大部分。

子集生成主要是如何选择特征,例如穷举法,前向选择、后向消除、启发式选择等等。

子集评价中有很多度量方法:准确率、距离、相关性、互信息等等;使用不同的度量方法最终

得到的特征子集也不一样。

停止准则是满足什么条件的时候停止特征选择过程,通常有特征子集达到一定的大小,选择阈

值以上的特征等等。基于互信息的特征选择方法

OK,当你对上面两部分有了了解之后,这部分就来说一下基于互信息的特征选择方法。

基于互信息的特征选择方法选择特征的过程比较简单。子集生成使用前向生成法,子集评价这

部分等下要讨论的部分,停止准则一般为特征子集大小到达一个预设值就停止。举个例子说:

我们数据集有100个特征,我们要选择20个,那么此方法就会遍历特征20次,每次都根据评价

准则选择最优的特征放入特征子集。

假设我们数据集特征为

,类别为

。如何设置评价标准才比较合理。

最简单的想法就是只考虑每个特征和类别之间的互信息

,根据互信息的大小对特征

排序,然后选择最前面的

个特征作为特征子集。这种特征选择方法也被称为MIM。其中

为候选的特征。

但是MIM方法有很明显的缺点,只考虑了特征和类别之间的相关性,没有考虑类别和类别的相

关性,机会造成特征子集的冗余;也就是可能出现

值都很大,但是

也很大(甚至接近1),这种情况

取其一即可。为了解决冗余性的问题,又

有两种不同的算法MIFS和MRMR被提出:

其中

为已经选择的特征,

表示

的大小。这样在选择新特征的时候不仅考虑了候选

特征和类别之间的互信息,也考虑了候选特征和已选特征之间的相关性,减少了冗余度。事情

到这里似乎已经很完美了,毕竟及考虑了相关性,也考虑了冗余性。然而,还有一个问题需要

考虑。

我们选择特征子集的首要目标是希望特征子集针对类别的相关性高,冗余性小。但是

是两个特征之间的互信息,并没有考虑到类别。进一步说,两个特征之间的冗余

大,并不一定能说明这两个特征在类别上的冗余也大。据此,一系列考虑类内冗余的方法

也被提出,例如CIFE算法:

第二项为类内特征冗余,即我们知道了类别信息,不同特征再次基础上的互信息。

下面再看一个维恩图:

其中

表示类别的信息量,

表示已选择特征子集

表示候选特征。

最终的目标就是希望可以用尽可能的少的特征,使得

较大。上图中:

但是其中

这部分和类别没有关系,也就说这部分信息对于类别是无用的,我们

需要的只有类内冗余

这部分,也就是

其他关于降维的文章:超爱学习:10种常用降维算法源代码(python)​zhuanlan.zhihu.com超爱学习:你知道PCA的四种写法么​zhuanlan.zhihu.com

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值