特征选择

来源:互联网 发布:任亮 java 编辑:程序博客网 时间:2024/06/05 17:43

特征选择


对于一个样本,它可能具有很多种属性,一般称之为”特征“。在学习的过程中,有些特征很重要,有些特征显得无关紧要,有些特征相互依赖,容易导致模型训练时间加长、模型复杂度升高、模型泛化能力下降等问题。那么就需要从所有的特征中选出有用和关键的特征以避免上述问题。这个从所有的特征中挑选有利于学习的特征子集的过程称为”特征选择“。

严格来说,特征选择可以认为是一个数据预处理的过程,这样可以有效的避免维数灾难和降低”噪声“对学习的影响。

特征选择的过程主要可以分为两个部分:子集搜索和子集评价。


子集搜索

启发式搜索

前向搜索
对于给定的特征集合F={a1,a2,...,ad},S表示候选子集,V表示当前最优子集,f表示评价函数,E表子集的评价值。那么前向搜索算法如下:
1. 最开始可以将每个特征都看作一个独立的候选子集S={{a1},{a2},...,{ad}};
2. 对各个候选子集进行评价Ei=f(Si);
3. 选出评价最好的子集, 若该候选子集的评价高于当前最优子集,则更新最优子集V=Si,i=argmink=d|V|{E1,E2,...Ek},否则停止搜索,终止算法;
4. 更新特征集合 F:=FV;
4. 然后再剩余的特征中选出一个特征加入该最优子集形成一个新的候选子集S={V+am| amV},这样就有一组比当前最优子集高一维的候选子集;
5. 跳转到步骤2。

后向搜索
从特征全集开始,每次从该特征集中删除一个特征,使得剔除特征后评价函数有更好的值。

双向搜索
同时使用前向搜索和后向搜索,如果两种搜索方法得到同一个子集则停止搜索。

增L去R选择
有两种形式:1)有空集开始,每次增加L个特征然后从中去除R个特征;2)从全集开始,每次先去除R个特征,然后增加L个特征。

浮动选择
当增L去R选择算法中的L和R的值不是固定的时候,就变成了浮动选择。

决策树
先生成决策树,然后在进行剪枝,获得的特征就是待选的特征子集。


随机算法

(1)随机产生一个特征子集,在该子集上执行前向或者后向搜索。
(2)模拟退火算法
(3)遗传算法


完全搜索

完全搜索分为穷举搜索和非穷举搜索。
(1)广度优先搜索
(2)分支定界搜索
(3)定向搜索
(4)最优优先搜索


子集评价

给定数据集D,假定D中第i类所占的比例为pii|Y|,如果样本属性是离散型的,可以使用信息增益来评价子集。过程类似于决策树中的最优划分属性选择。
参考:决策树最优划分属性选择


常见的特征选择方法

过滤式选择

过滤式学习是先对数据集进行特征选择,然后再训练学习器。特征选择的过程与后续的学习器训练无关。代表方法有:Relief法等。

包裹式选择

包裹式特征选择直接把最终将要使用的学习器的性能作为特征子集的评价准则。就是将每个特征子集用于学习器的训练,然后用结果来作为评价该特征子集的好坏。代表性的方法有:LVW等。

嵌入式选择

嵌入式选择是将特征选择过程与学习器训练过程融为一体,两者在同一个优化过程中完成,也就是在学习器训练的过程中自动的完成特征的选择。典型的方法就是在损失函数中引入正则项,使得训练的结果具有稀疏性,也就间接地完成了特征的选择。L1,L2范数正则化均有助于降低过拟合风险并使结果具有稀疏性。


原创粉丝点击