I was using one class SVM, implemented in scikit-learn, for my research work. But I have no good understanding of this.

Can anyone please give a simple, good explanation of one class SVM?


The problem addressed by One Class SVM, as the documentation says, is novelty detection. The original paper describing how to use SVMs for this task is "Support Vector Method for Novelty Detection".

The idea of novelty detection is to detect rare events, i.e. events that happen rarely, and hence, of which you have very little samples. The problem is then, that the usual way of training a classifier will not work.

So how do you decide what a novel pattern is?. Many approaches are based on the estimation of the density of probability for the data. Novelty corresponds to those samples where the density of probability is "very low". How low depends on the application.

Now, SVMs are max-margin methods, i.e. they do not model a probability distribution. Here the idea is to find a function that is positive for regions with high density of points, and negative for small densities.

The gritty details are given in the paper. ;) If you really intend to go through the paper, make sure that you first understand the settings of the basic SVM algorithm for classification. It will make much easier to understand the bounds and the motivation the algorithm.


A good introduction to kernel methods, as well as the One-Class SVM and its variants, can be found in the following article.

Christoph H. Lampert, "Kernel Methods in Computer Vision", Foundations and Trends in Computer Graphics and Vision, vol. 4, no 3, pp 193-285, 2009.

A copy of this file can be found on the author's website.

  • $\begingroup$ Link broken. Should be replaced with this $\endgroup$ – timleathart Nov 3 '17 at 21:48

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.