Estoy usando SKLearn para ejecutar SVC en mis datos.
from sklearn import svm
svc = svm.SVC(kernel='linear', C=C).fit(X, y)
Quiero saber cómo puedo obtener la distancia de cada punto de datos en X desde el límite de decisión.
Solución del problema
Resulta que estoy haciendo la tarea 1 de un curso llamado Técnicas de aprendizaje automático. Y sucede que hay un problema sobre la distancia del punto al hiperplano incluso para el núcleo RBF.
Primero sabemos que SVM es encontrar un w "óptimo" para un hiperplano wx + b = 0.
Y el hecho es que
w = \sum_{i} \alpha_i \phi(x_i)
donde esos x son los llamados vectores de soporte y esos alfa son coeficientes de ellos. Tenga en cuenta que hay un phi() fuera de la x; es la función de transformación que transforma x en un espacio de dimensión alta (para RBF, es una dimensión infinita). Y sabemos que
[\phi(x_1)\phi(x_2) = K(x_1, x_2)][2]
para que podamos calcular
entonces podemos obtener w. Por lo tanto, la distancia que desea debe ser
svc.decision_function(x) / w_norm
donde w_norm es la norma calculada anteriormente.
(StackOverflow no me permite publicar más de 2 enlaces, así que renderice el látex usted mismo, bah).
No hay comentarios.:
Publicar un comentario