您应该采纳哪种特征去创建一个可预测的模型呢?
这是一个难题,可能需要您对问题有深入的了解。
自动筛选您的数据中最具价值和最相关的特征是可能的,这个过程被称为是特征选择。
在这篇文章中,您会了解到特征选择(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
))中,将模型约束为较低的复杂性(较少的系数)。
正则化算法的例子是LASSO
(Least absolute shrinkage and selection operator
),弹性网络(Elastic Net
)和岭回归(Ridge regression
)。
我们已经在这个博客上看到了很多功能选择的例子。
Weka
执行特征选择的教程,请参阅“ 特征选择以提高准确性和减少训练时间 ”。Python
中的 scikit-learn
递归消除的方法,请参阅“ 使用Scikit-Learn在Python中进行功能选择 ”。Caret R
软件包进行递归功能消除的方法,请参阅使用Caret R软件包进行功能选择 ”特征选择是应用机器学习过程的另一个关键部分,如模型选择,您不能一劳永逸。
将特征选择作为模型选择过程的一部分是很重要的。如果您不这样做,您可能会无意中将偏差引入您的模型中,导致过度拟合。
...应该在不同的数据集上进行特征选择,而不是在训练您的预测模型上进行特征选择......不这样做的效果是您会过度训练您的训练数据。
例如,当您使用交叉验证等准确性估计方法时,必须在内部循环中包含特征选择。这意味着在模型训练之前,在准备好的文件夹上执行特征选择。一个错误的做法是首先执行特征选择,然后准备数据,再对所选特征执行模型选择和训练。
如果我们采用适当的程序,并在每一个文件夹中进行特征选择,那么在文件夹中所使用的特征选择中就不再有任何关于这些特征的信息。
原因是,选择这些特性的决策是在整个训练集上做出的,而这些决定又被传递到模型上。这可能会生成一种模型,该模型被选中的特性被增强,而不是通过其他模型进行反馈的,以获得更好的结果,所以实际上它是有偏差的结果。
如果您对所有数据执行特征选择,然后进行交叉验证,那么交叉验证程序的每个文件夹中的测试数据也用于选择特征,这就是性能分析的偏差。
“ 变量和特征选择介绍 ”(PDF)的作者Isabelle Guyon和Andre Elisseeff 提供了一个极好的清单,您可以在下次需要为您预测建模问题选择特征数据时使用。
我在这里展示了部分清单的内容:
在特定平台上选择功能需要帮助吗?以下是一些可以帮助您快速入门的教程:
为了更深入地讨论这个话题,您可以选择一个关于这个话题的专业书籍,比如下面的任何一个:
特征选择是特征工程的一个子课题。您可能想在帖子中深入研究特征工程:
您可能想在帖子中深入了解功能工程:
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有