MATLAB: Differences between svmtrain and fitcsvm

svm

I have a set of data composed of list of 35 features. I notice when I give the data to svmtrain I get the message:
no convergence achieved within maximum number of iterations
Than, when I increase the number if iteration " MaxIter " up to around 1,000,000 the above error disappear and I start getting good classification using " svmclassify ".
On the other hand, when I give the data to " fitcsvm " it converge quickly within the default number of iteration "15,000". However, the problem is when I try to classify the data using " predict ", I got wrong classification.
So in a nutshell, at last " svmtrain " classify the data correctly after increasing number of iteration. However," fitcsvm " neither classify the data correctly, nor it gives me the opportunity to increase number of iteration because it looks from checking the ConvergenceInfo.Converged property that it converge successfully.
Any advice please? notice I'm new to matlab and SVM.

Best Answer

Look at the doc/help for fitcsvm or, alternatively look at the ConvergenceInfo property in the returned object. There are several tolerances. Pass low values of these tolerances to fitcsvm, say 1e-10. This usually ensures that optimization runs until the max number of iterations is met. You can then resume if desired.
Or try a different solver such as 'isda'. If you have a thousand observations or less, try 'l1qp' which dispatches to quadprog (this requires Optimization Toolbox installed).