我想在我的数据集上运行一些机器学习模型,例如随机森林、梯度提升或 SVM。我的数据集中有 200 多个预测变量,我的目标类是一个二进制变量。
我需要在模型拟合之前运行特征选择吗?如果我使用所有预测变量直接拟合模型,它会显着影响模型性能还是没有太大差异?
我想在我的数据集上运行一些机器学习模型,例如随机森林、梯度提升或 SVM。我的数据集中有 200 多个预测变量,我的目标类是一个二进制变量。
我需要在模型拟合之前运行特征选择吗?如果我使用所有预测变量直接拟合模型,它会显着影响模型性能还是没有太大差异?
特征选择可能被认为是一个要避免的阶段。您必须花费计算时间才能删除特征并实际丢失数据,并且您必须进行特征选择的方法不是最优的,因为问题是NP-Complete。使用它听起来不像是你不能拒绝的提议。
那么,使用它有什么好处呢?
现在针对您的具体情况:我建议您开始计算特征和概念之间的相关性。计算所有特征之间的相关性也很有用。请注意,有许多类型的有用相关性(例如,Pearson、互信息)和许多可能影响它们的属性(例如,稀疏性、概念不平衡)。检查它们而不是盲目地使用特征选择算法可能会在未来为您节省大量时间。
我认为您的数据集不会有很多运行时间问题。但是,您的样本/特征比率并不太高,因此您可能会从特征选择中受益。
选择一个复杂度低的分类器(例如,线性回归、小型决策树)并将其用作基准。在完整的数据集和具有特征子集的某些数据集上进行尝试。这样的基准将指导您使用特征选择。您将需要这样的指导,因为有很多选项(例如,要选择的特征数量、特征选择算法),因为目标通常是预测而不是特征选择,所以反馈至少是一步之遥。
几个月前,我在 Cross Validated 上发布了一个非常相似的问题,并得到了大量回复。阅读回复和评论。
是的,在执行数据整理和清理之后,特征选择是机器学习问题中最关键的任务之一。您可以在此处找到使用 XGBOOST 特征重要性实现特征选择过程的函数。