Class: | Optimization algorithm for training support vector machines |
Time: | O(n³) |
Sequential minimal optimization (SMO) is an algorithm for solving the quadratic programming (QP) problem that arises during the training of support-vector machines (SVM). It was invented by John Platt in 1998 at Microsoft Research.[1] SMO is widely used for training support vector machines and is implemented by the popular LIBSVM tool.[2] [3] The publication of the SMO algorithm in 1998 has generated a lot of excitement in the SVM community, as previously available methods for SVM training were much more complex and required expensive third-party QP solvers.[4]
See main article: Support vector machine. Consider a binary classification problem with a dataset (x1, y1), ..., (xn, yn), where xi is an input vector and is a binary label corresponding to it. A soft-margin support vector machine is trained by solving a quadratic programming problem, which is expressed in the dual form as follows:
max\alpha
n | |
\sum | |
i=1 |
\alphai-
12 | |
\sum |
n | |
i=1 |
n | |
\sum | |
j=1 |
yiyjK(xi,xj)\alphai\alphaj,
subject to:
0\leq\alphai\leqC, fori=1,2,\ldots,n,
n | |
\sum | |
i=1 |
yi\alphai=0
where C is an SVM hyperparameter and K(xi, xj) is the kernel function, both supplied by the user; and the variables
\alphai
SMO is an iterative algorithm for solving the optimization problem described above. SMO breaks this problem into a series of smallest possible sub-problems, which are then solved analytically. Because of the linear equality constraint involving the Lagrange multipliers
\alphai
\alpha1
\alpha2
0\leq\alpha1,\alpha2\leqC,
y1\alpha1+y2\alpha2=k,
and this reduced problem can be solved analytically: one needs to find a minimum of a one-dimensional quadratic function.
k
The algorithm proceeds as follows:
\alpha1
\alpha2
(\alpha1,\alpha2)
When all the Lagrange multipliers satisfy the KKT conditions (within a user-defined tolerance), the problem has been solved. Although this algorithm is guaranteed to converge, heuristics are used to choose the pair of multipliers so as to accelerate the rate of convergence. This is critical for large data sets since there are
n(n-1)/2
\alphai
\alphaj
The first approach to splitting large SVM learning problems into a series of smaller optimization tasks was proposed by Bernhard Boser, Isabelle Guyon, Vladimir Vapnik.[5] It is known as the "chunking algorithm". The algorithm starts with a random subset of the data, solves this problem, and iteratively adds examples which violate the optimality conditions. One disadvantage of this algorithm is that it is necessary to solve QP-problems scaling with the number of SVs. On real world sparse data sets, SMO can be more than 1000 times faster than the chunking algorithm.[1]
In 1997, E. Osuna, R. Freund, and F. Girosi proved a theorem which suggests a whole new set of QP algorithms for SVMs.[6] By the virtue of this theorem a large QP problem can be broken down into a series of smaller QP sub-problems. A sequence of QP sub-problems that always add at least one violator of the Karush–Kuhn–Tucker (KKT) conditions is guaranteed to converge. The chunking algorithm obeys the conditions of the theorem, and hence will converge.[1] The SMO algorithm can be considered a special case of the Osuna algorithm, where the size of the optimization is two and both Lagrange multipliers are replaced at every step with new multipliers that are chosen via good heuristics.[1]
The SMO algorithm is closely related to a family of optimization algorithms called Bregman methods or row-action methods. These methods solve convex programming problems with linear constraints. They are iterative methods where each step projects the current primal point onto each constraint.[1]