0

我正在尝试在 matlab 中使用 multisvm 函数。在一个小数据集上,一切都很好。增加我需要的大小,我收到以下错误:

使用 seqminopt>seqminoptImpl 时出错(第 198 行) 在最大迭代次数内未达到收敛。

seqminopt 中的错误(第 81 行)[alphas offset] = seqminoptImpl(data, targetLabels, ...

svmtrain 中的错误(第 499 行)[alpha,bias] = seqminopt(training, groupIndex, ...

multisvm(第 20 行)模型中的错误(k)= svmtrain(TrainingSet,G1vAll);

我一直在尝试在线寻找解决方案并发现: http: //www.mathworks.com/matlabcentral/answers/66183

建议是“所以增加最大迭代次数”。问题是,这似乎并不容易做到。我有点新手,但我试图通过查看所有这些文件来自己解决这个问题,但没有成功。有谁知道我可以如何增加迭代次数并解决这个问题?

4

2 回答 2

4

Svmtrain 试图在例如两个组之间找到一条正确的线。如果它没有找到正确的线,它会改变线函数中的一些参数,以找到一个正确的分割组的线,并对迭代参数进行迭代。默认情况下,它会尝试找到正确的行 15000 次。如果我们使用以下代码,svmtrain 将尝试 100000 次以找到正确的行。但是训练的时间自然会更长。

options.MaxIter = 100000;
my_svm_struct = svmtrain((Training, Group, 'Options', options); 
于 2013-12-09T23:26:59.643 回答
2

You can do this using the optional 'options' parameter of the svmtrain function (MaxIter). The documentation of svmtrain contains more information about this.

You will need to make the options struct with either statset if you're using SMO (default) or optimset if you're using the QP solver.

于 2013-05-22T10:12:19.677 回答