混乱 1)
来自维基百科:
k 折交叉验证是一种评估统计分析结果如何推广到独立数据集的技术
他们还说:
在 k 折交叉验证中,原始样本被随机划分为 k 个大小相等的子样本。在 k 个子样本中,保留一个子样本作为验证数据用于测试模型,剩余的 k-1 个子样本用作训练数据。然后交叉验证过程重复 k 次,k 个子样本中的每个子样本仅使用一次作为验证数据。然后可以对 k 个结果进行平均以产生单个估计。这种方法相对于重复的随机子抽样(见下文)的优势在于所有的观测值都用于训练和验证,并且每个观测值只用于验证一次。通常使用 10 折交叉验证,[7] 但一般来说,k 仍然是一个不固定的参数。
因此,您现在看到您没有 k% 用于测试,但您始终使用数据集的 1/k% 作为测试集。注意:您可以选择保留 2/k 或更多,但编码会复杂得多。
混乱 2)
在 scikit learn 中,他们首先将此工具称为“评估性能工具”,这与维基百科作者的建议相反。关键是CV 允许您 根据您的初始数据集评估您的预测的稳健性和可靠性。
在 CV 结束时获得的最终平均值是 k 个测试集的平均分数。查看所有中间结果以评估它们的方差通常是一件好事,这在您的模型泛化能力较差的情况下可能是一个很好的解释性估计。
编辑:为什么在简历之后进行另一次培训
交叉验证也可以用作优化工具来找到模型的最佳超参数。在这种情况下,您应该采用更好的超参数(在 k 个不同的参数中;每个折叠一个)并使用它们对整个集合进行预测,以查看优化的(即从 CV 中选择的)超参数是否良好在完整的数据集上。“最佳”参数的概念可以看作是模型中在您的 CV 过程中给出最佳分数的超参数。
请注意,您仍然可以将数据集中的验证集放在一边,您不会在其上进行 CV。此验证集可用作模型预测质量的最后测试。另请参阅此处
最后,您可以使用每个 k 折模型来预测估计值,然后按照维基百科作者的建议将它们的平均值作为模型的最终预测,但这种想法更接近于集成学习或一种无需替换的Bootstrap 方法, 而不是 CV
希望能帮助到你