A regularized empirical risk minimization software developed at Sabanci University



QMM library is a general solver for binary and multi-class linear classifiers optimizing regularized empirical risk.

CONTRIBUTORS (programmers):

(1) I. Saygin Topkaya (2) M. Umut Sen (3) Hakan Erdogan


The software is hosted on github. Visit the github page here for the latest version.

You can directly download the ZIP file or download the tarball as well.

INSTALLATION (on linux):

Windows executables are included under the windows folder.

For linux:



QMM library is a modification of the liblinear software. You can use the same input and output formats. We have added new types of solvers to the liblinear software to enable use of our algorithms.

To enable using the QMM library use the options -s 50-55.

Here is a list of arguments for the modified LIBLINEAR train program.

Usage: train [options] training_set_file [model_file]
-s type : set type of solver (default 1)
         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 -- multi-class 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)
        11 -- L2-regularized L2-loss epsilon support vector regression (primal)
        12 -- L2-regularized L2-loss epsilon support vector regression (dual)
        13 -- L2-regularized L1-loss epsilon support vector regression (dual)
        50 -- MMCD - please specify loss, curv
        51 -- MMCD_SM - soft-max method
        52 -- MMCD_SG - sub-gradient
        53 -- MMCD_SIMPLE - please specify loss, curv
        54 -- MMGCD - please specify loss, curv
        55 -- MMCG - please specify loss, curv
-l loss_type : L1, L2, LOG, HU1, HU2, LS
   0 -- L1
   1 -- L2
   2 -- LOG
   3 -- HU1
   4 -- HU2
   5 -- LS
-u curv_type : MC, OC, NC
   0  -- MC
   1  -- OC
   2  -- NC
        for -s 50, 54, and 55 :
   3 -- Start with MC and continue with NC after 1st iteration
   4 -- Start with OC and continue with NC after 1st iteration
-r alpha : regularization parameter, between 0 and 1
   0 -- L1 regularization
   1 -- L2 regularization
   0 < r <1 -- elastic net
-t tau   : loss parameter for HU1, HU2 and L1 losses, default 0.5
-n epsi  : curv parameter, minimum curvature for NC, typical 0.001
-i initmodel : initial model file to start iterations
-g cg_tol : conjugate gradient tolerance for MMCG, default 0.001
-d cd_tol : coordinate decent tolerance for MMCD, default 0.01
-f n : only for MMCD, reset active coordinates every nth iteration, default 10
-h chat_level : how much should I talk?
   0 -- minimal
   1 -- calc and print obj
       1 - running time
       2 - |f'(w)|_2 and |f'(w)|_inf
       3 - objective value
       4 - training and testing accuracy; mention test file with -x
-x filename : test file to be used if chat_level>=4
-c cost : set the parameter C (default 1)
-p epsilon : set the epsilon in loss function of epsilon-SVR (default 0.1)
-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.001)
        -s 1, 3, 4, and 7
                Dual maximal violation <= eps; similar to libsvm (default 0.1)
        -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)
        -s 50, 54, and 55
                |w-w^prev|_inf <= eps*|w|_inf,
-S structure : trains structured weights;
                structure is s for symmetric, a for antisymmetric
                or a filename of the free transform matrix (default none)
-B bias : if bias >= 0, instance x becomes [x; bias]; if < 0, no bias term added (default -1)
-wi weight: weights adjust the parameter C of different classes (see README for details)
-v n: n-fold cross validation mode
-q : quiet mode (no outputs)


The codes can be received from the github page.

For technical description, see our technical report (coming soon).

For code documentation, you can see the doxygen documentation page (the doc folder) that is in the github package.Or you can visit this link for doxygen source code documentation.

For abstract of the project in which this software was built English / Turkish


Please send comments and suggestions to Hakan Erdogan.