最近在做kdd cup 2013,特征倒是能yy出来不少,但是加到GBDT里面去效果就是不好,map反而下降了。
所以想做一个feature selection,现有的特征也不是很多,三四十个,但是全用上效果比较差。
特征选择严格来说也是模型选择中的一种。这里不去辨析他们的关系,重点说明问题。假设我们想对维度为n的样本点进行回归,然而,n可能大多以至于远远大于训练样例数m。但是我们感觉很多特征对于结果是无用的,想剔除n中的无用特征。n个特征就有种去除情况(每个特征去或者保留),如果我们枚举这些情况,然后利用交叉验证逐一考察在该情况下模型的错误率,太不现实。因此需要一些启发式搜索方法。
前向搜索:
1、 初始化特征集F为空。 2、 扫描i从1到n, 如果F中的特征数达到了n或者预设定的阈值(如果有的话),那么输出整个搜索过程中最好的F,没达到转到2 |
前向搜索属于wrapper model feature selection。Wrapper这里指不断地使用不同的特征集来测试学习算法。前向搜索说白了就是每次增量地从剩余未选中的特征选出一个加入特征集中,待达到阈值或者n时,从所有的F中选出错误率最小的。
既然有增量加,那么也会有增量减,后者称为后向搜索。先将F设置为{1,2,..,n},然后每次删除一个特征,并评价,直到达到阈值或者为空,然后选择最佳的F。
我是按这样的框架实现,由于训练一次模型的时间比较长,O(n^2)的复杂度也只能让我的feature selection的程序慢慢跑了
参考资料:
http://www.cnblogs.com/jerrylead/archive/2011/03/27/1996799.html