Estoy tratando de entender el proceso para entrenar una máquina de vectores de soporte lineal . Me doy cuenta de que las propiedades de los SMV permiten que se optimicen mucho más rápido que mediante el uso de un solucionador de programación cuadrática, pero con fines de aprendizaje, me gustaría ver cómo funciona esto.
Datos de entrenamiento
set.seed(2015)
df <- data.frame(X1=c(rnorm(5), rnorm(5)+5), X2=c(rnorm(5), rnorm(5)+3), Y=c(rep(1,5), rep(-1, 5)))
df
X1 X2 Y
1 -1.5454484 0.50127 1
2 -0.5283932 -0.80316 1
3 -1.0867588 0.63644 1
4 -0.0001115 1.14290 1
5 0.3889538 0.06119 1
6 5.5326313 3.68034 -1
7 3.1624283 2.71982 -1
8 5.6505985 3.18633 -1
9 4.3757546 1.78240 -1
10 5.8915550 1.66511 -1
library(ggplot2)
ggplot(df, aes(x=X1, y=X2, color=as.factor(Y)))+geom_point()
Encontrar el hiperplano de margen máximo
De acuerdo con este artículo de Wikipedia sobre SVM , para encontrar el hiperplano de margen máximo que necesito resolver
sujeto a (para cualquier i = 1, ..., n)
¿Cómo 'conecto' mis datos de muestra a un solucionador de QP en R (por ejemplo, quadprog ) para determinar ?
r
svm
optimization
Ben
fuente
fuente
R
? etc.Respuestas:
SUGERENCIA :
Quadprog resuelve lo siguiente:
Considere
donde es la matriz de identidad.yo
Si es e es :w p × 1 y n × 1
En líneas similares:
Formule usando las sugerencias anteriores para representar su restricción de desigualdad.UNA
fuente
quadprog
devuelve el error "matriz D en función cuadrática no es definida positiva!"Siguiendo los consejos de rightskewed ...
fuente