How to force fitcsvm() to train a one-class svm?
3 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Francesco Formaggio
il 3 Ott 2018
Commentato: Don Mathis
il 10 Ott 2018
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.
0 Commenti
Risposta accettata
Don Mathis
il 5 Ott 2018
Modificato: Don Mathis
il 5 Ott 2018
Look at your model at the MATLAB command line. If 'ClassNames' has only one entry, then it was 1-class training. For example:
SVMModel =
ClassificationSVM
ResponseName: 'Y'
CategoricalPredictors: []
ClassNames: 1
ScoreTransform: 'none'
NumObservations: 150
Alpha: [77×1 double]
Bias: -15.977601047115476
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]
Solver: 'SMO'
2 Commenti
Don Mathis
il 10 Ott 2018
If your Response variable has only 1 class, then 1-class training is used. If there are 2 classes, 2-class is used. If you have outliers that are already labelled -1, then you can use 2-class learning to find outliers.
Più risposte (0)
Vedere anche
Categorie
Scopri di più su Classification Trees in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!