Estoy tratando de escribir una implementación SVM completa en Python y tengo algunos problemas para calcular los coeficientes de Lagrange.
Primero déjame reformular lo que entiendo del algoritmo para asegurarme de que estoy en el camino correcto.
Si es un conjunto de datos e y i ∈ { - 1 , 1 } es la etiqueta de clase de x i , entonces ∀ i , y i ( w T x i + b ) ≥ 1
Entonces solo necesitamos resolver un problema de optimización para
sujeto a
En términos de los coeficientes de Lagrange, esto se traduce en la búsqueda de , y y minimizando:
Ahora desde y podemos reescribirlo como con restricciones
Así que estoy tratando de resolver el problema de optimización usando Python, y el único paquete gratuito que pude encontrar se llama cvxopt .
Me gustaría recibir ayuda para resolver esto, no pude encontrar ningún buen ejemplo al respecto, y aunque entiendo la teoría, me cuesta traducirlo a código (hubiera esperado lo contrario ya que estoy más de un fondo de programación).
Tenga en cuenta que en algún momento querré resolverlo usando Kernels pero no estoy seguro de cuáles son las implicaciones con respecto a resolver esto en código.
Cualquier ayuda sería muy apreciada, estoy realmente perdido en cómo implementar esto en Python. Si tiene un mejor módulo para resolver el problema de optimización, me gustaría leer sobre él también.
La forma general de su problema de optimización es un programa cuadrático , independientemente de si está utilizando el truco del núcleo o un núcleo lineal. Parece que
cvxopt
será suficiente para lo que intentas hacer, pero otros pitonautas aquí también han tenido suerte con OpenOpt .fuente