Ich versuche, den Prozess zum Trainieren einer linearen Unterstützungsvektormaschine zu verstehen . Mir ist klar, dass die Eigenschaften von SMVs es ermöglichen, sie viel schneller zu optimieren als mit einem quadratischen Programmierlöser, aber zu Lernzwecken würde ich gerne sehen, wie dies funktioniert.
Trainingsdaten
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()
Finden der Hyperebene mit maximaler Marge
Laut diesem Wikipedia-Artikel über SVMs muss ich die Hyperebene mit maximalem Rand finden, die ich lösen muss
vorbehaltlich (für jedes i = 1, ..., n)
Wie stecke ich meine Beispieldaten in einen QP-Solver in R (zum Beispiel Quadprog ), um zu bestimmen ?
r
svm
optimization
Ben
quelle
quelle
R
? usw.Antworten:
TIPP :
Quadprog löst Folgendes:
Betrachten Sie
wo die Identitätsmatrix .I
Wenn ist und ist :w p×1 y n×1
In ähnlichen Zeilen:
Formulieren Sie mit den obigen Hinweisen, um Ihre Ungleichheitsbedingung darzustellen.A
quelle
quadprog
der Fehler "Matrix D in quadratischer Funktion ist nicht positiv definitiv!" Zurückgegeben.Den Hinweisen von Rightskewed folgen ...
quelle