特征选择和交叉验证

DOS*_*ter 5 statistics machine-learning feature-extraction feature-selection cross-validation

我想训练一个回归模型,为此我使用随机森林模型。但是,我还需要进行特征选择,因为我的数据集中有很多特征,我担心如果我使用所有特征,那么我会过度拟合。为了评估我的模型的性能,我还进行了 5 折交叉验证,我对以下两种方法的问题是正确的,为什么?

1- 我应该将数据分成两半,在前半部分进行特征选择,并使用这些选定的特征对剩余的一半进行 5 折交叉验证 (CV)(在这种情况下,5 个 CV 将使用完全相同的选定特征)。

2-执行以下程序:

1- 将数据分成 4/5 用于训练和 1/5 用于测试 2- 将此训练数据(完整数据的 4/5)分成两半:a-) 在前半部分训练模型并使用经过训练的模型进行特征选择。b-) 使用第一部分中选择的特征来在训练数据集的后半部分训练模型(这将是我们最终训练的模型)。3- 在剩余的 1/5 数据(从未在训练阶段使用)上测试模型的性能 4- 重复上一步 5 次,每次我们随机(不替换)将数据分成 4 个/5 用于训练,1/5 用于测试

我唯一担心的是,在第二个程序中,我们将有 5 个模型,最终模型的特征将是这五个模型的顶级特征的联合,所以我不确定 5CV 的性能是否可以反映最终模型的最终性能,特别是因为最终模型与 5fold 中的每个模型具有不同的特征(因为它是 5 个 CV 中每个模型的所选特征的联合)

Lon*_*guy 7

交叉验证应该始终是任何机器学习算法中最外层的循环。

因此,将数据分成 5 组。对于您选择作为测试集的每个集 (1/5),在对训练集 (4/5) 进行特征选择后拟合模型。对所有 CV 折叠重复此操作 - 这里有 5 次折叠。

现在,一旦 CV 程序完成,您就可以估计模型的准确度,这是您个人 CV 折叠准确度的简单平均值。

至于在完整数据集上训练模型的最终特征集,请执行以下操作以选择最终特征集。

-- 每次你按照上面概述的方式在一个折叠上做简历时,投票给你在那个特定折叠中选择的功能。在 5 折 CV 的末尾,选择特定数量的获得最高票数的特征。

使用上面选择的一组特征进行特征选择的最后一个过程,然后在完整数据(所有 5 折的组合)上训练模型并将模型移至生产。


小智 2

对完整数据进行 CV(将其分为 5 个部分,并为每个分割使用不同的部分组合),然后对 cv 分割进行特征选择,然后对选择的输出进行 RF。

原因:因为 CV 会在不同的数据分割下检查您的模型,因此您的模型不会过度拟合。由于特征选择可以被视为模型的一部分,因此您必须检查是否存在过度拟合。

使用 CV 验证模型后,将整个数据放入其中并执行该单个模型的转换。

另外,如果您担心过度拟合,您应该限制树的深度和数量的 RF。CV 主要用作模型开发过程中的工具,最终模型会使用所有数据。