modelos means machine learning kmeans español ejemplo cluster analisis algoritmo python scikit-learn classification svm svc

python - means - SKLearn: ¿Obtener distancia de cada punto del límite de decisión?



modelos machine learning python (2)

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.


Para kernel lineal, el límite de decisión es y = w * x + b, la distancia desde el punto x hasta el límite de decisión es y / || w ||.

y = svc.decision_function(x) w_norm = np.linalg.norm(svc.coef_) dist = y / w_norm

Para kernels no lineales, no hay forma de obtener la distancia absoluta. Pero aún puede usar el resultado de decision_funcion como distancia relativa.


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 kernel RBF.

Primero, sabemos que SVM debe 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 una phi () fuera de la x; es la función de transformación que transforma x en un espacio de alta dimensión (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 la norma calculada arriba.

( no me permite publicar más de 2 enlaces, por lo que debe renderizar el látex usted mismo).