Estou tentando entender o processo de treinamento de uma máquina de vetores de suporte linear . Percebo que as propriedades dos SMVs permitem que elas sejam otimizadas muito mais rapidamente do que usando um solucionador de programação quadrática, mas, para fins de aprendizado, gostaria de ver como isso funciona.
Dados de treinamento
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()
Localizando o hiperplano de margem máxima
De acordo com este artigo da Wikipedia sobre SVMs , para encontrar o hiperplano de margem máxima que preciso resolver
sujeito a (para qualquer i = 1, ..., n)
Como conecto meus dados de amostra a um solucionador de QP no R (por exemplo, quadprog ) para determinar ?
r
svm
optimization
Ben
fonte
fonte
R
? etc.Respostas:
DICA :
Quadprog resolve o seguinte:
Considere
onde sou a matriz de identidade.I
Se for e for :w p×1 y n×1
Em linhas semelhantes:
Formule usando as dicas acima para representar sua restrição de desigualdade.A
fonte
quadprog
retorna o erro "matriz D na função quadrática não é positiva definida!"Seguindo as dicas de rightskewed ...
fonte