实际上,我正在使用OpenCV的svm接口,并试图将数据分类为4类。当标签和培训数据符合要求时,我的意思是,例如,数据分为4组,分别是标签1、标签2、标签3和标签4,正确率很低,只有50%左右正确。但当我整理训练数据时,结果是合理的,大约90%是正确的。因此,我的问题是:培训数据顺序是否影响最终结果,还是需要在培训前对数据进行洗牌?
发布于 2013-12-22 16:18:02
不,它不会更改SVM培训,尽管代码中使用的一些参数调优方法可能取决于排序。例如,如果您使用交叉验证而没有随机化,则排序集比有序集难得多(每个结果折叠甚至可以有一些类的0个样本!)
简言之:
发布于 2013-12-22 17:47:32
我的回答是不。基于此页
与人工神经网络的反向传播学习算法不同,无论初始条件如何,给定的支持向量机都会确定性地收敛到给定数据集的同一解。对于包含大约5000点的训练集,梯度下降为这个优化问题Campbell和Cristianini提供了一个有效的解决方案,1999。
首先,在洗牌后,确保特征向量与其相应的标签相对应。此外,确保每个标签都有足够的特征向量在两种情况下。
其次,您可以尝试重复运行您的培训,以观察支持向量机是否发生变化。使用完全相同的数据集,具有相同的顺序,不需要洗牌。理论上,它不会改变,因为凸优化问题应该有唯一的最大值。
第三,如果你的训练收敛得非常慢,你就有可能达到最大的迭代次数。那么,早期终止可能会导致一些明显的随机性的结果。
最后但并非最不重要的一点是,虽然在数学上,支持向量机的原始解是唯一的,但对偶解可能是非唯一的。它主要取决于约束变量C的选择。这篇文章分析了原解和对偶解之间可能存在的唯一性。
https://stackoverflow.com/questions/20731214
复制相似问题