Hay al menos dos formas de motivar a los SVM, pero tomaré la ruta más simple aquí.
Ahora, olvide todo lo que sabe sobre SVM por el momento y concéntrese en el problema en cuestión. Se le da un conjunto de puntos junto con algunas etiquetas ( ) que son de . Ahora, estamos tratando de encontrar una línea en 2D de modo que todos los puntos con la etiqueta caigan en un lado de la línea y todos los puntos con la etiqueta caigan en el otro lado.y i { 1 , - 1 } 1 - 1D={(xi1,xi2,yi)}yi{1,−1}1−1
En primer lugar, cuenta que es una línea en 2D y representa "un lado" de la línea y representa el "otro lado" del línea.w 0 + w 1 x 1 + w 2 x 2 > 0 w 0 + w 1 x 1 + w 2 x 2 < 0w0+w1x1+w2x2=0w0+w1x1+w2x2>0w0+w1x1+w2x2<0
De lo anterior podemos concluir que queremos algún vector tal que,
para todos los puntos con y para todos los puntos con [1].w 0 + w 1 x i 1 + w 2 x i 2 ≥ 0 x i y i = 1 w 0 + w 1 x i 1 + w 2 x i 2 < 0 x i y i = - 1[w0,w1,w2]w0+w1xi1+w2xi2≥0xiyi=1w0+w1xi1+w2xi2<0xiyi=−1
Supongamos que tal línea realmente existe, entonces puedo definir un clasificador de la siguiente manera,
min|w0|+|w1|+|w2|subject to:w0+w1xi1+w2xi2≥0,∀xi with yi=1w0+w1xi1+w2xi2<0,∀xi with yi=−1
He usado una función objetivo arbitraria arriba, realmente no nos importa en este momento qué función objetivo se usa. Solo queremos una que satisfaga nuestras limitaciones. Como hemos asumido que existe una línea tal que podemos separar las dos clases con esa línea, encontraremos una solución al problema de optimización anterior.w
Lo anterior no es SVM pero le dará un clasificador :-). Sin embargo, este clasificador puede no ser muy bueno. Pero, ¿cómo se define un buen clasificador? Un buen clasificador suele ser el que funciona bien en el conjunto de prueba. Idealmente, debería revisar todas las posibles que separan sus datos de entrenamiento y ver cuál de ellos funciona bien en los datos de la prueba. Sin embargo, hay infinitas 's, por lo que esto es bastante inútil. En cambio, consideraremos algunas heurísticas para definir un buen clasificador. Una heurística es que la línea que separa los datos estará suficientemente lejos de todos los puntos (es decir, siempre hay un espacio o margen entre los puntos y la línea). El mejor clasificador entre estos es el que tiene el margen máximo. Esto es lo que se usa en SVM.www
En lugar de insistir en que para todos los puntos con y para todos los puntos con , si insistimos en que para todos los puntos con y para todos los puntos con , entonces estamos insistiendo en que los puntos estén lejos de la línea. El margen geométrico correspondiente a este requisito resulta ser .x i y i = 1 w 0 + w 1 x i 1 + w 2 x i 2 < 0 x i y i = - 1 w 0 + w 1 x i 1 + w 2 x i 2 ≥ 1w0+w1xi1+w2xi2≥0xiyi=1w0 0+ w1Xyo1+ w2Xyo2< 0Xyoyyo= - 1w0 0+ w1Xyo1+ w2Xyo2≥ 1y i = 1 w 0 + w 1 x i 1 + w 2 x i 2 ≤ - 1 x i y i = - 1 1Xyoyyo= 1w0 0+ w1Xyo1+ w2Xyo2≤ - 1Xyoyyo= - 11∥ w ∥2
Entonces, tenemos el siguiente problema de optimización,
Una forma de escritura un tanto sucinta es,
Esta es básicamente la formulación básica de SVM. Me he saltado muchas discusiones por brevedad. Con suerte, aún tengo la mayor parte de la idea.
max 1∥ w ∥2sujeto a : w0 0+ w1Xyo1+ w2Xyo2≥ 1 , ∀ xyo con yyo= 1w0 0+ w1Xyo1+ w2Xyo2≤ - 1 , ∀ xyo con yyo= - 1
min ∥ w ∥2sujeto a : yyo( w0 0+ w1Xyo1+ w2Xyo2) ≥ 1 , ∀ i
Script CVX para resolver el problema de ejemplo:
A = [1 2 1; 3 2 1; 2 3 1; 3 3 1; 1 1 1; 2 0 1; 2 1 1; 3 1 1];
b = ones(8, 1);
y = [-1; -1; -1; -1; 1; 1; 1; 1];
Y = repmat(y, 1, 3);
cvx_begin
variable w(3)
minimize norm(w)
subject to
(Y.*A)*w >= b
cvx_end
Anexo - Margen Geométrico
Arriba, ya hemos solicitado que tal que o generalmente . El LHS aquí que ves se llama margen funcional, por lo que lo que hemos solicitado aquí es que el margen funcional sea . Ahora, intentaremos calcular el margen geométrico dado este requisito de margen funcional.y i ( w 0 + w 1 x 1 + w 2 x 2 ) ≥ 1 y i ( w 0 + w T x ) ≥ 1 ≥ 1wyyo( w0 0+ w1X1+ w2X2) ≥ 1yyo( w0 0+ wTx ) ≥ 1≥ 1
¿Qué es el margen geométrico? El margen geométrico es la distancia más corta entre puntos en los ejemplos positivos y puntos en los ejemplos negativos. Ahora, los puntos que tienen la distancia más corta como se requiere arriba pueden tener un margen funcional mayor que igual a 1. Sin embargo, consideremos el caso extremo, cuando están más cerca del hiperplano, es decir, el margen funcional para los puntos más cortos es exactamente igual a 1. Sea el punto en el ejemplo positivo, sea un punto tal que y sea el punto en el ejemplo negativo, sea un punto tal que . Ahora, la distancia entre y será la más corta cuandow T x + + w 0 = 1 x - w T x - + w 0 = - 1 x + x - x + - x -X+wTX++ w0 0= 1X-wTX-+ w0 0= - 1X+x−x+−x− es perpendicular al hiperplano.
Ahora, con toda la información anterior, intentaremos encontrar que es el margen geométrico.
∥x+−x−∥2
wTx++w0=1
wTx−+w0=−1
wT(x+−x−)=2
|wT(x+−x−)|=2
‖ x + - x - ‖ 2 = 2∥w∥2∥x+−x−∥2=2
∥x+−x−∥2=2∥w∥2
[1] En realidad no importa qué lado elijas para y . Solo tienes que mantenerte consistente con lo que elijas.- 11−1