Próbuję zrozumieć proces szkolenia maszyny wektora liniowego wsparcia . Zdaję sobie sprawę, że właściwości SMV pozwalają na ich optymalizację znacznie szybciej niż za pomocą kwadratowego solvera programistycznego, ale do celów edukacyjnych chciałbym zobaczyć, jak to działa.
Dane treningowe
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()
Znalezienie hiperpłaszczyzny maksymalnego marginesu
Zgodnie z tym artykułem Wikipedii na temat maszyn SVM , aby znaleźć hiperpłaszczyznę maksymalnego marginesu, którą muszę rozwiązać
YI(w⋅xı-b)≥1.
zastrzeżeniem (dla dowolnego i = 1, ..., n)
Jak „podłączyć” moje przykładowe dane do solvera QP w R (na przykład quadprog ), aby ustalić ?
r
svm
optimization
Ben
źródło
źródło
R
? itp.Odpowiedzi:
WSKAZÓWKA :
Quadprog rozwiązuje następujące problemy:
Zastanów się
gdzie matrycą tożsamości.ja
Jeśli jest a jest :p × 1 y n × 1w p × 1 y n × 1
W podobnych wierszach:
Sformułuj korzystając z powyższych wskazówek, aby przedstawić swoje ograniczenie nierówności.ZA
źródło
quadprog
zwraca błąd: „macierz D w funkcji kwadratowej nie jest pozytywnie określona!”Podążając za wskazówkami po prawej stronie ...
źródło