是否需要对SVM多分类的训练数据进行混洗?

时间:2013-12-22 15:58:45

标签: machine-learning libsvm

实际上我正在使用OpenCV的svm python接口,我正在尝试将数据分为4类。当标签和训练数据按顺序排列时,我的意思是例如数据分为4组,标签为1,标签2,标签3和标签4,正确的比例很低,只有50%左右。但是当我改组训练数据时,结果是合理的,大约90%是正确的。所以我的问题是:训练数据顺序是否会影响最终结果,还是我需要在训练前将数据混洗?

2 个答案:

答案 0 :(得分:7)

不,它不会更改SVM培训,尽管代码中使用的某些参数调整方法可能取决于排序。例如 - 如果你在没有随机化的情况下使用交叉验证,那么有序集合就更难了(ach连续的折叠甚至可以有一些类的0个样本!)。

简而言之:

  • SVM培训不依赖于数据排序
  • 一些基于库的工具用作“附加方法”可以依赖它

答案 1 :(得分:1)

我的回答是否定。基于this page 与人工神经网络的反向传播学习算法不同,给定的SVM将始终确定地收敛到给定数据集的相同解决方案,无论最初的条件。对于包含少于约5000个点的训练集,梯度下降为这个优化问题提供了有效的解决方案[Campbell and Cristianini,1999]

首先,确保在改组后特征向量与其正确的标签相对应。还要确保每个标签都有足够的特征向量。

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

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

最后但并非最不重要的是,虽然数学上原始解决方案在SVM中是唯一的,但双重解决方案可能是非唯一的。它主要取决于约束变量C的选择。This article分析了原始解与双解之间可能的唯一性。