特征选择常用算法综述

特征选择的一般过程:

1.生成子集:搜索特征子集,为评价函数提供特征子集

2.评价函数:评价特征子集的好坏

3.停止准则:与评价函数相关,一般是阈值,评价函数达到一定标准后就可停止搜索

4.验证过程:在验证数据集上验证选出来的特征子集的有效性

1.生成子集

搜索算法有 完全搜索、启发式搜索、随机搜索 三大类。

(1)完全搜索

<1>宽搜(Breadth First Search):时间复杂度高,不实用

<2>分支界限搜索(Branch and Bound):其实就是宽搜加上深度的限制

<3>定向搜索(Beam Search):其实算是启发式的一种,对宽搜加上每次展开结点数的限制以节省时间空间,对于展开那几个结点由启发式函数确定

<4>最优优先算法(Best First Search):也是有启发式函数,对宽搜取最优结点进行展开

(2)启发式搜索

<1>序列前向选择(SFS , Sequential Forward Selection)

特征子集X从空集开始,每次选择能使得评价函数J(X)最优的一个特征x加入,其实就是贪心算法,缺点是只加不减

<2>序列后向选择(SBS , Sequential Backward Selection)

和SFS相反,从特征全集开始,每次选择使评价函数J(X)最优的特征x剔除,也是贪心,缺点是只减不增

<3>双向搜索(BDS , Bidirectional Search)

SFS和SBS同时开始,当两者搜索到同一个特征子集时停止。

<4>增L去R选择算法(LRS , Plus-l Minus-R Selection)

形式一:从空集开始,每次加L个特征,去除R个特征,使得J最优

形式二:从全集开始,每次去除R个特征,加入L个特征,使J最优。

<5>序列浮动选择(Sequential Floating Selection)

该算法由增L去R发展,不同之处在于L和R是会变化的,它结合了序列前后向选择、增L去R的特点并弥补了缺点。

①序列浮动前向选择(SFFS , Sequential Floating Forward Selection)

从空集开始,每轮选择子集x加入使得J最优,再选择子集z剔除使得J最优。

②序列浮动后向选择(SFBS , Sequential Floating Backward Selection)

与①相反,从全集开始,先剔除再加入。

<6>决策树(Decision Tree Method , DTM)

一般使用信息增益作为评价函数,待决策树生长后再进行剪枝,最后留下的叶子就是特征子集。

(3)随机算法

<1>随机产生序列选择算法(RGSS, Random Generation plus Sequential Selection)

随机产生特征子集,然后执行SFS或SBS,可作为SFS和SBS的补充,用于跳出局部最优解。

<2>模拟退火算法( SA, Simulated Annealing )

模拟退火可在一定程度上避免陷入局部最优,但是可能难以求解。

<3>遗传算法(GA, Genetic Algorithms)

首先随机产生一批特征子集,并用评价函数给这些特征子集评分,然后通过交叉、突变等操作繁殖出下一代的特征子集,并且评分越高的特征子集被选中参加繁殖的概率越高。这样经过N代的繁殖和优胜劣汰后,种群中就可能产生了评价函数值最高的特征子集。

2.评价函数

用于评价特征子集的好坏,主要分为Filter和Wrapper

(1)Filter

其实就是预处理,利用训练集自身的特点筛选出特征子集后再送入分类器进行学习,与分类器的选择无关。

(2)Wrapper

封装器用选取的特征子集对训练集进行分类,分类的精度作为衡量特征子集好坏的标准。

常见的评价函数有:

(1)相关性

基于假设:好的特征子集所包含的特征应该是与分类的相关度较高,而特征之间相关度较低

线性相关系数

(2)距离/相似度

基于假设:好的特征子集应该使得属于同一类的样本距离尽可能小,属于不同类的样本之间的距离尽可能远

常用相似度计算

(3)信息增益

之前讲过了,信息增益体现特征子集的出现对系统信息量的增加。

(4)一致性

若样本1与样本2属于不同的分类,但在特征A、 B上的取值完全一样,那么特征子集{A,B}不应该选作最终的特征集。

(5)分类器错误率

用分类的精度作为评判标准。

对于文本分类的文本特征提取,大都采用Filter方法进行特征提取,无论是基于词频的VSM方法还是基于语义的方法,大都是通过计算公式对每个特征项进行打分,

最后选择得分最高的k项形成特征子集。Wrapper方法用的很少,我自己认为是文本特征项数量巨大,对于上述不断生成特征子集再去评价实在太慢了,wrapper方法

也是因为效率不高而被舍弃。

注:上述特征选择常用算法综述摘自博客 http://www.cnblogs.com/heaad/archive/2011/01/02/1924088.html

时间: 2024-08-18 23:56:49

特征选择常用算法综述的相关文章

运动目标检测跟踪各过程算法综述

运动目标检测跟踪各过程算法综述 图像预处理数字图像中的几种典型噪声有:高斯噪声来源于电子电路噪声和低照明度或高温带来的传感器噪声:椒盐噪声类似于随机分布在图像上的胡椒和盐粉微粒,主要由图像切割引起或变换域引起的误差:加性噪声是图像在传输中引进的信道噪声.一般来说,引入的都是加性随机噪声,可以采用均值滤波.中值滤波.高斯滤波等方法去除噪声,提高信噪比.均值滤波在噪声分布较平均,且峰值不是很高的情况下能够得到较好的应用:中值滤波对尖脉冲噪声的滤除有较好的效果,并且能突出图像的边缘和细节:高斯滤波对滤

运动目标跟踪算法综述

运动目标跟踪是视频监控系统中不可缺少的环节.在特定的场景中,有一些经典的算法可以实现比较好的目标跟踪效果.本文介绍了一般的目标跟踪算法,对几个常用的算法进行对比,并详细介绍了粒子滤波算法和基于轮廓的目标跟踪算法.最后简单介绍了目标遮挡的处理.多摄像头目标跟踪和摄像头运动下的目标跟踪. 一.一般的目标跟踪算法 一般将目标跟踪分为两个部分:特征提取.目标跟踪算法.其中提取的目标特征大致可以分为以下几种: 1) 以目标区域的颜色直方图作为特征,颜色特征具有旋转不变性,且不受目标物大小和形状的变化影响,

深度学习之目标检测常用算法原理+实践精讲 YOLO / Faster RCNN / SSD / 文本检测 / 多任务网络

深度学习之目标检测常用算法原理+实践精讲 YOLO / Faster RCNN / SSD / 文本检测 / 多任务网络 资源获取链接:点击这里 第1章 课程介绍 本章节主要介绍课程的主要内容.核心知识点.课程涉及到的应用案例.深度学习算法设计通用流程.适应人群.学习本门课程的前置条件.学习后达到的效果等,帮助大家从整体上了解本门课程的整体脉络. 1-1 课程导学 第2章 目标检测算法基础介绍 本章节主要介绍目标检测算法的基本概念.传统的目标检测算法.目前深度学习目标检测主流方法(one-sta

五大常用算法

http://www.cnblogs.com/steven_oyj/archive/2010/05/22/1741370.html 分治算法 一.基本概念 在计算机科学中,分治法是一种很重要的算法.字面上的解释是"分而治之",就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题--直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并.这个技巧是很多高效算法的基础,如排序算法(快速排序,归并排序),傅立叶变换(快速傅立叶变换)-- 任何一个可以用计

推荐系统中常用算法 以及优点缺点对比

推荐系统中常用算法 以及优点缺点对比 在 推荐系统简介中,我们给出了推荐系统的一般框架.很明显,推荐方法是整个推荐系统中最核心.最关键的部分,很大程度上决定了推荐系统性能的优劣.目前,主要的推荐方法包括:基于内容推荐.协同过滤推荐.基于关联规则推荐.基于效用推荐.基于知识推荐和组合推荐. 一.基于内容推荐 基于内容的推荐(Content-based Recommendation)是信息过滤技术的延续与发展,它是建立在项目的内容信息上作出推荐的,而不需要依据用户对项目的评价意见,更多地需要用机 器

(转)常用算法(Algorithm)的用法介绍

2算法部分主要由头文件<algorithm>,<numeric>和<functional>组成. 2<algorithm>是所有STL头文件中最大的一个,其中常用到的功能范围涉及到比较.交换.查找.遍历操作.复制.修改.反转.排序.合并等等. 2<numeric>体积很小,只包括几个在序列上面进行简单数学运算的模板函数,包括加法和乘法在序列上的一些操作. 2<functional>中则定义了一些模板类,用以声明函数对象. 2STL提供

[转]五大常用算法:分治、动态规划、贪心、回溯和分支界定

Referred from http://blog.csdn.net/yapian8/article/details/28240973 分治算法 一.基本概念 在计算机科学中,分治法是一种很重要的算法.字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并.这个技巧是很多高效算法的基础,如排序算法(快速排序,归并排序),傅立叶变换(快速傅立叶变换)…… 任何一个可以用计算机求

五大常用算法:分治、动态规划、贪心、回溯和分支界定

苹果的WWDC ,除了发布了os x 10.10 和IOS8 外,还推出了Swift.详细点击这里 代码总体风格有点像Java,也有点像javascript. 下面给出一些代码段(来自苹果官方手册): println("Hello, world") "var myVariable = 42 myVariable = 50 let myConstant = 42" 摘录来自: Apple Inc. "The Swift Programming Languag

轻松看懂机器学习十大常用算法

轻松看懂机器学习十大常用算法 通过本篇文章可以对ML的常用算法有个常识性的认识,没有代码,没有复杂的理论推导,就是图解一下,知道这些算法是什么,它们是怎么应用的,例子主要是分类问题. 每个算法都看了好几个视频,挑出讲的最清晰明了有趣的,便于科普. 以后有时间再对单个算法做深入地解析. 今天的算法如下: 决策树 随机森林算法 逻辑回归 SVM 朴素贝叶斯 K最近邻算法 K均值算法 Adaboost 算法 神经网络 马尔可夫 1. 决策树 根据一些 feature 进行分类,每个节点提一个问题,通过