5

我想训练一个回归模型,为此我使用随机森林模型。但是,我还需要进行特征选择,因为我的数据集中有很多特征,我担心如果我使用了所有特征,那么我会过度拟合。为了评估我的模型的性能,我还进行了 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 中每个模型的选定特征的并集)

4

2 回答 2

7

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

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

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

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

-- 每次您在上述折叠中进行 CV 时,请为您在该特定折叠中选择的功能投票。在 5 折 CV 结束时,选择特定数量的具有最高票数的特征。

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

于 2015-03-04T15:18:12.200 回答
2

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

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

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

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

于 2013-10-30T10:05:32.183 回答