【问题标题】:Should I split my data into training/testing/validation sets with k-fold-cross validation?我应该使用 k-fold-cross 验证将我的数据拆分为训练/测试/验证集吗?
【发布时间】:2017-08-31 14:51:25
【问题描述】:

在评估推荐系统时,可以将他的数据分成三部分:训练集、验证集和测试集。在这种情况下,训练集将用于从数据中学习推荐模型,而验证集将用于选择要使用的最佳模型或参数。然后,使用选择的模型,用户可以使用测试集评估他的算法的性能。

我找到了 scikit-learn 交叉验证 (http://scikit-learn.org/stable/modules/cross_validation.html) 的文档页面,其中说在使用 k-fold-cross 验证时不需要将数据分成三部分,而只需分成两部分:训练和测试。

解决此问题的方法是一种称为交叉验证(简称 CV)的过程。仍应保留测试集以进行最终评估,但在进行 CV 时不再需要验证集。在称为 k-fold CV 的基本方法中,将训练集拆分为 k 个较小的集(其他方法如下所述,但通常遵循相同的原则)。

我想知道这是否是一个好方法。如果是这样,有人可以向我展示支持该理论的文章/书籍的参考资料吗?

【问题讨论】:

标签: validation machine-learning


【解决方案1】:

交叉验证并没有避免验证集,它只是使用很多。换句话说,不是一分为三,而是一分为二,而您现在所说的“培训”实际上是以前一直在培训和验证的内容,CV 只是关于重复拆分(以比仅仅更聪明的方式随机)进入训练和测试,然后平均结果。支持它的理论在几乎所有优秀的机器学习书籍中都可以找到。关键是“我应该使用它吗”,答案非常简单 - 如果您没有足够的数据来进行一次拆分。当您没有足够的数据用于每个拆分来代表您感兴趣的分布时,使用 CV,然后进行重复拆分只会减少方差。此外,对于非常小的数据集,一个嵌套 CV - 一个用于 [train+val][test] 拆分和内部用于 [train][val],因此模型选择及其最终评估的方差都减少了。

【讨论】:

    猜你喜欢
    • 2022-11-10
    • 2021-01-19
    • 2019-05-01
    • 2021-04-19
    • 2020-12-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-19
    • 2013-09-27
    相关资源
    最近更新 更多