如何从k折交叉验证的每个折中学习?

时间:2020-06-05 04:58:05

标签: machine-learning cross-validation k-fold

这让我感到困惑。执行k折交叉验证时。对于每一折,我们都有不同的验证集和稍有变化的学习集。假设您从第一折前进到第二折。您从第一折中学到的知识如何在第二折迭代中继承?当前,似乎您只计算准确性,学习的模型将被丢弃并且永远不会保留。

我想念什么?是否保留这种模式? DQN与KNN的关系如何保留?

2 个答案:

答案 0 :(得分:0)

让我们考虑您要为某些数据找到回归模型的情况。您可以选择使用多少个模型来选择模型。术语更多可能意味着更好的准确性,但也意味着过度拟合的风险。要选择正确的模型,请着手对一些train data进行训练,并针对一些通常互斥的test data进行测试。

现在,要获得有关模型精度的更精确的近似值,可以使用k倍交叉验证,该验证允许使用多达k test datasets个模型。请注意,在给定一些数据的情况下,您正在使用k折来评估您的模型有多好,而不是对其进行训练。实际上,当训练成本很高(例如深度神经网络)或数据集足够大以确保模型精度足够接近时,k-fold几乎不会使用。

因此,回答您的最后一个问题:不一定要保留模型。准备好进行实际练习后,您就可以使用所有数据重新训练它。

答案 1 :(得分:0)

K折交叉验证不会在每次迭代中重新训练模型。相反,它训练和评估K个不同的独立 (可以并行化)具有不同数据集折叠度的模型,但具有相同的折叠度超参数。这并不是要获得更准确的模型,而是要通过计算汇总的验证得分(即:您可以估算模型准确性的平均值和标准差)来获得更准确的(从统计意义上来说)验证。

然后,您可以只保留其中一个模型,并对其度量使用汇总估计(而不是使用针对该模型的特定折叠中计算出的一个),或(从头开始)训练具有完整数据集的新模型。在后一种情况下,对模型指标的最佳估计仍然是先前的汇总指标,但是可以使用新的未使用的测试集来估算新的指标。那么,为什么要这么做呢?好吧,这是因为您通常将交叉验证与超参数调整结合使用。因此,每次调整超参数时,您只需使用交叉验证检查汇总的指标估计即可。但是,当您完成模型调整后,您将使用看不见的测试集计算最终指标。