Clasificación SVM no lineal con núcleo RBF

8

Estoy implementando un clasificador SVM no lineal con kernel RBF. Me dijeron que la única diferencia con respecto a un SVM normal era que simplemente tenía que reemplazar el producto de puntos con una función del núcleo: Sé cómo funciona un SVM lineal normal, es decir, después de resolver el problema de optimización cuadrática (tarea dual), calculo el hiperplano de división óptimo como y el desplazamiento del hiperplano respectivamente, donde es una lista de mis vectores de entrenamiento, son sus respectivas etiquetas ( ),

K(xi,xj)=exp(||xixj||22σ2)
w=iSVhiyixi
b=1|SV|iSV(yij=1N(hjyjxjTxi))
xyyi{1,1}h son los coeficientes lagrangianos y es un conjunto de vectores de soporte. Después de eso, puedo usar y solo para clasificar fácilmente: .SVwbCX=firmar(wTX+si)

Sin embargo, no creo que pueda hacer tal cosa con un núcleo RBF. Encontré algunos materiales que sugieren que K(X,y)=ϕ(X)ϕ(y) . Eso lo facilitaría. Sin embargo, no creo que exista tal descomposición para este núcleo y no se menciona en ninguna parte. ¿Es la situación para que todos los vectores de soporte sean necesarios para la clasificación? Si es así, ¿cómo clasifico en ese caso?

Jan Hadáček
fuente
No es una respuesta completa, pero tuve estas diapositivas en uni: patterns.enm.bris.ac.uk/files/lecture10-2010.pdf
tristan

Respuestas:

19

Deje que represente su espacio de entrada, es decir, el espacio donde residen sus puntos de datos. Considere una función tal que tome un punto de su espacio de entrada y lo asigne a un punto en . Ahora, digamos que hemos asignado todos sus puntos de datos desde a este nuevo espacio . Ahora, si intenta resolver el svm lineal normal en este nuevo espacio lugar de , notará que todo el trabajo anterior simplemente se ve igual, excepto que todos los puntos están representados comoXΦ:XFXFXFFXXyoΦ(Xyo)y en lugar de usar (producto de puntos) que es el producto interno natural para el espacio euclidiano, lo reemplazamos con que representa el producto interno natural en el nuevo espacio . Entonces, al final, tu se vería así,XTyΦ(X),Φ(y)Fw

w=yoSVhyoyyoΦ(Xyo)

y por lo tanto,

w,Φ(X)=yoSVhyoyyoΦ(Xyo),Φ(X)

Del mismo modo,

si=1El |SVEl |yoSV(yyo-j=1norte(hjyjΦ(Xj),Φ(Xyo)))

y su regla de clasificación se ve así: .CX=firmar(w,Φ(X)+si)

Hasta ahora todo bien, no hay nada nuevo, ya que simplemente hemos aplicado el SVM lineal normal a un espacio diferente. Sin embargo, la parte mágica es esta:

Digamos que existe una función tal que . Luego, podemos reemplazar todos los productos de puntos anteriores con . Tal se llama función del núcleo.k:X×XRk(Xyo,Xj)=Φ(Xyo),Φ(Xj)k(Xyo,Xj)k

Por lo tanto, su y parecen, wsi

w,Φ(X)=yoSVhyoyyok(Xyo,X)
si=1El |SVEl |yoSV(yyo-j=1norte(hjyjk(Xj,Xyo)))

¿Para qué funciones del núcleo es válida la sustitución anterior? Bueno, esa es una pregunta un poco complicada y es posible que desee tomar material de lectura adecuado para comprender esas implicaciones. Sin embargo, solo agregaré que lo anterior es válido para RBF Kernel.

Para responder a su pregunta, "¿Es la situación para que todos los vectores de soporte sean necesarios para la clasificación?" Si. Como puede observar anteriormente, calculamos el producto interno de con lugar de calcular explícitamente. Esto requiere que retengamos todos los vectores de soporte para la clasificación.wXw

Nota: Las en la sección final aquí son la solución a la dual del SVM en el espacio y no . ¿Eso significa que necesitamos saber explícitamente la función ? Por suerte no. Si observa el doble objetivo, consiste solo en un producto interno y dado que tenemos que nos permite calcular el producto interno directamente, no necesitamos saber explícitamente. El objetivo dual simplemente se ve como hyoFXΦkΦ

maxyohyo-yo,jyyoyjhyohjk(Xyo,Xj)sujeto a: yoyyohyo=0 0,hyo0 0
TenaliRaman
fuente
@ JanHadáček ¡De nada! Es bueno saber que mi respuesta es comprensible, me preocupaba que pudiera estar demasiado condensada :-)
TenaliRaman
Muy buena explicación
chico de Londres el