我们是不是需要将数据集划分为测试和训练?
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。
【讨论】:
以上是关于我们是不是需要将数据集划分为测试和训练?的主要内容,如果未能解决你的问题,请参考以下文章