如何为 ML 模型选择特征

数据挖掘 机器学习 深度学习 数据挖掘 数据集 预测建模
2022-03-08 10:46:51

我有一个包含 5K 记录的数据集,用于二进制分类问题。

我的特征是min_blood_pressuremax_blood_pressuremin_heart_ratemax_heart_rate。类似地,我有超过 15 个测量值,每个测量值都有30 个变量的列minmax

当我correlation在数据上运行时,我能够看到这些输入特征是高度相关的。我的意思min_blood_pressure是与 高度相关(>80%)max_blood_pressure每个测量及其minmax特征都是高度相关的。尽管它们与目标变量的个体相关性较小。

那么在这种情况下,我应该放弃哪一个或者我应该如何处理这种情况?

我想有minmax变量是有原因的。在这种情况下你会怎么做?

我们是否应该找到所有测量值的平均值并创建一个新特征?

谁能帮我这个?

2个回答

我会从这里开始。最基本的想法是运行统计测试以查看目标变量如何依赖于每个特征。这些包括像chi-squareor之类的测试ANOVA基于树的模型还可以输出特征重要性。检查这篇文章kaggle 上有很多关于代码的帖子。可能值得检查这些:

由于您的数据集不是那么大,您可以推动网格搜索并检查您的模型在PCA的不同因素下的表现。

很难先验地判断您是否应该删除某些功能。我想尝试 30 种功能的每种组合完全超出了范围,尽管您可以尝试删除大多数冗余功能。

由于您的数据包含分类特征,因此尝试catboost可能是个好主意。他们声称它比其他梯度增强器更好地处理分类特征。请记住,默认的估计器数量是 xgboost 的 10 倍。您可能会降低它进行实验。

首先,我将创建具有所有功能的基本模型。现在来了一个问题:选择哪种方法?梯度助推器具有学习特征重要性的能力,那些冗余的将获得很小的权重,并且在删除特征时您可能看不到太大的改进。您可能会使用更多普通方法获得更多洞察力,但最终您肯定会将梯度提升部署到生产环境中,因此我认为它没有多大意义。我会坚持使用xgboostcatboost使用相同的参数进行实验。

请记住:尽管某些功能可能是高度冗余的,但它们仍可能为您的模型贡献一些知识。

你说:

是的,我已经运行了一些特征选择算法,例如 SelectKbest、SelectFrom Model、RFE、Feature Importance 等,它们同时输出最小值和最大值。例如 - Min_bp 和 Max_bp。当我通过运行相关性进行完整性检查时,我能够看到它们都是相关的。

一般来说,您有 2 个选项。

  1. 您可以删除不能预测目标变量的特征。这将包括统计测试,例如 ANOVA,请参见此处

然后根据 F 值,您只能保留具有较高 F 值的特征,这意味着它们对目标变量具有较高的预测能力。

  1. 如果要删除相关特征,例如在使用回归时(理想情况下需要不相关的变量),则可以使用 PCA 等降维。在这种情况下,新特征将不会关联,但您将无法投影回原始特征。PCA 将导致原始特征的线性组合。