【问题标题】:Is it required to shuffle the training data for SVM multi-classification? [closed]是否需要对 SVM 多分类的训练数据进行混洗? [关闭]
【发布时间】:2014-01-10 22:39:59
【问题描述】:

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

【问题讨论】:

    标签: machine-learning svm libsvm


    【解决方案1】:

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

    简而言之:

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

    【讨论】:

    • 我确实使用交叉验证来检查比率。也许这就是重点!
    【解决方案2】:

    我的答案是否定的。基于this page

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

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

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

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

    最后但同样重要的是,虽然在数学上原始解在 SVM 中是唯一的,但对偶解可能不是唯一的。这主要取决于绑定变量C的选择。This article分析了原始解和对偶解之间可能存在的唯一性。

    【讨论】:

      猜你喜欢
      • 2013-08-12
      • 2016-10-06
      • 2018-12-20
      • 2012-02-21
      • 2013-12-16
      • 1970-01-01
      • 2014-09-08
      • 2014-11-15
      • 2021-05-19
      相关资源
      最近更新 更多