# NOTE

This project supersedes (and contains) the former SVM-QP project. If you have arrived here through a bookmark pointing to https://projects.coin-or.org/SVM-QP then please update it to point to https://projects.coin-or.org/OptiML.

# Welcome to the OptiML home page

## Introduction

OptiML stands for Optimization methods in Machine Learning. Right now this page contains three subprojects:

- SVM-QP (
**S**upport**V**ector**M**achines**Q**uadratic**P**rogramming solver) is a software package that solves 2-norm soft margin support vector machine classification problem. The problem is formulated as a convex QP of the following formmin x'Qx - e'x x in R^n s.t. a'x=0 0 <= x <= C

where ` e ` is the vector of ones, `a` is a vector of lables (1 or -1) of the data, and `C` is the panalty parameter associated with the violation of the margin constraint.

SVM-QP is designed for large-scale SVM problems. The underlying algorithm is an active set method for convext QPs. Here is the paper describing the algorithm and containing computational comparison with SVMlight. The software also includes an interior point SVM solver which is designed for problems where Kernel matrix is (approximately) low rank. The program constructs the low rank approximation and solves the approximate problem by the interior point method. The approximate solution can then be passed to the active set solver as the warm start. The underlying algorithms are described here.

This versions is in Fortran 77 code and is designed to trade memory for efficiency. Currently, this is the most time efficient version of SVM-QP. A memory saving versions, which is somewhat slower is available in the C++ version (see SVMPath). In case of questions, contact Katya Scheinberg. The current version is desinged to ba called as a subroutine where the burden of parsing the data and arranging it into appropriate data structures lies with the user.

- SVMPath is the C++ extension of SVM-QP. Additionally to solving the SVM problem for a given value of parameter C, the C++ version includes the ability compute a path of optimal

solutions for any given range of parameter `C`. This version is strictly in the development stage right now. The manual and other supporting materials will be coming soon.
Please check back or contact the authors.

- SINCO (
**S**parse**IN**verse**CO**variance) is the C++ software with a Matlab interface which solve the sparse inverse covariance selection problemmax K ln det{C} -tr(AC) -\lambda||S.*C||_1 C in S^{p x p}

where `K, \lambda` are positive scalars, `A` is a `p x p` symmetric matrix, `S` is a `p x p` nonnegative matrix and `C` is the unknown `p x p`
symmetric positive definite matrix. The '.*' notation stands for the elementwise product of two matrices and the l_1 norm stands for the sum of the absolute value of the elements of the matrix.
This software is written in C++ and has a Matlab interface which is provided. A brief description of how to use the code is available via
comments. A more detailed manual and the algorithm description is forthcoming.

## Background

OPTIML is released as open source code under the Common Public License (CPL). It is available from the COIN-OR initiative. Katya Scheinberg is the COIN project leader for OptiML.

You can obtain any of the softwares available in OPTIML code either via subversion or in form of nightly generated tarballs. To get the tarball, go to the COIN tarball directory, and look for a file like svmqp-3.x.x.tar.gz.

Individual files can also be obtained from the svn web interface (see the "Browse Source" button above). The SVM-QP and SVMPath distributions can be used to generate a library that can be linked to one's own C++, C, or Fortran code. SVM-QP and SVMPath can be used on Linux/UNIX platforms and Windows. SINCO can be used from C++ and from Matlab via the available mex interface.

As open source software, the source code for OPTIML projects is provided without charge. You are free to use it, also for commercial purposes. You are also free to modify the source code (with the restriction that you need to make your changes public if you decide to distribute your version in any way, e.g. as an executable); for details see the CPL license. And we are certainly very keen on feedback from users, including contributions!

In order to compile SVM-QP, certain third party code is required (such as some linear algebra routines). Those are available under different conditions/licenses.

We provide these programs in the hope that it may be useful to others, and we would very much like to hear about your experience with it. If you found it helpful and are using it within our software, we encourage you to add your feedback to these wiki-based webpages, Success Stories.