Wie kann eine Entwurfsentscheidung bei einer Reihe von Punkten im zweidimensionalen Raum für SVM funktionieren?


10

Kann mir jemand erklären, wie man eine SVM-Entscheidungsfunktion entwirft? Oder verweisen Sie mich auf eine Ressource, die ein konkretes Beispiel beschreibt.

BEARBEITEN

Für das folgende Beispiel kann ich sehen, dass die Gleichung X2=1.5 die Klassen mit maximalem Rand trennt. Aber wie passe ich die Gewichte an und schreibe Gleichungen für Hyperebenen in der folgenden Form.

H1:w0+w1x1+w2x21forYi=+1H2:w0+w1x1+w2x21forYi=1.

Geben Sie hier die Bildbeschreibung ein

Ich versuche, die zugrunde liegende Theorie im 2D-Raum richtig zu machen (da sie einfacher zu visualisieren ist), bevor ich über höhere Dimensionen nachdenke.

Ich habe eine Lösung dafür gefunden. Kann jemand bitte bestätigen, ob dies korrekt ist?

Der Gewichtsvektor ist (0, -2) und W_0 ist 3

H1:3+0x12x21forYi=+1H2:3+0x12x21forYi=1.

Es ist eine Darstellung mit R hier , aber ich fühle mich Ihre Frage mehr auf dem algorithmischen Aspekte ist. In diesem Fall wäre es hilfreich, wenn Sie weitere Details zur beabsichtigten Anwendung oder verfügbaren Ressource hinzufügen könnten.
Chl

@chl Ich habe Frage mit Details aktualisiert
Naresh

Antworten:


12

Es gibt mindestens zwei Möglichkeiten, SVMs zu motivieren, aber ich werde hier den einfacheren Weg einschlagen.

D={(x1i,x2i,yi)}yi{1,1}11

w0+w1x1+w2x2=0w0+w1x1+w2x2>0w0+w1x1+w2x2<0

[w0,w1,w2]w0+w1x1i+w2x2i0xiyi=1w0+w1x1i+w2x2i<0xiyi=1

Nehmen wir an, dass eine solche Zeile tatsächlich existiert, dann kann ich einen Klassifikator folgendermaßen definieren:

min|w0|+|w1|+|w2|subject to:w0+w1x1i+w2x2i0,xi with yi=1w0+w1x1i+w2x2i<0,xi with yi=1

Ich habe oben eine beliebige Zielfunktion verwendet, es ist uns im Moment egal, welche Zielfunktion verwendet wird. Wir wollen nur ein , das unsere Anforderungen erfüllt. Da wir angenommen haben, dass eine Linie existiert, so dass wir die beiden Klassen mit dieser Linie trennen können, werden wir eine Lösung für das obige Optimierungsproblem finden.w

Das obige ist kein SVM, aber es gibt Ihnen einen Klassifikator :-). Dieser Klassifikator ist jedoch möglicherweise nicht sehr gut. Aber wie definieren Sie einen guten Klassifikator? Ein guter Klassifikator ist normalerweise derjenige, der auf dem Testset gut abschneidet. Im Idealfall würden Sie alle möglichen durchgehen , die Ihre Trainingsdaten trennen, und sehen, welche davon in den Testdaten gut abschneiden. Allerdings gibt es unendlich ‚s, so dass diese ganz hoffnungslos. Stattdessen werden wir einige Heuristiken betrachten, um einen guten Klassifikator zu definieren. Eine Heuristik ist, dass die Linie, die die Daten trennt, ausreichend weit von allen Punkten entfernt ist (dh es gibt immer eine Lücke oder einen Abstand zwischen den Punkten und der Linie). Der beste Klassifikator unter diesen ist der mit der maximalen Marge. Dies wird in SVMs verwendet.ww

Anstatt darauf zu bestehen, dass für alle Punkte mit und für alle Punkte mit , wenn wir darauf bestehen, dass für alle Punkte mit und für alle Punkte mit , dann bestehen wir tatsächlich darauf, dass Punkte weit von der Linie entfernt sind. Der dieser Anforderung entsprechende geometrische Rand lautet .w0+w1x1i+w2x2i0xiyi=1w0+w1x1i+w2x2i<0xiyi=1w0+w1x1i+w2x2i1xiyi=1w0+w1x1i+w2x2i1xiyi=11w2

Wir erhalten also das folgende Optimierungsproblem: Eine leicht prägnante Form des Schreibens ist: Dies ist im Grunde die grundlegende SVM-Formulierung. Der Kürze halber habe ich viele Diskussionen übersprungen. Hoffentlich habe ich den größten Teil der Idee noch durchgebracht.

max1w2subject to:w0+w1x1i+w2x2i1,xi with yi=1w0+w1x1i+w2x2i1,xi with yi=1
minw2subject to:yi(w0+w1x1i+w2x2i)1,i

CVX-Skript zur Lösung des Beispielproblems:

A = [1 2 1; 3 2 1; 2 3 1; 3 3 1; 1 1 1; 2 0 1; 2 1 1; 3 1 1];
b = ones(8, 1);
y = [-1; -1; -1; -1; 1; 1; 1; 1];
Y = repmat(y, 1, 3);
cvx_begin
variable w(3)
minimize norm(w)
subject to
(Y.*A)*w >= b
cvx_end

Nachtrag - Geometrischer Rand

Oben haben wir bereits darum gebeten, nach suchen, so dass oder allgemein . Die LHS, die Sie hier sehen, wird als funktionale Marge bezeichnet. Wir haben hier also angefordert, dass die funktionale Marge . Nun werden wir versuchen, den geometrischen Rand unter Berücksichtigung dieser funktionalen Randanforderung zu berechnen.wyi(w0+w1x1+w2x2)1yi(w0+wTx)11

Was ist ein geometrischer Rand? Der geometrische Rand ist der kürzeste Abstand zwischen Punkten in den positiven Beispielen und Punkten in den negativen Beispielen. Nun können die Punkte mit dem kürzesten Abstand, wie oben gefordert, einen Funktionsspielraum von mehr als 1 haben. Betrachten wir jedoch den Extremfall, wenn sie der Hyperebene am nächsten liegen, dh der Funktionsspielraum für die kürzesten Punkte ist genau gleich zu 1. Sei der Punkt auf dem positiven Beispiel ein Punkt, so dass und der Punkt auf dem negativen Beispiel ein Punkt ist, so dass . Nun ist der Abstand zwischen und der kürzeste, wennx+wTx++w0=1xwTx+w0=1x+xx+x ist senkrecht zur Hyperebene.

Mit all den obigen Informationen werden wir nun versuchen, welches der geometrische Rand ist. x+x2

wTx++w0=1
wTx+w0=1
wT(x+x)=2
|wT(x+x)|=2
w2x+x2=2
x+x2=2w2

[1] Es spielt eigentlich keine Rolle, welche Seite du für und wählst . Sie müssen nur konsequent bleiben, was auch immer Sie wählen.11


1
@naresh Ja, das Lösen in cvx hat mir genau die gleiche Lösung gegeben, die Sie haben . w=[0,2,3]
TenaliRaman

1
@entropy danke ich habe den Tippfehler behoben. Ich werde die Erklärung des geometrischen Randes hinzufügen.
TenaliRaman

1
@entropy Ich habe die Antwort mit der Erklärung des geometrischen Randes aktualisiert.
TenaliRaman

1
@entropy ist eine Hyperebene, die durch den Ursprung verläuft. Um den Raum aller linearen Gleichungen abzudecken, benötigen Sie den Bias-Term. Denken Sie an Punkte in 2D und lassen Sie uns sagen, dass Sie versuchen, eine Linie zu finden, die diese Punkte trennt. Diese Punkte liegen jedoch alle im ersten Quadranten. Jetzt kann man diese Punkte so anordnen, dass sie trennbar sind, aber nicht durch eine Linie, die durch den Ursprung verläuft. Eine Linie mit einer geeigneten Vorspannung kann dies jedoch tun. wTx
TenaliRaman

1
@entropy Nachdem Sie das oben Gesagte gesagt haben, haben Sie vielleicht inzwischen erkannt, dass selbst eine Linie, die durch den Ursprung verläuft, die Klassen trennen kann, wenn Sie die Punkte richtig drehen und verschieben. Normalerweise ist es jedoch nicht einfach, diese richtige Rotation und Verschiebung zu finden, verglichen mit dem Erlernen des Bias-Terms.
TenaliRaman
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.