在此前做过文本分类的算法,其中特征长度是1万7多个,样本是1000个,但是做过文本分类的童鞋都知道,如此长的特征使得文本分类非常慢,一般都是去进行特征选择,而我因为当时不懂,所以也就没有做优化。
接下来,正式介绍一下特征选择。
首先,我们先来谈谈理论基础。从上一篇关于VC维的介绍中,我们知道,VC维他是和样本数量m是成正比的,而我们特征个数如果非常大,那我们的VC维就很可能很大,我们有理由相信,真实的特征个数不会很多。 这不费观点保留,纯粹个人理解
现在来谈谈降维方法
这个算法的名称叫:wrapper model feature selection
假设我们有n个特征,我们想从中降维,那么有2的n次方个选择。对于一个很大的n,这样的选择会非常复杂,所以我们降维需要的算法叫forward search前向算法
前向算法的思想是这样的:
算法的思想是这样的,我们开始初始化中是一个空集,然后每次都遍历一遍特征,通过交叉验证看看加入哪个特征之后他的误差是最小的,如此循环不断加入新的特征值。那什么时候停止呢?这个一般是我们自己来设定一个特征上线个数
可以说,这种算法他的复杂度还是比较高的,因为我们每次选择一个特征还要进行交叉验证,交叉验证的复杂度就不低。