【问题标题】:Can SVM solution change after shuffling the inputs?改组输入后,SVM 解决方案可以改变吗?
【发布时间】:2011-12-02 09:21:55
【问题描述】:

当使用完全相同的数据训练支持向量机 (SVM) 进行分类时,我会根据输入的顺序获得不同的结果, 即。如果我对数据进行洗牌,我会得到不同的 SVM。

如果我正确理解了理论,那么无论输入的顺序如何,SVM 解决方案都应该是相同的,那么我怎么会得到不同的结果呢? SVM 中是否有任何实现“细节”,为什么洗牌会改变解决方案?我已经检查过我的代码好几次了,因为我觉得这有异味。

我在 OpenCV 中使用 SVM 实现。

编辑:在这种情况下,我指的是改变数据点的顺序而不是特征。

【问题讨论】:

  • 你改变了特征的顺序标签在一起,对吧?
  • 哦,原来如此!好主意。

标签: opencv machine-learning svm


【解决方案1】:

SVM 用于解决凸优化问题,因此最大值是唯一的。这意味着任何随机优化算法都将解决非常接近唯一最优解的问题。并且改组不能改变浮点运算精度以上的结果。

【讨论】:

    【解决方案2】:

    我不熟悉 OpenCV 的实现。但是这样做:在完全相同的数据集上运行几次试验——没有改组、相同的顺序、相同的数据点。查看 SVM 是否发生变化。显然,理论上不应该。但可能是在实现中某处存在一些小的随机化步骤,为相同的输入产生不同的输出。

    编辑:正如 Chris A. 所问,特征向量在洗牌后是否与它们的正确标签相对应?如果不是,那显然会破坏你的结果。

    【讨论】:

    • 感谢您提供测试的想法,明天我会返回数据并检查它。
    • 最后我花了比预期更长的时间,结果不是我所希望的。相同的数据,相同的顺序不会改变结果。如果涉及任何导致我观察到的差异的随机化,它是依赖于顺序的。不幸的是(?!),我不再像以前那样得到很大的差异,所以我倾向于认为,这是我的一些可怕的编码错误:/
    • ...当我了解更多关于 SVM 学习算法中随机化的(不)存在的信息,或者我发现了假定的错误时,我会更新问题。这是最有帮助的帖子,谢谢。
    • 不客气。不用担心;我们都经历过同样的事情,有些事情不起作用,然后奇迹般地起作用了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-23
    • 2015-11-29
    • 2020-02-15
    • 1970-01-01
    • 1970-01-01
    • 2014-05-06
    相关资源
    最近更新 更多