【问题标题】:Holdout vs. K fold cross validation in libsvmlibsvm 中的 Holdout 与 K 折交叉验证
【发布时间】:2016-04-05 14:25:27
【问题描述】:

我正在使用 libsvm 进行分类任务。我有一个 10 折交叉验证,其中 F1 分数为 0.80。但是,当我将训练数据集一分为二(一个用于训练,另一个用于测试,我称之为保持测试集)时,F1 分数下降到 0.65。拆分比例为 0.8 到 0.2。

所以,我的问题是,进行 k 折交叉验证与保持测试有什么显着差异吗?这两种技术中的哪一种会产生一个泛化良好的模型?在这两种情况下,我的数据集都是按比例缩放的。

【问题讨论】:

    标签: machine-learning libsvm cross-validation


    【解决方案1】:

    不同之处在于使用了一次拆分,如果您尝试另一种将数据拆分为训练/测试的方式(可能通过改组),您将获得另一个值。因此,创建几组并对所有 F1 分数进行平均将得出与 CV 等效的结果。而且 CV 泛化效果更好。

    【讨论】:

      【解决方案2】:

      存在巨大差异,但准确的分析需要大量统计数据。如需深入了解,请参阅 Hastie、Tibshirani 和 Friedman 的 The Elements of Statistical Learning: Data Mining, Inference, and Prediction

      简而言之:

      • 单个训练-测试拆分是不可靠模型质量的衡量标准(除非您有非常大的数据集)
      • 鉴于训练集可代表基础分布,重复训练测试拆分收敛到真实分数,但实际上它们通常过于乐观
      • 与训练测试拆分相比,CV 往往会给出较低的模型质量分数,并为您提供合理的答案更快,但代价是计算复杂度更高。
      • 如果您有大量数据(>50 000 个样本),那么训练-测试拆分可能就足够了
      • 如果您有足够的时间,CV 几乎总是一种更好(不太乐观)的方法来衡量分类器质量
      • 除了这两个之外还有更多方法,您可能还想查看 err0.632 系列(引导程序)中的方法

      【讨论】:

        猜你喜欢
        • 2016-01-15
        • 2018-08-29
        • 2017-06-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-08-29
        • 2016-11-15
        • 2017-07-02
        相关资源
        最近更新 更多