提前为这么愚蠢的问题道歉!我认为我们需要将数据集划分为 svm 中的训练和测试,然后使用训练集来找到模型。然后使用测试集检查该模型的准确性。在 libsvm 数据集“ http://www.csie.ntu.edu.tw/~cjlin/libsvmtools/datasets/multiclass.html ”中,一些数据集有训练和测试,而其他的没有训练和测试因此根据 libsvm 网站上的 libsvm 指南,相关代码是不同的。例如在 svmguide2 数据集中没有指定的测试集。那么我们如何测试模型的准确性。
问问题
638 次
2 回答
0
这里至少有两个重要方面,首先是您需要自己创建这样的拆分。
第二件事是仅仅将集合分成两部分是不够的,因为你仍然可以找到完全无用的模型,对于这个,特定的拆分会产生很好的结果。这就是交叉验证等概念/策略发挥作用的地方。在 CV 设置中,您将数据分成 K 个大小相等的块(其中 k 取自区间 [1,n],其中 n 是数据的大小),并在每个块上测试 k 次模型,同时对其进行训练其余的部分。这样,您可以从有限的示例集中生成 k 个不同的测试用例,每个测试用例都具有不重叠的训练和测试子集。特别是设置 k=n 你测试所谓的“留一”场景,这在理论研究中经常提到。k 最常见的选择是 10,5 或 3。
于 2013-10-14T15:34:03.477 回答
-1
您必须自己划分整个数据。我实际上建议拥有两套以上。一旦你完成了训练和测试,有一个额外的集合来检查你是否没有被之前的训练-测试-再训练迭代所影响是很有帮助的。
此外,如果您要使用交叉验证来查找参数,您将需要更多数据集。
于 2013-10-14T12:47:38.457 回答