SVM program for spoofing detection

조회 수: 2 (최근 30일)
University Student
University Student 2021년 3월 28일
댓글: Walter Roberson 2021년 3월 30일
Could someone put this in their MATLAB env and run, and let me know what I am doing wrong? Why am I not getting the plots from the data like I want?
  댓글 수: 5
University Student
University Student 2021년 3월 29일
I am assuming that is where allData comes in again. So you need to include that in the code.
University Student
University Student 2021년 3월 29일
Or better yet, the output data from the detection file.

댓글을 달려면 로그인하십시오.

답변 (1개)

Walter Roberson
Walter Roberson 2021년 3월 29일
You are using
%one-class SVM according to Tax and Duin with C parameter 0.0033 and gamma 100 kernel RBF (Gaussian -t 2)
model = fitcsvm(labelTrain, trainSet(1:end,1:2), '-s 2 -t 2 -n 0.001 -g 100');
That last expression is not a valid formula for fitcsvm .
It looks to me as if it an character vector used to pass extra parameters to the kernel for the third-party SVMLIB's version of svmfit().
To select RBF, use
'KernelFunction', 'rbf'
You are doing one-class learning, so you should probably be using a 'Nu' parameter -- possibly 0.001 ?
The closest fitcsvm option to passing parameters to the kernel is 'HyperparameterOptimizationOptions' but it looks to me as if none of the ones available are of interest to you.
At the moment I do not see any equivalent to -g 100.
  댓글 수: 3
University Student
University Student 2021년 3월 29일
These are all the files associated with the research. I am not understanding your comment. How come it is not a valid formula? MATLAB is making me use fitcsvm.
Walter Roberson
Walter Roberson 2021년 3월 30일
"'Y~x1+x2+x3'. In this form, Y represents the response variable, and x1, x2, and x3 represent the predictor variables."
So the only terms that can occur in the "formula" position are variable names from an input table, and the symbols ~ and + (and I think I saw - as well in some cases.) There is no provision for the "formula" to include numbers such as the "0.001" you have in your quoted string.
Furthermore, the use of formulas is only permitted when the input is a table, but you are instead using the X, Y input data form. When you pass in X, Y data then there are no table variable names anyhow.
Effectively when you use that quoted string, you are doing so in a way that MATLAB would expect a name/value pair of options, but the string you have passed is not a valid option name.
MATLAB is making me use fitcsvm.
No it is not. You can still go and install the third-party LIBSVM and use that.
Back around 2010, Mathworks did not offer any SVM itself, but an external organization built a software package named LIBSVM and made it available tor MATLAB use. The string you are using, '-s 2 -t 2 -n 0.001 -g 100' is options that would be passed to that external LIBSVM package.
Eventually, Mathworks added its own modified version of LIBSVM as an official part of the Statistics Toolbox. When it did that, it altered most of the function names, but it kept a couple of the names, even though the functions had different options than the LIBSVM functions did. This was confusing at times.
Then later still, Mathworks redesigned its SVM support into different functions with noticeably different interface than LIBSVM or the old SVM functions had; and after a few releases, it withdrew support for the modified LIBSVM it had been using.
fitsvm() is not the old svmtrain(); the datatypes it takes are different and the options are completely different and it produces different outputs. Some of the options to determine exactly how SVM was to work now have no equivalent. Mathworks' current fitcsvm() and associated routines are Support Vector, but they are not based on the software that supported options such as -g 100 .
If you need to replicate an old paper exactly, then you will need to install the third-party LIBSVM package and use it.

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Sequence and Numeric Feature Data Workflows에 대해 자세히 알아보기

제품


릴리스

R2021a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by