特征选择-(一)特征选择简介

翻译内容主要来自https://machinelearningmastery.com/an-introduction-to-feature-selection/

在构建预测模型时应该选择哪些特征??这或许是一个需要对相关领域知识有深入了解才能够解决的问题。
不过,也有一些自动化的方法能够选择出与问题最为相关的特征,这就是特征选择。
在阅读了本文之后,你将了解到不同特征选择方法,我们也为你提供了一个清单,记录了如何运用这些特征选择方法。

什么是特征选择

特征选择也被称为变量选择和属性选择,它能够自动地选择数据中目标问题最为相关的属性。

  特征选择…是在模型构建时中选择相关特征子集的过程。
                                        — 特征选择, 维基百科.

特征选择与降维不同。虽说这两种方法都是要减少数据集中的特征数量,但降维相当于对所有特征进行了重新组合,而特征选择仅仅是保留或丢弃某些特征,而不改变特征本身。
降维常见的方法有PCA,SVD,萨蒙映射等。

   特征选择是一种很有用的方法,它就像一个过滤器,丢弃一些用处小的特征。
                                          — Robert Neuhaus

特征选择解决的问题

特征选择方法能够帮助你构建更加准确的预测模型。运用特征选择方法,模型仅需少量的样本就可以得到较高的预测准确率,特征选择可以移除那些无关特征,构建复杂度更低、解释性更强的模型。

特征选择的目标有三个:1、提高模型的预测能力 2、构建效率更高,成本效益更高的模型。3、更好地理解数据生成的过程。
                                              — Guyon and Elisseeff 

特征选择算法

三种常见的特征选择算法包括:filter方法, wrapper方法和embedded方法.
Filter方法
Filter特征选择方法利用统计学手段为每个特征赋予一个权重,根据权重对特征进行排序,以此选择保留或移除某些特征,这类方法有的会独立地对每个特征进行考量,有的也会考虑特征之间的相关性。主要的Filter方法有:
- 卡方检验 Chi squared test
- 信息增益 information gain
- 相关系数 correlation coefficient scores

Wrapper方法
Wrapper方法将特征子集的选择视为一个搜索问题,首先生成不同的子集,然后进行评估,并将评估结果与其他子集进行比较。一般我们会在不同的子集上构建模型,再利用模型的预测准确率来对不同的特征子集打分。搜索方法可以是随机式的,例如随机爬山法,也可以是启发式的,例如前向迭代和反向迭代。

主要的一个Wrapper方法:递归特征消除算法(recursive feature elimination algorithm)

Embedded方法

Embedded方法是在模型构建的同时选择最好的特征。最为常用的一个Embedded方法就是:正则化。
正则化方法也被称为惩罚方法,主要思想是在模型的目标函数优化的过程中,对参数引入额外的限制,使得参数不至于过大,降低模型的复杂度。
带正则化的算法包括:LASSO回归,Elastic Net回归,Ridge回归。

一些其他的特征选择教程

Weka: For a tutorial showing how to perform feature selection using Weka see “Feature Selection to Improve Accuracy and Decrease Training Time“.
Scikit-Learn: For a recipe of Recursive Feature Elimination in Python using scikit-learn, see “Feature Selection in Python with Scikit-Learn“.
R: For a recipe of Recursive Feature Elimination using the Caret R package, see “Feature Selection with the Caret R Package“

特征选择时的陷阱

特征选择应当被视为模型选择的一部分。例如,采用交叉验证作为模型的评估方法时,模型的构建将会是一个迭代的过程,而特征选择也同样包含在这个迭代的过程中,也就是说,应当在数据划分训练集之后,再对训练集进行特征选择,然后再进行训练。在划分数据之前就进行特征选择是一种错误的做法,。

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

特征选择清单:

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, 利用第5步选择得到的几个高排名的特征,检测异常值,;检查并丢弃他们.

  8. 你知道应该尝试哪种方法? No, 使用一个线性预测器. 使用前向选择方法,用probe作为停止标准; 或者在第5步之后, 使用0范数的embedded方法作为比较, 用一个不断增加的特征子集建立一系列的模型. 看看能不能用一个更小的特征子集提高性能? 如果能的话, 用那个子集尝试一个线性预测器.

  9. 你有新的想法,时间,时间资源和足够的样例吗?Yes, 比较不同的特征选择方法,可以加入新的点子,相关参数,后向选择和embedded算法. 使用线性和非线性预测器. 用模型选择评估最好的方法.

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

你可能感兴趣的:(机器学习,特征工程)