特征选择方法学习笔记(二)

     之前看过了mRMR的方法了,从特征与目标的最大相似度和特征与特征间的最小冗余出发来寻找特征子集。这样的方法的确是不错的,在实验中取得了鲁棒的效果。但是经过和别的方法对比后发现,该方法目前在选择特征上以及不能算登峰造极了。或许大家仔细思考后可以发现,这个方法最大的一个短板就是对我们定义的相似度函数以及冗余函数敏感。也就是说我们定义不同的相似度函数和冗余函数可能造成差距较大的结果。而我们又如何保证自己定义的相似度函数和冗余函数就是最好的呢?或许今后在这两个函数上加以改进,又可以从这个角度出发得到一个更完美的结果。
     今天我们再换一个角度来看特征选择的问题。既然我们还没有办法很好的从微观上定义每个特征与目标的相似度以及特征间的冗余度,那么我们何不单刀直入,从宏观上直接对所有特征一起下手。也就是直接把所有特征放到一起,构造一个目标函数,然后优化它求得最合适的特征子集。那么方法可以达到这样的效果呢?其实单刀直入的一起优化不难理解,如果我们不要求选择特征子集,那么训练分类器所用到的目标函数(最小二乘的形式或者SVM的那个hinge loss的形式)就是把所有特征放到一起来优化,在这个情况下我们需要求得的是每个特征前面的权值。说到这儿,可能有的看官已经想到了,权值不就代表着特征的重要程度吗?如果按照权值的大小给特征的重要性排个序,那么不就选择除了相对重要的特征吗?如果你想到了这一步,恭喜你具备了敏锐的观察力和分析能力。如果你能继续想到这样做唯一的一个缺点就是如果粗暴的截取排序在前的一部分特征可能效果并不好,因为 特征之间是相互影响的,后面虽然贡献小的特征但是可能组合起来贡献就显著了 就更了不起了。记得我们在第一次笔记中说过的吗? “the m best features are not the best m features”,这句话的确是做特征选择的圣经啊,一定要牢记。人总是聪明的,聪明的人总是有办法的,我们又要单刀直入又要选择好的特征子集怎么办呢?如果让排序靠后的特征权重全都为0,也就是说毫无影响,那岂不就直接可以简单粗暴的提取前一部分的特征作为特征子集了吗?这个想法太好了,非常简单和自然,而科学中越自然越简单的东西往往效果也是越好的。那有什么办法来实现呢?还真有,那就是给目标函数加上一个权重的范数约束的正则项,而且是一范约束(L1)。L1约束说白了就是让所有权重的绝对值相加尽可能的小。加了这样一个约束后再去求最优化问题,得到的结果就有很多项为0了,约束前的参数可以控制约束的作用大小,如果参数去得打大就说明约束强,那么大多数都是为0的项。这样单刀直入的优化方法不但在特征选择中得到了很好的运用,其实在所有需要压缩和选择的地方都有着很好的运用。这也就是稀疏化的魅力,直接找到了最关键的,虽然稀疏但却强壮。
     如果有兴趣的同志可以看看《Efficient and robust feature selection via joint ℓ2, 1-norms minimization》,这是一篇2010年发表在NIPS上的文章,在实际运用中效果也非常的好。

你可能感兴趣的:(机器学习,特征选择)