使用multisvm增加迭代次数

时间:2013-05-22 04:17:55

标签: matlab svm

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

  

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

     

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

     

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

     

multisvm出错(第20行)       models(k)= svmtrain(TrainingSet,G1vAll);

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

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

2 个答案:

答案 0 :(得分:4)

Svmtrain试图找到一条正确的线路,例如:两组。如果找不到正确的行,则它会改变行的函数中的一些参数,以找到分隔组的正确行,并迭代迭代参数。默认情况下,它试图找到正确的行15000次。如果我们使用以下代码,svmtrain将尝试100000次来查找更正的行。但培训时间自然更长。

options.MaxIter = 100000;
my_svm_struct = svmtrain((Training, Group, 'Options', options); 

答案 1 :(得分:2)

您可以使用'options'函数(svmtrain)的可选MaxIter参数执行此操作。 documentation of svmtrain包含有关此内容的更多信息。

如果您正在使用SMO(默认),则需要使用statset生成options结构,如果您使用的是QP解算器,则需要使用optimset