1

在执行 k 折交叉验证时,对于每个折,我们都有不同的验证集和稍微改变的学习集。假设您从第一折前进到第二折。你是如何从第二次迭代中继承的第一次折叠中学到的?目前,您似乎只计算准确性,而学习的模型被丢弃并且永远不会保留。

我错过了什么?如果保留这样的模型?它是如何保留的,DQN 与 KNN 的方法有什么不同?

4

2 回答 2

2

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

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

于 2020-06-05T09:32:09.337 回答
0

让我们考虑一个您想为某些数据找到回归模型的情况。对于模型将使用多少项,您有多种选择。更多的术语可能意味着更好的准确性,但也意味着过度拟合的风险。要选择正确的模型,请先用一些模型训练它们,然后用一些通常相互排斥的模型来train data测试它们。test data

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

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

于 2020-06-05T08:49:04.980 回答