72 votos

¿Por qué molestarse con el doble problema en el momento del montaje SVM?

Con los datos de los puntos de $x_1, \ldots, x_n \in \mathbb{R}^d$ y las etiquetas de $y_1, \ldots, y_n \in \left \{-1, 1 \right\}$, el duro margen SVM problema primal es

$$ \text{minimize}_{w, w_0} \quad \frac{1}{2} w^T w $$ $$ \text{s.t.} \quad \forall i: y_i (w^T x_i + w_0) \ge 1$$

que es una ecuación cuadrática programa con $d+1$ variables para ser optimizado para e $i$ restricciones. El doble

$$ \text{maximize}_{\alpha} \quad \sum_{i=1}^{n}{\alpha_i} - \frac{1}{2}\sum_{i=1}^{n}{\sum_{j=1}^{n}{y_i y_j \alpha_i \alpha_j x_i^T x_j}}$$ $$ \text{s.t.} \quad \forall i: \alpha_i \ge 0 \land \sum_{i=1}^{n}{y_i \alpha_i} = 0$$ es una ecuación cuadrática programa con $n + 1$ variables para ser optimizado para e $n$ la desigualdad y la $n$ restricciones de igualdad.

Cuando la aplicación de un duro margen de la SVM, ¿por qué iba a resolver el doble problema en lugar de la primitiva problema? El problema primal se ve más "intuitivo" para mí, y no necesito ocuparme con la dualidad de la brecha, la de Kuhn-Tucker, etc.

Tendría sentido para mí, para resolver el doble problema de si $d \gg n$, pero sospecho que hay mejores razones. Es este el caso?

59voto

Scott Saad Puntos 8894

Basado en las notas de la conferencia que se hace referencia en @user765195 la respuesta (¡gracias!), las más evidentes razones parecen ser:

Resolver el problema primal, se obtiene el óptimo $w$, pero no saben nada acerca de la $\alpha_i$. Para clasificar una consulta de punto de $x$ necesitamos explícitamente calcular el producto escalar $w^Tx$, lo que puede ser caro si $d$ es grande.

Resolver el doble problema, se obtiene el $\alpha_i$ (donde $\alpha_i = 0$ para todos, pero un par de puntos - el apoyo de los vectores). Para clasificar una consulta de punto de $x$, podemos calcular

$$ w^Tx + w_0 = \left(\sum_{i=1}^{n}{\alpha_i y_i x_i} \right)^T x + w_0 = \sum_{i=1}^{n}{\alpha_i y_i \langle x_i, x \rangle} + w_0 $$

Este término es muy eficiente calcula si hay sólo unos pocos de soporte de vectores. Además, puesto que ahora tenemos un producto escalar que sólo implican datos de vectores, podemos aplicar el kernel truco.

16voto

Jörgen Lundberg Puntos 753

Lea el segundo párrafo de la página 13 y la discusión de proceder en estas notas:

http://cs229.stanford.edu/notes/cs229-notes3.pdf

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X