Dado un conjunto de puntos en un espacio bidimensional, ¿cómo se puede diseñar una función de decisión para SVM?

10

¿Alguien puede explicarme cómo se diseña una función de decisión SVM? O señalarme un recurso que discute un ejemplo concreto.

EDITAR

Para el siguiente ejemplo, puedo ver que la ecuación separa las clases con un margen máximo. Pero, ¿cómo ajusto los pesos y escribo ecuaciones para hiperplanos en la siguiente forma?X2=1.5

H1:w0+w1x1+w2x21forYi=+1H2:w0+w1x1+w2x21forYi=1.

ingrese la descripción de la imagen aquí

Estoy tratando de entender bien la teoría subyacente en el espacio 2-D (ya que es más fácil de visualizar) antes de pensar en dimensiones más altas.

He encontrado una solución para esto. ¿Alguien puede confirmar si esto es correcto?

el vector de peso es (0, -2) y W_0 es 3

H1:3+0x12x21forYi=+1H2:3+0x12x21forYi=1.
naresh
fuente
Hay una ilustración con R aquí , pero creo que su pregunta es más sobre el aspecto algorítmico. En este caso, sería útil si pudiera agregar un poco más de detalles sobre la aplicación prevista o el recurso disponible.
chl
@chl He actualizado la pregunta con detalles
naresh

Respuestas:

12

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={(x1i,x2i,yi)}yi{1,1}11

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 20 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+w1x1i+w2x2i0xiyi=1w0+w1x1i+w2x2i<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+w1x1i+w2x2i0,xi with yi=1w0+w1x1i+w2x2i<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 21w0+w1x1i+w2x2i0xiyi=1w0+w1x1i+w2x2i<0xiyi=1w0+w1x1i+w2x2i1y i = 1 w 0 + w 1 x i 1 + w 2 x i 2- 1 x i y i = - 1 1xiyi=1w0+w1x1i+w2x2i1xiyi=11w2

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.

max1w2subject to:w0+w1x1i+w2x2i1,xi with yi=1w0+w1x1i+w2x2i1,xi with yi=1
minw2subject to:yi(w0+w1x1i+w2x2i)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 1wyi(w0+w1x1+w2x2)1yi(w0+wTx)11

¿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=1xwTx+w0=1x+xx+x es perpendicular al hiperplano.

Ahora, con toda la información anterior, intentaremos encontrar que es el margen geométrico. x+x2

wTx++w0=1
wTx+w0=1
wT(x+x)=2
|wT(x+x)|=2
x + - x - 2 = 2
w2x+x2=2
x+x2=2w2

[1] En realidad no importa qué lado elijas para y . Solo tienes que mantenerte consistente con lo que elijas.- 111

TenaliRaman
fuente
1
@naresh Yeap, resolver esto en cvx me dio exactamente la misma solución que tienes . w=[0,2,3]
TenaliRaman
1
@entropy gracias, he arreglado el error tipográfico. Agregaré la explicación del margen geométrico.
TenaliRaman
1
@entropía He actualizado la respuesta con la explicación del margen geométrico.
TenaliRaman
1
@entropy es un hiperplano que pasa por el origen. Para cubrir el espacio de todas las ecuaciones lineales necesita el término de sesgo. Piense en los puntos que residen en 2D y digamos que está tratando de encontrar una línea que separe estos puntos. Sin embargo, todos estos puntos se encuentran en el primer cuadrante. Ahora se pueden organizar estos puntos de manera que sean separables pero no por ninguna línea que pase por el origen. Sin embargo, una línea con un sesgo adecuado puede hacerlo. wTx
TenaliRaman
1
@entropía Habiendo dicho lo anterior, es posible que ya se haya dado cuenta de que si rota y desplaza los puntos correctamente, incluso una línea que pase por el origen debería ser capaz de separar las clases. Sin embargo, por lo general, encontrar esta rotación y cambio correctos no es fácil, en comparación con solo aprender el término de sesgo.
TenaliRaman