svmtrain 和 fitcsvm 的区别

Differences between svmtrain and fitcsvm

我有一组数据,由 35 个特征组成。我注意到当我将数据提供给 svmtrain 时,我收到消息:

no convergence achieved within maximum number of iterations

然后,当我将迭代次数“MaxIter”增加到大约 1,000,000 次时,上述错误消失,我开始使用“svmclassify ".

另一方面,当我将数据提供给“fitcsvm”时,它会在默认迭代次数“15,000”内快速收敛。但是,问题是当我尝试使用“predict”对数据进行分类时,我得到了错误的分类。

所以简而言之,最后“svmtrain”在增加迭代次数后正确分类数据。然而,“fitcsvm”既没有正确分类数据,也没有给我机会增加迭代次数,因为它从检查 ConvergenceInfo.Converged 属性 收敛成功。

有什么建议吗?请注意我是 matlab 和 SVM 的新手。

fitcsvm and svmtrain use, among other algorithms, SMO for optimization. The software implements SMO differently between the two functions, but numerical studies show that there is sensible agreement in the results.

来源:http://in.mathworks.com/help/stats/classificationsvm-class.html

其中 SMO 是顺序最小优化。这是从训练SVM的步骤开始的。

显然 SMO 的两个实现有不同的参数配置。这就是为什么在 fitcsvm 的实现中,您无法设置迭代次数。

看看上面的link,它也提到了其他差异。