MATLAB Train Interface LIBLINEAR

4.2k views Asked by At

In the LIBLINEAR docs, we have

matlab> model = train(training_label_vector, training_instance_matrix [,'liblinear_options', 'col']);

        -training_label_vector:
            An m by 1 vector of training labels. (type must be double)
        -training_instance_matrix:
            An m by n matrix of m training instances with n features.
            It must be a sparse matrix. (type must be double)
        -liblinear_options:
            A string of training options in the same format as that of LIBLINEAR.
        -col:
            if 'col' is set, each column of training_instance_matrix is a data instance. Otherwise each row is a data instance.

However, even after reading the homepage and looking at the docs, I can't find out what the options are for liblinear_options.

Is this listed somewhere but I am clearly missing it?

Futhermore, since I am unable to find liblinear_options listed anywhere, I am stuck with the following question:

Does the train method use a linear SVM to develop a model?

2

There are 2 answers

1
lennon310 On BEST ANSWER

Liblinear is a linear classifier. Besides SVM, it also included logistic regression based classifier. And yes, as its name indicates, the linear kernel is applied in SVM.

You may check their github page for the liblinear_options. I copied them here as well:

"liblinear_options:\n"
        "-s type : set type of solver (default 1)\n"
        "        0 -- L2-regularized logistic regression (primal)\n"
        "        1 -- L2-regularized L2-loss support vector classification (dual)\n"        
        "        2 -- L2-regularized L2-loss support vector classification (primal)\n"
        "        3 -- L2-regularized L1-loss support vector classification (dual)\n"
        "        4 -- multi-class support vector classification by Crammer and Singer\n"
        "        5 -- L1-regularized L2-loss support vector classification\n"
        "        6 -- L1-regularized logistic regression\n"
        "        7 -- L2-regularized logistic regression (dual)\n"
        "-c cost : set the parameter C (default 1)\n"
        "-e epsilon : set tolerance of termination criterion\n"
        "        -s 0 and 2\n" 
        "                |f'(w)|_2 <= eps*min(pos,neg)/l*|f'(w0)|_2,\n" 
        "                where f is the primal function and pos/neg are # of\n" 
        "                positive/negative data (default 0.01)\n"
        "        -s 1, 3, 4 and 7\n"
        "                Dual maximal violation <= eps; similar to libsvm (default 0.1)\n"
        "        -s 5 and 6\n"
        "                |f'(w)|_1 <= eps*min(pos,neg)/l*|f'(w0)|_1,\n"
        "                where f is the primal function (default 0.01)\n"
        "-B bias : if bias >= 0, instance x becomes [x; bias]; if < 0, no bias term added (default -1)\n"
        "-wi weight: weights adjust the parameter C of different classes (see README for details)\n"
        "-v n: n-fold cross validation mode\n"
        "-q : quiet mode (no outputs)\n"
1
Christopher Palm On

Possibly some new developments since this was posted. Running train in the matlab prompt will give you all the options. At least on R2020b with the version of liblinear that I just downloaded.

>> train
Usage: model = train(training_label_vector, training_instance_matrix, 'liblinear_options', 'col');
liblinear_options:
-s type : set type of solver (default 1)
  for multi-class classification
     0 -- L2-regularized logistic regression (primal)
     1 -- L2-regularized L2-loss support vector classification (dual)
     2 -- L2-regularized L2-loss support vector classification (primal)
     3 -- L2-regularized L1-loss support vector classification (dual)
     4 -- support vector classification by Crammer and Singer
     5 -- L1-regularized L2-loss support vector classification
     6 -- L1-regularized logistic regression
     7 -- L2-regularized logistic regression (dual)
  for regression
    11 -- L2-regularized L2-loss support vector regression (primal)
    12 -- L2-regularized L2-loss support vector regression (dual)
    13 -- L2-regularized L1-loss support vector regression (dual)
  for outlier detection
    21 -- one-class support vector machine (dual)
-c cost : set the parameter C (default 1)
-p epsilon : set the epsilon in loss function of SVR (default 0.1)
-n nu : set the parameter nu of one-class SVM (default 0.5)
-e epsilon : set tolerance of termination criterion
    -s 0 and 2
        |f'(w)|_2 <= eps*min(pos,neg)/l*|f'(w0)|_2,
        where f is the primal function and pos/neg are # of
        positive/negative data (default 0.01)
    -s 11
        |f'(w)|_2 <= eps*|f'(w0)|_2 (default 0.0001)
    -s 1, 3, 4, 7, and 21
        Dual maximal violation <= eps; similar to libsvm (default 0.1 except 0.01 for -s 21)
    -s 5 and 6
        |f'(w)|_1 <= eps*min(pos,neg)/l*|f'(w0)|_1,
        where f is the primal function (default 0.01)
    -s 12 and 13
        |f'(alpha)|_1 <= eps |f'(alpha0)|,
        where f is the dual function (default 0.1)
-B bias : if bias >= 0, instance x becomes [x; bias]; if < 0, no bias term added (default -1)
-R : not regularize the bias; must with -B 1 to have the bias; DON'T use this unless you know what it is
    (for -s 0, 2, 5, 6, 11)
-wi weight: weights adjust the parameter C of different classes (see README for details)
-v n: n-fold cross validation mode
-C : find parameters (C for -s 0, 2 and C, p for -s 11)
-q : quiet mode (no outputs)
col:
    if 'col' is setted, training_instance_matrix is parsed in column format, otherwise is in row format