我们是不是需要将数据集划分为测试和训练?

Posted

技术标签:

【中文标题】我们是不是需要将数据集划分为测试和训练?【英文标题】:Do we need to divide the dataset to testing and training?我们是否需要将数据集划分为测试和训练? 【发布时间】:2013-10-21 22:36:52 【问题描述】:

对于这样一个愚蠢的问题,我提前道歉!我认为我们需要将数据集划分为 svm 中的训练和测试,然后使用训练集来找到模型。然后使用测试集检查该模型的准确性。 在 libsvm 数据集“http://www.csie.ntu.edu.tw/~cjlin/libsvmtools/datasets/multiclass.html”中,一些数据集有训练和测试,而其他数据集没有训练和测试,因此根据 libsvm 网站上的 libsvm 指南,相关代码是不同的。例如在 svmguide2 数据集中没有指定的测试集。那么我们如何测试模型的准确性。

【问题讨论】:

【参考方案1】:

您必须自己划分整个数据。我实际上建议拥有两套以上。一旦你完成了训练和测试,有一个额外的集合来检查你是否被之前的训练-测试-再训练迭代所带来的偏见是有帮助的。

此外,如果您要使用交叉验证来查找参数,则需要更多数据集。

【讨论】:

【参考方案2】:

这里至少有两个重要方面,首先是您需要自己创建这样的拆分。

第二件事是仅仅将集合分成两部分是不够的,因为你仍然可以找到完全无用的模型,对于这个,特定的拆分会产生很好的结果。这就是交叉验证等概念/策略发挥作用的地方。在 CV 设置中,您将数据分成 K 个大小相等的块(其中 k 取自区间 [1,n],其中 n 是数据的大小)并在每个块上测试 k 次模型,同时对其进行训练其余的部分。这样,您可以从有限的示例集中生成 k 个不同的测试用例,每个测试用例都具有不重叠的训练和测试子集。特别是设置 k=n 你测试所谓的“留一”场景,这在理论研究中经常提到。 k 最常见的选择是 10,5 或 3。

【讨论】:

以上是关于我们是不是需要将数据集划分为测试和训练?的主要内容,如果未能解决你的问题,请参考以下文章

数据集的划分

如何将数据集划分为训练集和测试集?

目标检测---数据集格式转化及训练集和验证集划分

训练集和测试集

将数据划分为训练集和测试集;缩放特征区间

为啥要划分训练集、验证集和测试集