我想训练回归模型,为了做到这一点,我使用随机森林模型。但是,我还需要进行功能选择,因为我的数据集中有很多功能,如果我使用了所有功能,我会害怕,我会过度拟合。为了评估我的模型的性能,我还进行了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可以反映最终模型的最终性能,特别是因为最终模型具有与5倍中每个模型不同的特征(因为它是5 CV中每个模型的所选特征的并集)
答案 0 :(得分:2)
交叉验证应始终是任何机器学习算法中最外层的循环。
因此,将数据拆分为5组。对于您选择作为测试集(1/5)的每一组,在训练集(4/5)上进行特征选择后拟合模型。对所有CV折叠重复此操作 - 这里有5折。
现在,一旦简历程序完成,您就可以估算出模型的准确性,这是您个人CV折叠精度的简单平均值。
就用于在完整数据集上训练模型的最终功能集而言,请执行以下操作以选择最终的功能集。
- 每次如上所述在折叠上创建简历时,请投票选择您在该特定折叠中选择的功能。在5折CV的末尾,选择具有最高票数的特定数量的特征。
使用上面选定的一组特征进行特征选择的最后一个步骤,然后在完整数据上训练模型(合并所有5个折叠)并将模型移动到生产中。
答案 1 :(得分:1)
对完整数据执行CV(将其拆分为5个部分,并为每个拆分使用不同的部件组合),然后在cv-splits上执行功能选择,然后在选择的输出上执行RF 。
原因:因为CV在不同的Data Splits下检查您的模型,所以您的模型不会过度拟合。由于可以将特征选择视为模型的一部分,因此必须检查此特征是否过度拟合。
在使用CV验证模型后,将整个数据放入其中并执行此单一模型的转换。
此外,如果您担心过度拟合,则应限制RF深度和树木数量。 CV主要用作模型开发过程中的工具,最终模型使用的是所有数据。