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