【问题标题】:Shuffle split cross validation, what are the limitations?随机拆分交叉验证,有什么限制?
【发布时间】:2022-01-05 17:16:27
【问题描述】:

在 sklearn.cross_validation.ShuffleSplit 的 sklearn 文档中,它指出:

注意:与其他交叉验证策略相反,随机拆分并不能保证所有折叠都不同,尽管这对于相当大的数据集仍然很有可能。

这是一个问题吗?如果有,为什么?

【问题讨论】:

  • 五月this帮忙?

标签: python scikit-learn cross-validation shuffle


【解决方案1】:

与最常用的KFold 交叉验证策略相反,Shuffle Split 在每次迭代中使用元素的随机样本。作为一个工作示例,让我们考虑一个包含 10 个观察值的简单训练数据集;

训练数据 = [1,2,3,4,5,6,7,8,9,10]

KFold (k=5)

  1. 打乱数据,想象现在是 [6,9,1,4,10,5,7,2,3,8]
  2. 创建折叠; 折叠 1 = [6,9], 折叠 2 = [1,4], 折叠 3 = [10,5], 折叠 4 = [7,2] 和 5 折 = [3,8]
  3. 训练在每次迭代中保留一个折叠以进行评估并使用所有其他折叠

随机拆分(n_iter=3,test_size=0.2)

它以迭代方式工作,您可以指定迭代次数(sklearn 中默认 n_iter=10)

  1. 每次迭代 打乱数据; [6,9,1,4,10,3,8,2,5,7], [6,2,1,4,10,7,5,9,3,8] 和 [2,6,1 ,4,10,5,7,9,3,8]
  2. 使用超参数 (test_size) 选择指定的训练和评估数据集;训练数据为 [6,9,1,4,10,3,8,2], [6,2,1,4,10,7,5,9] 和 [2,6,1,4,10, 5,7,9] 分别。测试数据分别为[5,7]、[3,8]和[3,8]。

您可以注意到,尽管 shuffle 不同(技术上可以相同),但最后两次迭代的训练和测试数据完全相同。随着迭代次数的增加,您拟合相同数据集的机会也会增加,这与交叉验证的想法背道而驰,在交叉验证的想法中,我们希望用有限的数据来估计我们的模型的泛化性。另一方面,数据集通常包含大量观察结果,因此拥有相同(或非常相似)的训练和测试数据集不是问题。保持足够高的迭代次数可以提高结果的普遍性。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-04-16
    • 2018-09-03
    • 2015-08-06
    • 2018-09-07
    • 2014-07-27
    • 2013-05-03
    • 2015-10-16
    • 1970-01-01
    相关资源
    最近更新 更多