是否需要特征选择?

数据挖掘 机器学习 预测建模 特征选择 随机森林
2021-10-01 02:21:13

我想在我的数据集上运行一些机器学习模型,例如随机森林、梯度提升或 SVM。我的数据集中有 200 多个预测变量,我的目标类是一个二进制变量。

我需要在模型拟合之前运行特征选择吗?如果我使用所有预测变量直接拟合模型,它会显着影响模型性能还是没有太大差异?

3个回答

特征选择可能被认为是一个要避免的阶段。您必须花费计算时间才能删除特征并实际丢失数据,并且您必须进行特征选择的方法不是最优的,因为问题是NP-Complete使用它听起来不像是你不能拒绝的提议。

那么,使用它有什么好处呢?

  1. 许多特征和低样本/特征比率会在您的数据集中引入噪声。在这种情况下,您的分类算法可能会过拟合,并给您一种性能良好的错误感觉。
  2. 减少特征数量会减少后期的运行时间。这反过来将使您能够使用更高复杂度的算法,搜索更多超参数或进行更多评估。
  3. 较小的一组特征对人类来说更容易理解。这将使您能够专注于可预测性的主要来源并进行更精确的特征工程。如果你必须向客户解释你的模型,你最好展示一个有 5 个特征的模型,而不是一个有 200 个特征的模型。

现在针对您的具体情况:我建议您开始计算特征和概念之间的相关性。计算所有特征之间的相关性也很有用。请注意,有许多类型的有用相关性(例如,Pearson互信息)和许多可能影响它们的属性(例如,稀疏性、概念不平衡)。检查它们而不是盲目地使用特征选择算法可能会在未来为您节省大量时间。

我认为您的数据集不会有很多运行时间问题。但是,您的样本/特征比率并不太高,因此您可能会从特征选择中受益。

选择一个复杂度低的分类器(例如,线性回归、小型决策树)并将其用作基准。在完整的数据集和具有特征子集的某些数据集上进行尝试。这样的基准将指导您使用特征选择。您将需要这样的指导,因为有很多选项(例如,要选择的特征数量、特征选择算法),因为目标通常是预测而不是特征选择,所以反馈至少是一步之遥。

几个月前,我在 Cross Validated 上发布了一个非常相似的问题,并得到了大量回复。阅读回复评论。

https://stats.stackexchange.com/questions/215154/variable-selection-for-predictive-modeling-really-needed-in-2016

是的,在执行数据整理和清理之后,特征选择是机器学习问题中最关键的任务之一。您可以在此处找到使用 XGBOOST 特征重要性实现特征选择过程的函数。

https://github.com/abhisheksharma4194/Machine-learning