zoukankan      html  css  js  c++  java
  • ML-特征选择

    1.概念

    特征选择是一个重要 “数据预处理”过程,机器学习任务中,获得数据之后通常先进行特征选择,此后再训练学习器。

    特征选择需要确保不丢失重要特征。

    “无关特征”:与当前学习任务无关;“冗余特征”:所包含信息能从其它特征中推演出来,很多时候不起作用,去除可以减轻学习负担。


    2.特征子集搜索与评价

    有许多特征,欲从特征集中选择一个包含所有重要信息的子特征集,如果没有经验领域知识等先验假设,就只能遍历所有子集了,但是这样显然是组合爆炸难的。可行的办法是产生一个候选子集,评估它,然后产生下一个候选子集,持续下去,直到无法找到更好的子集。显然有两个重要环节:1选择候选子集、2评估子集好坏

    1)子集搜索

    前向搜索:先将每一个特征看做是候选子集、选择最优子集;然后尝试上一轮中加入一个新的特征构成两个特征的候选子集、选择最优且要比第一轮最优;不断这样加入,直到某一轮加入后没有比之前的更好。

    后向搜索:从完全的特征集出发,如10个,尝试减少一个构成9个特征的候选子集,选择最佳;依次这样减少,直到减少的里面没有比上一轮更好。

    双向搜索:每一轮中增加一些特征(后续将不会去除)、减少一些特征,然后同样的评估,直到最优。

    以上策略是贪心的,并不能保证最优。

    2)子集评价

    假定样本为离散属性,数据集为D,共k个类,第i类样本所占比为pi(i=1,2,..,k)。对于属性A,按照其取值可以把D分成V个子集{D^1,D^2,...,D^V},(A=性别,可取v1=男,v2=女,D1=类别标记为男的样本集,D2=类别标记为女)。于是可以根据决策时的知识,计算属性A的信息增益(https://blog.csdn.net/jiang425776024/article/details/87644983信息增益越大意味着特征A包含的有助于分类的信息越多。于是对于每个候选特征子集。可以基于D计算出来的信息增益,作为评价准则

    特征子集搜索与子集评价相结合,即可得到特征选择方法。

    常见的特征选择方法大致为3类:过滤式filter、包裹式wrapper、嵌入式embedding与正则化.


    3. 过滤式选择

    过滤式先对数据集进行特征选择,然后训练,既,先过滤原始信息,再进行模型训练。

    Relief选择方法:设计一个“相关统计量”来度量特征的重要性。该统计量是一个向量,每个分量对应于一个初始特征;特征子集的重要性由子集中每个特征所对应的相关统计量分量之和来决定,最终,只需要指定一个阈值	au,选择比阈值大的相关统计分量对应的特征即可;也可以指定特征选择个数k,然后选择相关统计分量最大的k个特征。

    Relief相关统计量计算:给定训练集{ (x_1,y_1),(x_2,y_2),...,(x_m,y_m) },对每个示例xi,Relief 先在xi 的同类样本中寻找其最近邻样本 xi,nh,称为“猜中近邻”(near-hit),在从xi 的异类样本中寻找最近邻xi,nm,称为“猜错近邻”(near-miss),然后,相关统计量对应于属性 j 的分量为:

    varrho ^j=sum_{i=1}^{m}-diff(x_{i}^{j},x_{i,nh}^{j})^2+diff(x_{i}^{j},x_{i,nm}^{j})^2

    x_{i}^{j}表示 i 号样本在属性 j 上的取值,diff(x_{a}^{j},x_{b}^{j})的取值取决于属性 j 类型,

    离散型:x_{a}^{j}=x_{b}^{j}:diff(x_{a}^{j},x_{b}^{j})=0 \ x_{a}^{j}
eq x_{b}^{j}:diff(x_{a}^{j},x_{b}^{j})=1

    连续型(取值需要归一化0-1):diff(x_{a}^{j},x_{b}^{j})=|x_{a}^{j}-x_{b}^{j}|

    公式意义:若xi 与猜中近邻在属性 j 上的距离小于与猜错近邻的距离,说明属性 j 对于区分同类与异类样本是有益的,于是增大属性 j 的统计量分量;反之,与猜中的距离小于猜错的,说明起负作用,于是减少 j 统计分量。最后对基于不同样本得到的统计结果进行平均,就得到了各属性的相关统计量分量,分值越大则对应属性的分类能力越强.

    实际上,Relief只需要在数据集上进行采样计算即可,而不必全数据集。以上只是考虑二分类的情况,多分类有Relief-F,其原理类似,计算公式为:

    varrho ^j=sum_{i=1}^{m}-diff(x_{i}^{j},x_{i,nh}^{j})^2+sum_{l
eq k} p_l 	imes diff( x_{i}^{j},x_{i,lm}^{j})^2

    pl为第 l 类样本在D中的占比。既本类中不变,其它类中,每个类都找一个最近猜错样本计算diff然后乘以其类的占比。


    4. 包裹式

    与过滤式特征选择不考虑后续学习器不同,包裹式特征选择直接把最终将要使用的学习器的性能作为特征子集的评价准则。其目的是为给定学习器选择最有利于其性能、“量身定做”的特征子集

    因此从最终性能来说,包裹式要好,但是另一方面,特征选择过程中包裹式需要训练多次学习器,因此即使计算开销很大。

    LVW是一个典型的包裹式特征选择方法,最终分类器误差作为特征子集的评价准则。每次随机选择特征子集,连续T次没有更优的时候停止,用交叉验证的错误E做评价。


    5. 嵌入式与正则化

    嵌入法也是用机器学习的方法来选择特征,和前面不同的是,它不是通过不停的筛掉特征来进行训练,而是使用的都是特征全集。在特征选择与学习器训练过程融为一体,两者在同一个优化过程中完成

    最常用的是使用L1正则化和L2正则化来选择特征。

    L_1:min_w sum_{i=1}^{m} (y_i-w^Tx_i)^2+lambda ||w||_1 \ L_2:min_w sum_{i=1}^{m} (y_i-w^Tx_i)^2+lambda ||w||^2_2

    L1、L2都有助于降低过拟合风险,但是L1还有一个好处:获得“稀疏”参数解,w会有更少的非0分量。

    L1与平方误差项的交点更多的是在轴上,因此解分量更可能是0:

    L1意味着稀疏解中最终只有非0分量才会出现在最终模型中,相当于特征选择只选用了非0分量上对应的属性特征。


     

     

     

     

     

     

     

  • 相关阅读:
    JS中的constructor与prototype
    HTTP状态码
    CSS HACK 及常见问题
    js常见怪异
    js深拷贝和浅拷贝
    浏览器渲染
    google全球地址大全
    从function前面的!想到的
    2048
    js判定IE
  • 原文地址:https://www.cnblogs.com/onenoteone/p/12441713.html
Copyright © 2011-2022 走看看