No se puede entender el trazado del límite de decisión en SVM y LR

Por ejemplo tenemos f (x) = x. ¿Cómo trazarlo? Tomamos algunas x, luego calculamos y y volvemos a realizar esta operación, luego trazamos el gráfico por puntos. Sencillo y claro.

Pero no puedo entender con tanta claridad el trazado de los límites de decisión: cuando no tenemos y para trazar, solo x.

Código de Python para SVM:

h = .02 # step size in the mesh Y = y # we create an instance of SVM and fit out data. We do not scale our # data since we want to plot the support vectors C = 1.0 # SVM regularization parameter svc = svm.SVC(kernel='linear', C=C).fit(X, Y) rbf_svc = svm.SVC(kernel='rbf', gamma=0.7, C=C).fit(X, Y) poly_svc = svm.SVC(kernel='poly', degree=3, C=C).fit(X, Y) lin_svc = svm.LinearSVC(C=C).fit(X, Y) # create a mesh to plot in x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1 y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1 xx, yy = np.meshgrid(np.arange(x_min, x_max, h), np.arange(y_min, y_max, h)) for i, clf in enumerate((svc, rbf_svc, poly_svc, lin_svc)): # Plot the decision boundary. For that, we will asign a color to each # point in the mesh [x_min, m_max]x[y_min, y_max]. 

Todo para trazar el gráfico va aquí, como lo entendí:

  pl.subplot(2, 2, i + 1) Z = clf.predict(np.c_[xx.ravel(), yy.ravel()]) # Put the result into a color plot Z = Z.reshape(xx.shape) pl.contourf(xx, yy, Z, cmap=pl.cm.Paird) pl.axis('off') # Plot also the training points pl.scatter(X[:, 0], X[:, 1], c=Y, cmap=pl.cm.Paird) pl.show() 

¿Puede alguien explicar con palabras cómo funciona esta ttwig?

Básicamente, está trazando la función f : R^2 -> {0,1} por lo que es una función del espacio bidimensional en el espacio degenerado de solo dos valores: 0 y 1 .

Primero, genera la malla en la que desea visualizar su función. En el caso de su ejemplo con f(x)=y , seleccionaría algún intervalo [x_min,x_max] en el que tomaría puntos con cierta distancia eps y trazaría los valores correspondientes de f

 x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1 y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1 xx, yy = np.meshgrid(np.arange(x_min, x_max, h), np.arange(y_min, y_max, h)) 

A continuación, calculamos los valores de la función, en nuestro caso es una función SVM.predict , que da como resultado 0 o 1

 Z = clf.predict(np.c_[xx.ravel(), yy.ravel()]) 

Es el mismo que en su ejemplo de cálculo de f(x) para todas las x analizadas.

Ahora, la parte “complicada” que puede llevar a un malentendido es

 pl.contourf(xx, yy, Z, cmap=pl.cm.Paird) 

Esta función traza los contornos de su función f . Para visualizar la función tridimensional en el plano, a menudo se crean diagtwigs de contorno, es como un mapa de altura de su función. Dibuje una línea entre los puntos si se detecta el gran cambio en el valor de f alrededor de ellos.

Buen ejemplo del mundo matemático gráfico de contorno de muestra

Muestra un ejemplo de dicha ttwig.

En el caso de SVM solo tenemos dos valores posibles : 0 y 1 , por lo que, como resultado, las líneas de contorno se ubican exactamente en estas partes de su espacio 2d, donde en un lado tenemos f(x)=0 y en la otro f(x)=1 . Entonces, aunque parece una “ttwig 2d” no lo es, esta forma, que se puede observar (el límite de decisión) es una visualización de las mayores diferencias en la función 3d.

En la documentación de sklearn que la visualizamos para el ejemplo de clasificación múltiple, cuando tenemos f : R^2 -> {0,1,2} , la idea es exactamente la misma, pero el contorno se traza entre tal x1 y x2 adyacentes que f(x1)!=f(x2) .

SVM multiclase