How to force fitcsvm() to train a one-class svm?
27 views (last 30 days)
With fitcsvm you can train also a one-class svm, but how can I be sure that the trained svm is one-class and not two-class? I tried with
SVMModel = fitcsvm(valuesTraining,targetsTraining,'Standardize',true,... 'KernelFunction','gaussian','OptimizeHyperparameters','auto');
where targetsTraining is a vector of all 1s (since I have only samples coming from one class) amd valuesTraining is the matrix containing the 5-dimensional-features training points. Then I test the model with different data but whith instances of both classes. Performance are bad and I have the feeling that the training has been conducted with two-class svm, and not one-class.
Don Mathis on 5 Oct 2018
Edited: Don Mathis on 5 Oct 2018
Look at your model at the MATLAB command line. If 'ClassNames' has only one entry, then it was 1-class training. For example:
Alpha: [77×1 double]
KernelParameters: [1×1 struct]
Mu: [5.843333333333319 3.057333333333326]
Sigma: [0.828066127977862 0.435866284936697]
BoxConstraints: [150×1 double]
ConvergenceInfo: [1×1 struct]
IsSupportVector: [150×1 logical]