16 votos

Máquina de vectores de apoyo - Calcular w a mano

Estoy trabajando en un ejemplo trivial de SVM para ganar algo de intuición sobre su funcionamiento. En el caso de 6 puntos de datos, ¿sería posible calcular el valor de $w$ y $b$ a mano ? Intuitivamente soy capaz de obtener los valores correctos sólo hasta un factor de escala.

Utilizando Sklearn con un núcleo lineal los valores correctos son

  • $w = (\frac{1}{4}, - \frac{1}{4})^T$
  • $b = - \frac{3}{4}$

Intuitivamente he probado diferentes valores:

  • $w = (1, - 1)^T$ y $b = - 3$ que proviene de la ecuación directa de la recta $x_2 = x_1 - 3$ . Esto da el límite de decisión correcto y el margen geométrico $2\sqrt{2}$
  • $w = (\frac{1}{\sqrt{2}}, - \frac{1}{\sqrt{2}})^T$ y $b = - \frac{3}{\sqrt{2}}$ que garantiza que $||w|| = 1$ pero no me lleva mucho más lejos

Ejemplo

SVM simple

Conjunto de datos y resultado de Sklearn

import numpy as np
from sklearn.svm import SVC

X = np.array([[3,4],[1,4],[2,3],[6,-1],[7,-1],[5,-3]] )
y = np.array([-1,-1, -1, 1, 1 , 1 ])

clf = SVC(C = 1e5, kernel = 'linear')
clf.fit(X, y)

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X