zoukankan      html  css  js  c++  java
  • 特征选择学习笔记1(综述)

    特征选择学习笔记

    1.定义

    特征选择( Feature Selection )也称特征子集选择( Feature Subset Selection , FSS ),或属性选择( Attribute Selection )。是指从已有的M个特征(Feature)中选择N个特征使得系统的特定指标最优化,是从原始特征中选择出一些最有效特征以降低数据集维度的过程,是提高学习算法性能的一个重要手段,也是模式识别中关键的数据预处理步骤。对于一个学习算法来说,好的学习样本是训练模型的关键。反正就是选择最大程度上能够代替总体的最少指标(属性)。
    (这个地方我还是有个疑问的。emmmm。。。特征选择和主成分分析和因子分析的区别是啥?回头写个专门的剖析)

    2.四个要素

    特征选择可以看作一个搜索寻优问题。对大小为n 的特征集合, 搜索空间由2n-1 种可能的状态构成。Davies 等证明最小特征子集的搜索是一个NP 问题,即除了穷举式搜索,不能保证找到最优解。但实际应用中,当特征数目较多的时候, 穷举式搜索因为计算量太大而无法应用,因此人们致力于用启发式搜索算法寻找次优解。一般特征选择算法必须确定以下4 个要素:1)搜索起点和方向;2)搜索策略;3)特征评估函数;4)停止准则

    2.1搜索起点和方向

    搜索起点是算法开始搜索的状态点,搜索方向是指评价的特征子集产生的次序。搜索的起点和搜索方向是相关的,它们共同决定搜索策略。一般的,根据不同的搜索起点和方向,有以下4 种情况:

1)前向搜索搜索起点是空集S,依据某种评价标准,随着搜索的进行,从未被包含在S 里的特征集中选择最佳的特征不断加入S。(**往里面加,由多到少)
  • 2)后向搜索搜索起点是全集S,依据某种评价标准不断从S 中剔除最不重要的特征,直到达到某种停止标准。(**剔除,由少到多)
  • 3)双向搜索双向搜索同时从前后两个方向开始搜索。一般搜索到特征子集空间的中部时,需要评价的子集将会急剧增加。当使用单向搜索时,如果搜索要通过子集空间的中部就会消耗掉大量的搜索时间,所以双向搜索是比较常用的搜索方法。
  • 4)随机搜索随机搜索从任意的起点开始,对特征的增加和删除也有一定的随机性。
    • ###2.2搜索策略 假设原始特征集中有n 个特征(也称输入变量/属性),那么存在2n-1 个可能的非空特征子集。搜索策略就是为了从包含 2n-1 个候选解的搜索空间中寻找最优特征子集而采取的搜索方法。搜索策略可大致分为以下3 类:
  • 1)穷举式搜索它可以搜索到每个特征子集。缺点是它会带来巨大的计算开销,尤其当特征数较大时,计算时间很长。分支定界法(Branch and Bound, BB)通过剪枝处理缩短搜索时间。 数据多,这个方法适合小样本,但是现在小样本也就不需要特征选择了呢,so,这个方法了解就行
  • 2)序列搜索它避免了简单的穷举式搜索,在搜索过程中依据某种次序不断向当前特征子集中添加或剔除特征,从而获得优化特征子集。比较典型的序列搜索算法如:前向后向搜索、浮动搜索、双向搜索、序列向前和序列向后算法等。序列搜索算法较容易实现,计算复杂度相对较小,但容易陷入局部最优。 (这几个我还不是很了解,但是论文中有很多都是基于序列搜索算法进行选择的;例如李占山,刘兆赓,丁国轩,李伟博,王美如.基于XGBoost的特征选择算法[J/OL].通信学报:1-8[2019-10-19].http://kns.cnki.net/kcms/detail/11.2102.TN.20190830.1710.002.html.)这篇文献可以看下
  • 3)随机搜索由随机产生的某个候选特征子集开始,依照一定的启发式信息和规则逐步逼近全局最优解。例如:遗传算法(Genetic Algorithm, GA)、模拟退火算法(SimulatedAnnealing, SA)、粒子群算法(Particl Swarm Optimization,PSO)和免疫算法(Immune Algorithm, IA)等。 这几个群智能算法都是随机初始化种群的,很多其他的群智能算法例如花授粉算法,鲸鱼优化算法也是随机初始化种群的
    • ###2.3特征评估函数(评价函数) 评价标准在特征选择过程中扮演着重要的角色,它是特征选择的依据。评价标准可以分为两种:一种是用于单独地衡量"每个特征的预测能力"的评价标准;另一种是用于评价某个特征子集"整体预测性能"的评价标准。 在Filter方法中,一般不依赖具体的学习算法来评价特征子集,而是借鉴统计学、信息论等多门学科的思想,根据数据集的内在特性来评价每个特征的预测能力,从而找出排序较优的若干个特征组成特征子集。通常,此类方法认为最优特征子集是由若干个预测能力较强的特征组成的。相反,在Wrapper 方法中,用后续的学习算法嵌入到特征选择过程中,通过测试特征子集在此算法上的预测性能来决定它的优劣,而极少关注特征子集中每个特征的预测性能如何。因此,第二种评价标准并不要求最优特征子集中的每个特征都是优秀的。 介绍下常用的三个方法 ![](https://img2018.cnblogs.com/blog/1365906/201910/1365906-20191019135830336-656462005.png) 特征选择方法依据是否独立于后续的学习算法, 可分为过滤式(Filter) 和封装式(Wrapper)两种.Filter 与后续学习算法无关, 一般直接利用所有训练数据的统计性能评估特征, 速度快, 但评估与后续学习算法的性能偏差较大. Wrapper 利用后续学习算法的训练准确率评估特征子集, 偏差小, 计算量大, 不适合大数据集.

      2.3.1过滤式(Filter) 评价策略的特征选择方法

      Filter 特征选择方法一般使用评价准则来增强特征与类的相关性, 削减特征之间的相关性. 可将评价函数分成4 类: 距离度量、信息度量、依赖性度量以及一致性度量.

      2.3.2、封装式(Wrapper) 评价策略的特征选择方法

      除了上述4 种准则, 分类错误率也是一种衡量所选特征子集优劣的度量标准. Wrapper 模型将特征选择算法作为学习算法的一个组成部分, 并且直接使用分类性能作为特征重要性程度的评价标准. 它的依据是选择子集最终被用于构造分类模型. 因此, 若在构造分类模型时, 直接采用那些能取得较高分类性能的特征即可, 从而获得一个分类性能较高的分类模型. 该方法在速度上要比Filter 方法慢, 但是它所选择的优化特征子集的规模相对要小得多, 非常有利于关键特征的辨识; 同时它的准确率比较高, 但泛化能力比较差, 时间复杂度较高. 目前此类方法是特征选择研究领域的热点, 相关文献也很多.

      R1:Hsu 等人用决策树来进行特征选择, 采用遗传算法来寻找使得决策树分类错误率最小的一组特征子集.
      R2:Chiang等人将Fisher 判别分析与遗传算法相结合, 用来在化工故障过程中辨识关键变量, 取得了不错的效果.
      R3:Guyon 等人使用支持向量机的分类性能衡量特征的重要性程度, 并最终构造一个分类性能较高的分类器.
      R4:Krzysztof提出了一种基于相互关系的双重策略的Wrapper 特征选择方法.
      R5:叶吉祥等人提出了一种快速的Wrapper 特征选择方法FFSR(fast featuresubset ranking), 以特征子集作为评价单位, 以子集收敛能力作为评价标准.
      R6:戴平等人利用SVM线性核与多项式核函数的特性, 结合二进制PSO 方法, 提出了一种基于SVM的快速特征选择方法.
      ......
      综上所述, Filter 和Wrapper 特征选择方法各有优缺点. 将启发式搜索策略和分类器性能评价准则相结合来评价所选的特征, 相对于使用随机搜索策略的方法, 节约了不少时间. Filter 和Wrapper 是两种互补的模式, 两者可以结合. 混合特征选择过程一般由两个阶段组成, 首先使用Filter 方法初步剔除大部分无关或噪声特征, 只保留少量特征, 从而有效地减小后续搜索过程的规模. 第2 阶段将剩余的特征连同样本数据作为输入参数传递给Wrapper 选择方法,以进一步优化选择重要的特征. 例如,有学者采用混合模型选择特征子集, 先使用互信息度量标准和bootstrap 技术获取前k个重要的特征, 然后再使用支持向量机构造分类器

      3停止准则

      停止标准决定什么时候停止搜索, 即结束算法的执行。它与评价准则或搜索算法的选择以及具体应用需求均有关联。常见的停止准则一般有:
      先简单的说就是:达到规定时间;达到迭代测试;达到规定的阈值/精度

  • 1)执行时间即事先规定了算法执行的时间,当到达所制定的时间就强制终止算法运行,并输出结果。
  • 2)评价次数即制定算法需要运算多少次,通常用于规定随机搜索的次数, 尤其当算法运行的结果不稳定的情况下,通过若干次的运行结果找出其中稳定的因素。
  • 3) 设置阈值一般是给算法的目标值设置一个评价阈值,通过目标与该阈值的比较决定算法停止与否。不过,要设置一个合适的阈值并不容易,需要对算法的性能有十分清晰的了解。否则,设置阈值过高会使得算法陷入死循环,阈值过小则达不到预定的性能指标。
  • ###4基本框架编辑 迄今为止, 已有很多学者从不同角度对特征选择进行过定义: Kira 等人定义理想情况下特征选择是寻找必要的、足以识别目标的最小特征子集; John 等人从提高预测精度的角度定义特征选择是一个能够增加分类精度, 或者在不降低分类精度的条件下降低特征维数的过程; Koller 等人从分布的角度定义特 征选择为: 在保证结果类分布尽可能与原始数据类分布相似的条件下, 选择尽可能小的特征子集;Dash 等人给出的定义是选择尽量小的特征子集, 并满足不显著降低分类精度和不显著改变类分布两个条件. 上述各种定义的出发点不同, 各有侧重点, 但是目标都是寻找一个能够有效识别目标的最小特征子集. 由文献可知, 对特征选择的定义基本都是从分类正确率以及类分布的角度考虑. Dash 等人给出了特征选择的基本框架, 由于子集搜索是一个比较费时的步骤, Yu 等人基于相关和冗余分析, 给出了另一种特征选择框架, 避免了子集搜索, 可以高效快速地寻找最优子集.框架如图2 所示. [3]

    从特征选择的基本框架可以看出, 特征选择方法中有4 个基本步骤: 候选特征子集的生成(搜索策略)、评价准则、停止准则和验证方法. 目前对特征选择方法的研究主要集中于搜索策略和评价准则, 因而, 一般从搜索策略和评价准则两个角度对特征选择方法进行分类.

    Reference

    1. 刘家锋,赵巍,朱海龙,金野编著;唐降龙主审 .《模式识别》.哈尔滨:哈尔滨工业大学出版社, 2014
    2. 计智伟,胡珉,尹建新,特征选择算法综述,《电子设计工程》, 2011, 19(9):46-51
    3. 姚旭,王晓丹,张玉玺,权文,特征选择方法综述,《控制与决策》, 2012, 27(2):161-166
    4. 卜华龙,夏静,韩俊波,特征选择算法综述及进展研究,《巢湖学院学报》, 2008, 10(6):41-44
  • 查看全文
  • 相关阅读:
    Java 中的JOption函数
    01背包与完全背包(对比)
    AC注定不平坦(大神回忆录)
    背包精讲之——01背包
    动规问题概述(待整理)
    背包九讲
    Tautology(递推)||(栈(stack))(待整理)
    深度优先和广度优先区别
    Linux下JDK、Tomcat的安装及配置
    同IP不同端口Session冲突问题
  • 原文地址:https://www.cnblogs.com/gaowenxingxing/p/11703674.html
  • Copyright © 2011-2022 走看看