当我应用交叉验证来检查模型时,我对如何选择折叠数(在 k-fold CV 中)感到困惑。它取决于数据大小或其他参数吗?
如何计算交叉验证中的折叠数(k-fold)?
数据挖掘
机器学习
Python
scikit-学习
交叉验证
2021-10-10 22:28:45
2个回答
折叠数通常由数据集中包含的实例数决定。例如,如果您的数据中有 10 个实例,则 10 折交叉验证没有意义。-fold 交叉验证用于两个主要目的,调整超参数和更好地评估模型的性能。
在这两种情况下选择取决于同一件事。您必须确保训练集和测试集来自同一分布。并且两组都包含足够的变化,以便表示下划线分布。在只有 10 个实例的 10 倍交叉验证中,测试集中只有 1 个实例。此实例不能正确表示基础分布的变化。
话虽如此,选择不是一门精确的科学,因为很难估计你的折叠代表你的整体数据集的程度。我通常使用 5 折交叉验证。这意味着 20% 的数据用于测试,这通常是相当准确的。但是,如果您的数据集大小急剧增加,例如如果您有超过 100,000 个实例,则可以看出 10 倍交叉验证将导致 10,000 个实例的倍数。这应该足以可靠地测试您的模型。
简而言之,是的,折叠数取决于数据大小。我通常坚持 4 或 5 倍。确保打乱你的数据,这样你的折叠不包含固有的偏见。
取决于您愿意为此支付多少 CPU 汁液。具有较低的 K 意味着更少的方差,因此,更多的偏差,而具有更高的 K 意味着更多的方差,因此和更低的偏差。
此外,应该记住不同值的计算成本。高 K 意味着更多的折叠,因此更高的计算时间,反之亦然。因此,需要通过超调优分析找到两者之间的最佳平衡点。
此外,您需要牢记数据的大小。如果您的数据非常少,那么即使使用 k-fold crossval 也是没有意义的。因此,您可能想要使用留一式 CV (LOOCV)。
其它你可能感兴趣的问题