如何从 k 折交叉验证中的每一折中学习?
how to learn from each fold in the k-fold cross validation?
在执行 k 折交叉验证时,对于每一折,我们都有一个不同的验证集和一个稍微改变的学习集。假设您从第一折进展到第二折。你从第一次折叠中学到的东西如何在第二次折叠迭代中被继承?目前看来,你只计算准确率,学习到的模型被丢弃,永远不会保留。
我错过了什么?如果保留这样的模型呢?它是如何保留的,DQN 与 KNN 的方法有何不同?
让我们考虑一种情况,您想要为某些数据找到回归模型。对于您的模型将使用多少项,您有多种选择。更多的术语可能意味着更好的准确性,但也意味着过度拟合的风险。要 select 正确的模型,请着手用一些 train data
训练它们并针对通常相互排斥的一些 test data
测试它们。
现在要获得关于模型准确度的更精确的近似值,您可以使用 k 折交叉验证,它允许您使用多达 k
test datasets
。请注意,您使用 k-fold 来评估您的模型有多好,给定一些数据,而不是训练它。事实上,当训练成本很高(例如深度神经网络)或您的数据集足够大以确保模型精度足够好时,几乎不会使用 k-fold。
所以回答你最后一个问题:不,模型不一定保留。一旦你准备好进行现实生活中的练习,你就可以用你拥有的所有数据重新训练它。
K 折交叉验证 不会在每次迭代中重新训练模型。相反,它训练和评估 K 个不同的 independent(可以并行化)models数据集,但 具有相同的超参数 。这不是为了获得更准确的模型,而是通过计算聚合验证分数(即:您可以估计模型准确性的均值和标准偏差)来获得更准确(从统计学上讲)的验证。
然后您可以只保留其中一个模型并使用聚合估计作为其指标(而不是使用在该模型的特定折叠中计算的那个),或者(从头开始)训练一个具有完整模型的新模型数据集。在最后一种情况下,您对模型指标的最佳估计仍然是以前的聚合指标,但可以使用新的未使用的测试集来估计新指标。那么,你为什么要那样做?好吧,那是因为您通常将交叉验证与超参数调整结合使用。因此,每次调整超参数时,您只需使用交叉验证检查聚合指标估计。但是,当您完成模型调整后,您将使用未见过的测试集计算最终指标。
在执行 k 折交叉验证时,对于每一折,我们都有一个不同的验证集和一个稍微改变的学习集。假设您从第一折进展到第二折。你从第一次折叠中学到的东西如何在第二次折叠迭代中被继承?目前看来,你只计算准确率,学习到的模型被丢弃,永远不会保留。
我错过了什么?如果保留这样的模型呢?它是如何保留的,DQN 与 KNN 的方法有何不同?
让我们考虑一种情况,您想要为某些数据找到回归模型。对于您的模型将使用多少项,您有多种选择。更多的术语可能意味着更好的准确性,但也意味着过度拟合的风险。要 select 正确的模型,请着手用一些 train data
训练它们并针对通常相互排斥的一些 test data
测试它们。
现在要获得关于模型准确度的更精确的近似值,您可以使用 k 折交叉验证,它允许您使用多达 k
test datasets
。请注意,您使用 k-fold 来评估您的模型有多好,给定一些数据,而不是训练它。事实上,当训练成本很高(例如深度神经网络)或您的数据集足够大以确保模型精度足够好时,几乎不会使用 k-fold。
所以回答你最后一个问题:不,模型不一定保留。一旦你准备好进行现实生活中的练习,你就可以用你拥有的所有数据重新训练它。
K 折交叉验证 不会在每次迭代中重新训练模型。相反,它训练和评估 K 个不同的 independent(可以并行化)models数据集,但 具有相同的超参数 。这不是为了获得更准确的模型,而是通过计算聚合验证分数(即:您可以估计模型准确性的均值和标准偏差)来获得更准确(从统计学上讲)的验证。
然后您可以只保留其中一个模型并使用聚合估计作为其指标(而不是使用在该模型的特定折叠中计算的那个),或者(从头开始)训练一个具有完整模型的新模型数据集。在最后一种情况下,您对模型指标的最佳估计仍然是以前的聚合指标,但可以使用新的未使用的测试集来估计新指标。那么,你为什么要那样做?好吧,那是因为您通常将交叉验证与超参数调整结合使用。因此,每次调整超参数时,您只需使用交叉验证检查聚合指标估计。但是,当您完成模型调整后,您将使用未见过的测试集计算最终指标。