libsvm中的Holdout与K折叠交叉验证

时间:2015-12-31 17:03:46

标签: machine-learning libsvm cross-validation

我正在使用libsvm进行分类任务。我有10倍交叉验证,其中F1得分为0.80。但是,当我将训练数据集分成两个(一个用于训练而另一个用于测试,我将其称为保持测试集)时,F1得分降至0.65。分割比例为.8至.2。

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

2 个答案:

答案 0 :(得分:5)

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

简而言之:

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

答案 1 :(得分:0)

不同之处在于使用了一个分割,如果你尝试另一种方法将数据分成训练/测试(可能是通过改组),你会得到另一个值。因此,创建多个集合并对所有F1分数求平均值将得到相当于CV的结果。而CV更好地概括。

相关问题