svmtrain - 无法解决优化问题

时间:2011-07-02 22:51:32

标签: optimization svm

我正在使用svmtrain来区分几对数据。尽管svmtrain在一种情况下按预期工作(输出分类器对象,由svmclassify验证,精度约为70%),但所有其他情况似乎都失败了。我的特征向量是134维度,我为每个类使用300到800个数据点。 (每个类不一定具有相同数量的数据点)。我尝试使用方法

使用svmtrain的默认内核
SVM = svmtrain(double(train{k}), group_train{k},'showplot',true);

在这种情况下,我收到错误:

无法解决优化问题:超出最大迭代次数;增加options.MaxIter。要以当前解决方案为起点继续解决问题,请在调用quadprog之前设置x0 = x。

我还尝试使用调用扩展迭代次数并指定内核:

options = optimset('maxiter',1000,'largescale','on');
SVM = svmtrain(double(train{k}),group_train{k},'Kernel_Function','mlp','Method','QP',...
   'quadprog_opts',options);

在这种情况下,我收到错误:

无法解决优化问题:退出:解决方案无限制且无限远;约束条件不够严格。

在确实有效的情况下,我有来自第一类的338个数据点和来自第二类的476个数据点。例如,在三个不起作用的情况下,我在第二个类中有828,573和333个数据点,而第一个类保持不变并且有338个数据点。这两种方法调用似乎都不起作用。

你能帮帮我吗?我一直试图解决这个问题一个星期,没有运气。我在具有1 GHz处理器和2 GB RAM的虚拟机Windows XP上使用MATLAB 7.9.0 R2009B。

非常感谢你! -Vivek

1 个答案:

答案 0 :(得分:4)

像这样:

options = optimset('maxiter',1000);
svmtrain(TotalResult,YResultsTotal,'Kernel_Function','mlp','Method','QP',...
            'quadprog_opts',options);