Support Vector Machines
in the primal
Good news: you don't need to know anything about Lagrange
multipliers, KKT conditions and duality to train an SVM. Have a look at
- O. Chapelle,
Training a Support Vector Machine in the Primal, Neural Computation, in press.
- Matlab
code (with an example).
It should be faster than standard SVM solvers in the linear case (the complexity is linear
in the number of training examples) and comparable in the nonlinear case (but it requires
the whole kernel matrix to fit in memory).
- For a C++ implementation of a primal linear SVM, you can use the
SVMlin
package (designed more generally for
semi-supervised learning).
For large scale problems, a reduced set expansion can be used:
RankSVM
RankSVM is an algorithm to learn preferences:
- It is described in the papers of T. Joachims and R. Herbrich et al.
- It is a straightforward modification from SVM for classification.
Here is the corresponding Matlab code.
- You can test it on the Ohsumed dataset from the Letor distribution: test code, Matlab version of the Ohsumed dataset.
Send me an email if you have any question.