中文原文链接:http://www.cnblogs.com/AHappyCat/p/5318042.html

英文原文链接: An Introduction to Feature Selection

下面的中文译文侧重从原理上进行解释,但是在实际的应用中往往侧重的是实现过程,

可以看考这个链接,描述的比较详细,需要细细的学习:http://blog.csdn.net/bryan__/article/details/51607215

【中文原文】

你需要哪些特征来构建一个预测模型?

这是一个困难的问题,需要这个领域的深度知识.

自动选择你的数据中的那些对要解决的问题最有用的或者最相关的特征是可能的. 这个过程叫做特征选择.

在这篇文章中,你会发现特征选择的方法和类型, 下一次你需要为机器学习模型选择特征的时候, 你可以使用和遵循这些方法的一个列表.

什么是特征选择

特征选择也被叫做变量选择或者属性选择.

它是自动选择你数据的一些属性的方法,而这些属性是和你要解决的预测模型问题特别相关的.

¨特征选择是一个选择相关特征子集,用于构建模型的过程¨

---Wikipedia entry

特征选择和降维不同.两种方法都是为了减少数据集的属性数量,但是降维是通过创建新的属性组合,特征选择包含和排除数据中的属性而并不改变它们. (降维可能改变数据属性,特征选择不改变它们)

降维的例子包括PCA(主成份分析),SVD(奇异值分解)和Sammon's mapping (Sammon映射).

"特征选择对于本身是有用的,但它主要是作为一个过滤器, 它屏蔽掉那些没用的特征,同时保护你的那些现有的特征."

-- Robert

特征选择解决的问题

特征选择辅助你创建一个准确的预测模型. 它们帮助你选择特征, 这些特征能够用更少的数据给你很好的或者更好的精度.

特征选择能够被用于鉴定和移掉不需要的,不相关的和冗余的属性,这些属性并不能提高预测模型精度或者可能事实上减少模型精度.

你需要更少的属性,因为它能够降低模型复杂度,而且一个更简单的模型能够被更简单的理解和解释.

"变量选择的目的有三个方面:提高预测器的预测性能, 提供更快和更低成本的预测器, 和提供更好的了解产生的数据的基本过程."

-- Guyon

特征选择算法

有三种一般类的特征选择算法: 过滤算法,包装算法和嵌入式算法.

1. 过滤算法

过滤特征选择方法运用统计方法将一个分值分配给每个特征.这些特征按照分数排序,然后决定是被保留还是从数据集中删除.这个方法通常是单变量且独立的考虑每个特征,或者考虑其依赖变量.

一些过滤方法包括Chi squared test(方卡检验),information gain(信息增益)和correlation coefficient scores(相关系数得分).

2. 包装算法

包装方法考虑一族特征作为搜索问题,不同的组合被准备,检验并和其他组合比较. 我们使用一个预测模型评估特征的组合,然后根据模型精度给每个特征组合一个分数.

这个搜索过程可能有条不紊的例如best-fist搜索算法, 它可能随机例如random hill-climbing 算法.或者它可能是启发式的例如前向和后向传递增添和删除特征的.

一个例子就是递归特征消除算法.

3. 嵌入式算法

嵌入式算法在模型创建的时候,学习哪些特征对于模型精度的贡献最大.最典型的嵌入式特征选择方法是正则化方法.

正则化方法也被称为引入附加约束到预测算法(例如回归算法)的优化,它偏向于较低复杂度的模型.

正则规划算法的例子是Lasso,Elastic Net和Ridge Regression.

特征选择教程和方法

在本文之前,我们已经看到许多特征选择的例子了.

选择特征时的陷阱


特征选择是另一个的应用机器学习过程的重要部分, 如模型选择. 你不可以放弃和忘记.

考虑特征选择在模型选择过程中很重要.如果你不能,你可能会在无意中带入偏见到你的模型中,最终导致过拟合.

"...应该在你的训练集以外做特征选择...不这样做,你将会导致训练数据的过拟合."

-- Ben

例如,当你使用精度估测方法,例如交叉验证的适合,你必须包含特征选择在每个内循环中. 这意味着特征选择是在模型训练前就已经在准备好的fold中执行了. 准备数据时先做特征选择,然后在模型选择和训练时执行是错误的. (??)

"如果我们运用合适的流程,在每个fold上执行特征选择,就不再会有关于特征和fold相关影响的信息".

--Dikran

其原因是,做出特征选择的决定是基于整个训练集的,这反过来传递到模型了.这可能会导致一个模型和其他模型相比,被所选择的特征而增强影响,看起来获得更好的结果,而事实上是有偏见的结果.

"如果你在所有数据上执行特征选择,然后交叉验证,再在交叉验证过程的每个fold的测试数据同样被用来选择特征, 这就造成了性能分析的偏见.

--Dikran

特征选择列表:

Esabelle Guyon 和 Andre Elisseeff  (“An Introduction to Variable and Feature Selection” 的作者)提供了一个特别好的列表, 下次你要为你的模型问题做数据特征选择的时候可以使用这张列表.

我已经把清单的重要部分转载过来啦:

1. 你是否有领域知识? Yes, 那就构建一个更好的特定设置的特征

2. 你的特征相配(尺度)吗? No, 那就归一化这些特征.

3. 你是否怀疑特征独立性? Yes, 通过构建联合特征或者特征的乘积,只要你的计算机资源允许.

4. 你需要修剪输入变量吗? No, 构建析取特征或者加权特征.

5. 你需要单独评估特征吗? Yes, 使用一个变量排序方法;否则无论怎样都去获取一个基本结果.

6. 你需要一个预测器吗? No, 停止.

7. 你怀疑你的数据"脏"吗? Yes, 检测异类例子,使用step5排在顶端的变量;检查和丢弃他们.

8. 你知道什么需要先测试吗? No, 使用一个线性预测器.  使用前向选择方法,用probe作为停止标准; 或者在step5 之后, 使用0范数嵌入方法作为比较, 用增加的特征子集建立一个相同特征的预测器序列. 你能用一个更小子集匹配或者提高性能吗? 如果能的话, 用那个子集尝试一个线性预测器.

9. 你有新的想法,时间,时间资源和足够的例子吗?Yes, 比较一些特征选择方法,包括你的想法,相关参数,后向选择和嵌入式算法. 使用线性和非线性预测器. 用模型选择选择最好的方法.

10. 你需要一个稳定的解吗? Yes, 二次采样你的数据,并为一些"bootstrap"重做你的分析.

更多阅读

为了在这个课题中有更深的理解, 你可以选择这个话题的一本书, 如下:

特征选择是特征工程的一个子课题. 你可能会喜欢深入看一下特征工程的话题. “Discover Feature Engineering, How to Engineer Features and How to Get Good at It“ , 下一篇博文就是这篇文章的翻译.

【转】[特征选择] An Introduction to Feature Selection 翻译的更多相关文章

  1. 单因素特征选择--Univariate Feature Selection

    An example showing univariate feature selection. Noisy (non informative) features are added to the i ...

  2. 机器学习-特征选择 Feature Selection 研究报告

    原文:http://www.cnblogs.com/xbinworld/archive/2012/11/27/2791504.html 机器学习-特征选择 Feature Selection 研究报告 ...

  3. the steps that may be taken to solve a feature selection problem:特征选择的步骤

    參考:JMLR的paper<an introduction to variable and feature selection> we summarize the steps that m ...

  4. 特征选择与稀疏学习(Feature Selection and Sparse Learning)

    本博客是针对周志华教授所著<机器学习>的"第11章 特征选择与稀疏学习"部分内容的学习笔记. 在实际使用机器学习算法的过程中,往往在特征选择这一块是一个比较让人模棱两可 ...

  5. highly variable gene | 高变异基因的选择 | feature selection | 特征选择

    在做单细胞的时候,有很多基因属于noise,就是变化没有规律,或者无显著变化的基因.在后续分析之前,我们需要把它们去掉. 以下是一种找出highly variable gene的方法: The fea ...

  6. The Practical Importance of Feature Selection(变量筛选重要性)

    python机器学习-乳腺癌细胞挖掘(博主亲自录制视频) https://study.163.com/course/introduction.htm?courseId=1005269003&u ...

  7. Graph Regularized Feature Selection with Data Reconstruction

    Abstract • 从图正则数据重构方面处理无监督特征选择: • 模型的思想是所选特征不仅通过图正则保留了原始数据的局部结构,也通过线性组合重构了每个数据点: • 所以重构误差成为判断所选特征质量的 ...

  8. 10-3[RF] feature selection

    main idea: 计算每一个feature的重要性,选取重要性前k的feature: 衡量一个feature重要的方式:如果一个feature重要,则在这个feature上加上noise,会对最后 ...

  9. Feature Selection Can Reduce Overfitting And RF Show Feature Importance

    一.特征选择可以减少过拟合代码实例 该实例来自机器学习实战第四章 #coding=utf-8 ''' We use KNN to show that feature selection maybe r ...

随机推荐

  1. HTTP标头

    HTTP头信息 头信息由“键:值”组成.它们描述客户端或者服务器的属性.被传输的资源以及应该实现连接. 四种不同类型的头标 通用头标:即可用于请求,也可用于响应,是作为一个整体而不是特定资源与事务相关 ...

  2. UITableView heightForHeaderInSection遇到的坑

    出现这种现象只需要把 heightforfoot改为0.01 - (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSectio ...

  3. header中Content-Disposition的作用

    在servlet3.0中 支持文件上传的注解@MultipartConfig 发现有个例子开头打印的信息中有Content-Disposition,一时好奇,所以了解了一下.顺便学习一下文件上传所需要 ...

  4. 1.Linux系统安装

    Linux系统安装系统分区(磁盘分区) 主要管理:文件和目录分类:主分区:最多有4个 扩展分区:1个扩展分区 和主分区最多4个 存放逻辑分区 逻辑分区:存放数据 格式化:高级格式化(逻辑格式化) 写入 ...

  5. sqlite嵌入式数据库C语言基本操作(1)

    sqlite嵌入式数据库C语言基本操作(1) :first-child{margin-top:0!important}img.plugin{box-shadow:0 1px 3px rgba(0,0, ...

  6. 杀死mapreduce

    在做mapreduce的时候,ctrl+c 其实就是在doc命令下杀死了mapreduce显示,后台还是有在运行mapreduce的程序 可以http://namenode.hadoop:8088/ ...

  7. this的用法

    因为循环是非常快的,我们手动点击的时候,for循环已经循环完了.如果在循环里面添加点击事件,点击事件的i的值就是循环结果的那个值,而不是对应的循环的值,此时,我们就需要用到this   来实现  点击 ...

  8. 省市级联.net

    初学javascript,编译省市级联,使用json在一般处理程序中编译,利用ajax传递数据到web前台 <html xmlns="http://www.w3.org/1999/xh ...

  9. .Net环境下的缓存技术介绍

    .Net环境下的缓存技术介绍 摘要: 介绍缓存的基本概念和常用的缓存技术,给出了各种技术的实现机制的简单介绍和适用范围说明,以及设计缓存方案应该考虑的问题(共17页) 1         概念 1.1 ...

  10. Linux系统下配置Tomcat

    1.将下载好的tomcat文件拷贝至/usr/java文件夹中: cp apache-tomcat-7.0.72.tar.gz /usr/java 2.进入/usr/java文件夹: cd /usr/ ...