Auf die Implementierung einer soft-margin SVM-Modell mit Hilfe von Matlab die quadprog?
Nehmen wir an, wir erhalten eine Trainings-dataset {yᵢ, xᵢ}
für i = 1, ..., n
, wo yᵢ
kann entweder -1
oder 1
und xᵢ
kann es sich z.B. um ein 2D-oder 3D-Punkt.
Im Allgemeinen, wenn die Eingabe Punkte sind Linear trennbar, das SVM-Modell kann wie folgt definiert werden
min 1/2*||w||²
w,b
vorbehaltlich der Einschränkungen (für i = 1, ..., n
)
yᵢ*(w*xᵢ - b) >= 1
Dies ist oft als die hard-margin SVM-Modell, das ist so ein constrained minimization problem, wo die unbekannten sind w
und b
. Wir können auch weglassen 1/2
in der Funktion minimiert werden, da es nur eine Konstante.
Nun, die Dokumentation über Matlab ist quadprog
Staaten
x = quadprog(H, f, A, b)
minimiert1/2*x'*H*x + f'*x
vorbehaltlich der EinschränkungenA*x ≤ b
.A
ist eine matrix verdoppelt, und dieb
ist ein Vektor, der verdoppelt.
Realisieren wir für Sie die hard-margin-SVM-Modell mit quadprog
- Funktion, um das Gewicht vector w
wie folgt
H
wird eine identity-matrix.f'
wird ein Nullen der matrix.A
ist das Links-hand-Seite der Nebenbedingungenb
gleich-1
weil die ursprüngliche Einschränkung hatte>= 1
es wird<= -1
wenn wir multiplizieren Sie mit-1
auf beiden Seiten.
Nun, ich bin versucht zu implementieren eine soft-margin SVM-Modell. Die Minimierung der Gleichung hier ist
min (1/2)*||w||² + C*(∑ ζᵢ)
w,b
vorbehaltlich der Einschränkungen (für i = 1, ..., n
)
yᵢ*(w*xᵢ - b) >= 1 - ζᵢ
so, dass ζᵢ >= 0
, wo ∑
ist das summensymbol, ζᵢ = max(0, 1 - yᵢ*(w*xᵢ - b))
und C
ist ein hyper-parameter.
Wie können diese Optimierungsprobleme gelöst werden mit der Matlab ist quadprog
Funktion? Es ist mir nicht klar, wie die Gleichung zugeordnet werden soll, die Parameter der quadprog
Funktion.
Den "ur" form der soft-margin SVM-Modell (d.h. in der definition oben) kann umgewandelt werden in ein "dual" form. Das Tat ich, und ich bin in der Lage zu Holen Sie sich die Lagrange-variable Werte (in der dual-form). Allerdings würde ich gerne wissen, wenn ich quadprog
zu lösen direkt die ur-form, ohne Sie zu konvertieren, um die duale form.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich weiß nicht, wie es zu einem problem werden kann. Lassen Sie
z
unser Vektor der(2n + 1)
Variablen:Dann
H
wird die Diagonale matrix mit den erstenn
Werte auf der diagonalen gleich1
und die letztenn + 1
auf null gesetzt:Vektor
f
ausgedrückt werden kann als:Ersten Satz beschränkt wird:
wo
A1
ist die gleiche matrix wie in ur-form.Zweiten Satz von Einschränkungen wird untere Schranken:
Dann können Sie anrufen MATLAB:
P. S. ich kann verwechselt werden, in einigen kleinen details, aber die Allgemeine Idee ist die richtige.
Wenn sei z = (w; w0; eps)T eine lange Vektor mit n+1+m Elemente.(m ist die Anzahl der Punkte)
Dann,
Die Ungleichheit Zwänge können wie folgt angegeben werden :
wobei X für die n x m-matrix-input in der ur-form.Aus den 2 teilen für Eine, der erste Teil ist für w0 und der zweite Teil ist für die eps.
Die Gleichheit Einschränkungen :
Grenzen:
Nun
z=quadprog(H,f,A,b,Aeq,beq,lb,ub)
Komplette code. Die Idee ist die gleiche wie oben.
X
usw.