前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >特征选择(Feature Selection)引言

特征选择(Feature Selection)引言

作者头像
仁梓
发布2018-02-07 14:43:30
3.7K0
发布2018-02-07 14:43:30

您应该采纳哪种特征去创建一个可预测的模型呢?

这是一个难题,可能需要您对问题有深入的了解。

自动筛选您的数据中最具价值和最相关的特征是可能的,这个过程被称为是特征选择。

在这篇文章中,您会了解到特征选择(feature selection),下一次您可以使用同种类型的方法和一个有制可循的清单,以供您在需要选择机器学习模型特征时使用。

特征选择引言

John Tann拍摄,保留部分权利

什么是特征选择

特征选择又被称为变量选择(variable selection)或者属性选择(attribute selection)。

这是一种自动选择数据(如表格数据中的列)的方式,它自动选择属性,属性中会包括与您正在处理的预测建模问题最相关的数据。

特征选择...是选择用于构建相关特征子集模型的过程

特征选择不同于维数约简(dimensionality reduction)。这两种方法都试图减少数据集中属性的数量,但维数约简通过创建新的属性集合来实现,特征选择则是依靠不改变数据的方式,去包含和排除数据中存在的属性来实现。

降维方法的例子包括主成分分析(Component Analysis),奇异值分解(Singular Value Decomposition)和 Sammon 映射 (Sammon’s Mapping.)。

特征选择是有用的,但它主要作为一个过滤器,消除除了您现有的特征之外没有用的特征。

特征选择解决的问题

特征选择方法帮助您完成任务,创建精确的预测模型。在需要更少的数据的同时,他们通过特征选择能够提供不错甚至更棒的准确性。

特征选择方法可以用来识别和去除数据,这种数据中包含无用,不相关和冗余的属性,他们会造成预测失真或者降低模型的实际的准确性。

更少的属性是可取的,因为它降低了模型的复杂性,更简单的模型更容易理解和解释。

变量选择的目标有三个方面:提高预测变量的预测性能,提供更快速,更具成本效益的预测变量,并更好地理解生成数据的底层运行。

特征选择算法

有三大类特征选择算法:过滤方法(filter methods),包装器方法(wrapper methods)和嵌入方法(embedded methods.)。

过滤方法

过滤器特征选择方法应用统计度量来为每个特征分配评分,这些特征按照得分排序,选择保留或是从数据集中删除,这些方法通常是单变量的,并且独立地考虑这个特征或者考虑因变量。

例如,过滤方法包括Chi平方检验(Chi squared test),信息增益(information gain)和相关系数分数(correlation coefficient scores)。

包装器方法

包装器方法选择一组特征值来协助检索问题,在这些特性中,不同的组合被准备、评估并与其他组合进行比较。通过模型的准确性分配一个分数,建立评估功能组合的预测模型。

搜索过程可能是有条不紊的,如最佳搜索(best-first search),它可以是随机的,如随机爬山算法(hill-climbing algorithm),也可以使用启发式,如向前和向后遍历来添加和删除特征。

包装器方法是递归特征消除算法的一个例子。

嵌入式方法

嵌入的方法可以了解在模型创建时,哪些特性对模型的精确性做出了最好的贡献。最常见的嵌入式特征选择方法是正则化方法(regularization methods)。

正则化方法也被称为惩罚方法(penalization methods),其将额外的约束引入到优化预测算法(例如回归算法(regression algorithm))中,将模型约束为较低的复杂性(较少的系数)。

正则化算法的例子是LASSOLeast absolute shrinkage and selection operator),弹性网络(Elastic Net)和岭回归(Ridge regression)。

功能选择教程和配方

我们已经在这个博客上看到了很多功能选择的例子。

选择功能时的陷阱

特征选择是应用机器学习过程的另一个关键部分,如模型选择,您不能一劳永逸。

将特征选择作为模型选择过程的一部分是很重要的。如果您不这样做,您可能会无意中将偏差引入您的模型中,导致过度拟合。

...应该在不同的数据集上进行特征选择,而不是在训练您的预测模型上进行特征选择......不这样做的效果是您会过度训练您的训练数据。

例如,当您使用交叉验证等准确性估计方法时,必须在内部循环中包含特征选择。这意味着在模型训练之前,在准备好的文件夹上执行特征选择。一个错误的做法是首先执行特征选择,然后准备数据,再对所选特征执行模型选择和训练。

如果我们采用适当的程序,并在每一个文件夹中进行特征选择,那么在文件夹中所使用的特征选择中就不再有任何关于这些特征的信息。

原因是,选择这些特性的决策是在整个训练集上做出的,而这些决定又被传递到模型上。这可能会生成一种模型,该模型被选中的特性被增强,而不是通过其他模型进行反馈的,以获得更好的结果,所以实际上它是有偏差的结果。

如果您对所有数据执行特征选择,然后进行交叉验证,那么交叉验证程序的每个文件夹中的测试数据也用于选择特征,这就是性能分析的偏差。

功能选择清单

变量和特征选择介绍 ”(PDF)的作者Isabelle Guyon和Andre Elisseeff 提供了一个极好的清单,您可以在下次需要为您预测建模问题选择特征数据时使用。

我在这里展示了部分清单的内容:

  1. 您有该领域知识吗?如果是的话,构建一组更好的临时“特性”。
  2. 您的功能相称吗?如果不是,请考虑使其正常化。
  3. 你怀疑特征的相互依存吗?如果是,通过构造连接特性或特性的产品来扩展您的特性,就像您的计算机资源允许的那样。
  4. 您是否需要删除输入变量(例如,成本,速度或数据理解的原因)?如果没有,构造析取特征或特征的加权和。
  5. 您是否需要单独评估特性(例如,了解它们对系统的影响,或者因为它们的数量太大,您需要进行第一次筛选)?如果是,则使用可变排序方法; 否则,无论如何,要获得基准的结果。
  6. 您需要预测吗?如果否,停止
  7. 您怀疑您的数据是“脏的”(有几个无意义的输入模式和/或噪声输出或错误的类标签)?如果是,则使用在步骤5中获得的排名最高的变量作为表示来检测异常值示例,检查和/或丢弃它们。
  8. 您知道先做什么吗?如果没有,使用线性预测器。使用“探针”方法的正向选择方法作为停止标准,或者使用0-norm嵌入式方法进行比较,按照步骤5的排序,使用增加的特征子集构造一个相同性质的预测因子序列。您是否可以匹配或改进一个较小的子集的性能?如果是,可以尝试使用该子集的非线性预测器。
  9. 您有新的想法,时间,计算资源和足够的例子吗?如果是的话,比较几种特征选择方法,包括您的新想法,相关系数,后向选择和嵌入方法。使用线性和非线性预测变量。选择最佳的模型选择方法
  10. 您想要一个稳定的解决方案(以提高性能和/或理解)?如果是,请对数据进行子采样,并对几个“bootstrap”重新进行分析。

进一步阅读

在特定平台上选择功能需要帮助吗?以下是一些可以帮助您快速入门的教程:

为了更深入地讨论这个话题,您可以选择一个关于这个话题的专业书籍,比如下面的任何一个:

特征选择是特征工程的一个子课题。您可能想在帖子中深入研究特征工程:

您可能想在帖子中深入了解功能工程:

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 什么是特征选择
  • 特征选择解决的问题
  • 特征选择算法
    • 过滤方法
      • 包装器方法
        • 嵌入式方法
        • 功能选择教程和配方
        • 选择功能时的陷阱
        • 功能选择清单
        • 进一步阅读
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档