Machine learning SVM多分类是否需要洗牌训练数据?

Machine learning SVM多分类是否需要洗牌训练数据?,machine-learning,svm,libsvm,Machine Learning,Svm,Libsvm,事实上,我正在使用OpenCV的svm python接口,并试图将数据分为4类。当标签和训练数据有序时,我的意思是,例如,数据分为4组,分别为标签1、标签2、标签3和标签4,正确率很低,大约只有50%正确。但是当我重新整理训练数据时,结果是合理的,大约90%是正确的。所以我的问题是:训练数据顺序是否会影响最终结果,或者我是否需要在训练前对数据进行洗牌?否它不会改变SVM训练,尽管代码中使用的一些参数调整方法可能取决于顺序。例如,如果使用交叉验证而不进行随机化,则排序集要困难得多(每个conseq

事实上,我正在使用OpenCV的svm python接口,并试图将数据分为4类。当标签和训练数据有序时,我的意思是,例如,数据分为4组,分别为标签1、标签2、标签3和标签4,正确率很低,大约只有50%正确。但是当我重新整理训练数据时,结果是合理的,大约90%是正确的。所以我的问题是:训练数据顺序是否会影响最终结果,或者我是否需要在训练前对数据进行洗牌?

否它不会改变SVM训练,尽管代码中使用的一些参数调整方法可能取决于顺序。例如,如果使用交叉验证而不进行随机化,则排序集要困难得多(每个consequitive折叠甚至可以有一些类的0个样本!)

简言之:

  • 支持向量机训练不依赖于数据排序
  • 一些用作“附加方法”的基于库的工具可以依赖于它
我的答案是否定的。基于:

与人工神经网络的反向传播学习算法不同,对于给定的数据集,无论初始条件如何,给定的支持向量机总是确定性地收敛到相同的解。对于包含少于约5000个点的训练集,梯度下降为该优化问题提供了有效的解决方案[Campbell和Cristianini,1999]

首先,确保洗牌后的特征向量与其正确的标签相对应。还要确保在这两种情况下,每个标签都有足够的特征向量

其次,您可以尝试反复运行训练,以观察SVM是否发生变化。以相同的顺序使用完全相同的数据集,并且不进行无序排列。理论上它不会改变,因为凸优化问题应该有唯一的最大值

第三,如果您的训练收敛得非常慢,则有可能达到最大迭代次数。那么提前终止可能会导致结果出现一些明显的随机性


最后但并非最不重要的一点是,尽管在数学上原始解在支持向量机中是唯一的,但对偶解可能是非唯一的。这主要取决于绑定变量C的选择。分析了原始解和对偶解之间可能存在的唯一性。

我使用交叉验证来检查比率。也许这就是重点!