machine-learning - 为什么在执行交叉验证之前根据预测变量和因变量之间的低相关性删除预测变量是不正确的?

标签 machine-learning cross-validation feature-selection

假设我有预测变量 X1X2、...、Xn 和因变量 Y

我检查预测变量与 Y 之间的相关性,并删除与 Y 相关性较低的预测变量。现在,我使用 Y 和其余预测变量之间的交叉验证来训练逻辑回归模型。

这个方法有什么问题吗?

最佳答案

这样做可能会出现很多问题,最终会产生一个非常冗长的答案 - 我只会指出两个我认为最重要的问题,您可以使用“流行语”来查找任何想法不清楚:

  1. 根据特征与目标的相关性删除特征本质上是特征过滤的一种形式。重要的是要了解特征过滤不一定会提高预测性能。想想例如将 2 个特征以 AND 或 OR 配置与目标变量组合在一起,就可以正确预测目标变量。这些特征与目标的相关性很低,但放弃它们很可能会降低您的预测性能。除了特征过滤器之外,还有特征包装器,您基本上可以使用特征子集与模型并评估模型的预测性能。因此,与仅查看特征和目标的特征过滤器相比,特征包装器查看实际的模型性能。顺便说一句:如果您最终使用基于特征相关性的特征过滤器,您可能不仅想丢弃特征与目标相关性低的特征,而且还想丢弃特征间相关性高的特征(因为这些特征不包含太多新的特征)信息)。

  2. 如果您想调整特征选择(例如,您想要在数据中保留的信息/方差量、您想要保留的特征数量、您允许的相关性数量等)以及如果您在交叉验证和重采样方法之外执行此操作,您可能最终会得到对最终模型过于乐观的错误估计。这是因为,如果不将这些包含在 CV 过程中,您最终将选择一个未正确(=独立)估计的“最佳”配置,因此可能只是碰巧是好的。因此,如果您想正确估计错误,您也应该考虑将特征选择纳入 CV 过程中。

关于machine-learning - 为什么在执行交叉验证之前根据预测变量和因变量之间的低相关性删除预测变量是不正确的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38299655/

相关文章:

scikit-learn - 多标签分类的特征选择(scikit-learn)

machine-learning - 何时应用特征选择

python - GridSearchCV 是否执行交叉验证?

python - 是否有一个包可以在 python 中运行蒙特卡罗交叉验证?

python - 如何使用 sklearn 库使用朴素贝叶斯进行文本分类?

python - scipy中fmin_cg的梯度函数

spss - 如何在SPSS中进行留一法交叉验证

python - 如何查看从 Select 中选择了哪些变量

machine-learning - GPU 在参数服务器上进行数据并行训练是否高效?

machine-learning - tensorflow KNN : How can we assign the K parameter for defining number of neighbors in KNN?