机器学习-特征选择

来源:互联网 发布:网络的利大于弊 编辑:程序博客网 时间:2024/06/11 02:05

在此前做过文本分类的算法,其中特征长度是1万7多个,样本是1000个,但是做过文本分类的童鞋都知道,如此长的特征使得文本分类非常慢,一般都是去进行特征选择,而我因为当时不懂,所以也就没有做优化。
接下来,正式介绍一下特征选择。
首先,我们先来谈谈理论基础。从上一篇关于VC维的介绍中,我们知道,VC维他是和样本数量m是成正比的,而我们特征个数如果非常大,那我们的VC维就很可能很大,我们有理由相信,真实的特征个数不会很多。 这不费观点保留,纯粹个人理解

现在来谈谈降维方法
这个算法的名称叫:wrapper model feature selection
这里写图片描述
假设我们有n个特征,我们想从中降维,那么有2的n次方个选择。对于一个很大的n,这样的选择会非常复杂,所以我们降维需要的算法叫forward search前向算法
前向算法的思想是这样的:
这里写图片描述
算法的思想是这样的,我们开始初始化中是一个空集,然后每次都遍历一遍特征,通过交叉验证看看加入哪个特征之后他的误差是最小的,如此循环不断加入新的特征值。那什么时候停止呢?这个一般是我们自己来设定一个特征上线个数
可以说,这种算法他的复杂度还是比较高的,因为我们每次选择一个特征还要进行交叉验证,交叉验证的复杂度就不低。 但是他的准确率是比较高的。
对应于前向算法,我们也后向算法,这里就不再详细说了,其实都是大同小异。

现在我们来介绍一下另一种特征选择方法, 他的复杂度相比于前面大大减少,但是他的准确率就不像前面那么高了。
这个算法的名字叫: Filter feature selection
这里写图片描述
这个算法的思想是我们通过相对熵来计算 x 和 y的关联度。关联度大那当然就是好的特征值了!
关于相对熵这部分知识,这里简单介绍下
这里写图片描述
也就是说相对熵计算的是两个概率差距有多大的一个度量。
在本特征选择的应用就是比较P(X,Y)和P(X)P(Y)的相对熵大小是多少。

在上面的定义里我们看到x,y都是2元值,更一般的情况,我们只要把定义域改一下就可以了,我们要做的就是选择一个特征值,遍历他的定义域,遍历y的定义域,计算相对熵,来选择相对熵最大对的特征。

这里写图片描述

最后有一个细节我们需要注意,通过相对熵,我们有了特征的排名,那我们是不是从高到低取给完事了呢? 不是的! 我们说过,相对熵他还是一种比较粗浅的估计,我们在这里还要用 交叉验证选择特征值,当然遍历范围可以我们自己定到足够小就OK了!

原创粉丝点击