Wie funktioniert eine Support Vector Machine (SVM)?


108

Wie funktioniert eine Support Vector Machine (SVM) und was unterscheidet sie von anderen linearen Klassifikatoren wie dem linearen Perceptron , der linearen Diskriminanzanalyse oder der logistischen Regression ? *

(* Ich denke über die zugrunde liegenden Motivationen für den Algorithmus, Optimierungsstrategien, Generalisierungsfähigkeiten und Laufzeitkomplexität nach. )



Antworten:


126

Support-Vektor-Maschinen konzentrieren sich nur auf die Punkte, die am schwierigsten zu unterscheiden sind, während andere Klassifikatoren auf alle Punkte achten.

Die Intuition hinter dem Support Vector Machine-Ansatz ist, dass, wenn ein Klassifikator bei den schwierigsten Vergleichen gut ist (die Punkte in B und A, die in Abbildung 2 am nächsten beieinander liegen), der Klassifikator bei den einfachen Vergleichen noch besser ist ( Punkte in B und A vergleichen, die weit voneinander entfernt sind).

Perceptrons und andere Klassifikatoren:

Perceptrons werden gebildet, indem jeweils ein Punkt genommen und die Trennlinie entsprechend angepasst wird. Sobald alle Punkte getrennt sind, stoppt der Perzeptron-Algorithmus. Aber es könnte überall aufhören. Abbildung 1 zeigt, dass es eine Reihe verschiedener Trennlinien gibt, die die Daten trennen. Das Stoppkriterium des Perzeptrons ist einfach: "Trenne die Punkte und verbessere die Linie nicht mehr, wenn du einen 100% igen Abstand hast". Dem Perzeptron wird nicht ausdrücklich gesagt, dass es die beste Trennlinie finden soll. Logistische Regression und lineare Diskriminanzmodelle sind ähnlich aufgebaut wie Perzeptrone.

Die beste Trennlinie maximiert den Abstand zwischen den B-Punkten, die A am nächsten liegen, und den A-Punkten, die B am nächsten liegen. Es ist nicht erforderlich, alle Punkte zu betrachten, um dies zu tun. Tatsächlich kann das Einbeziehen von Feedback von weit entfernten Punkten die Linie ein wenig zu weit stoßen, wie unten dargestellt.

Bildbeschreibung hier eingeben

Support-Vektor-Maschinen:

Im Gegensatz zu anderen Klassifikatoren wird der Support Vector Machine explizit befohlen, die beste Trennlinie zu finden. Wie? Die Support-Vektor-Maschine sucht nach den nächsten Punkten (Abbildung 2), die sie "Support-Vektoren" nennt (der Name "Support-Vektor-Maschine" beruht auf der Tatsache, dass Punkte wie Vektoren sind und die beste Linie "von" oder "abhängt" wird von den nächstgelegenen Punkten "unterstützt").

Sobald das SVM die nächsten Punkte gefunden hat, zeichnet es eine Linie, die sie verbindet (siehe die Linie mit der Bezeichnung 'w' in Abbildung 2). Es zeichnet diese Verbindungslinie durch Vektorsubtraktion (Punkt A - Punkt B). Die Unterstützungsvektormaschine erklärt dann die beste Trennlinie als die Linie, die die Verbindungslinie halbiert und zu dieser senkrecht ist.

Die Support-Vektor-Maschine ist besser, da Sie bereits eine Linie erstellt haben, die B und A so weit wie möglich voneinander entfernt hält, wenn Sie eine neue Stichprobe (neue Punkte) erhalten die Linie in das Gebiet des anderen.

Bildbeschreibung hier eingeben

Ich betrachte mich als visuellen Lernenden und habe lange mit der Intuition hinter Support-Vektor-Maschinen zu kämpfen. Die Arbeit mit dem Titel Dualität und Geometrie in SVM-Klassifikatoren hat mir endlich geholfen, das Licht zu sehen. Von dort habe ich die Bilder bekommen.


4
+1 von einem anderen visuellen Lerner! Für den Leser möchte ich festhalten, dass diese Grenzen, die in der obigen Abbildung ersichtlich sind, auf einem Datensatz basieren, der bereits transformiert wurde. Nicht der Rohdatensatz.
Kingz

Als ich mehr als zwei Jahre lang SVM las, verstand ich heute, wie Trennlinien identifiziert werden und ein paar weitere Dinge. Danke für die saubere Antwort.
user123

53

Die Antwort von Ryan Zotti erklärt die Motivation für die Maximierung der Entscheidungsgrenzen. Die Antwort von carlosdc zeigt einige Ähnlichkeiten und Unterschiede zu anderen Klassifikatoren. Ich werde in dieser Antwort einen kurzen mathematischen Überblick darüber geben, wie SVMs trainiert und verwendet werden.

Notizen

Im Folgenden werden Skalare mit kursiven Großbuchstaben (z. B. ), Vektoren mit fetten Großbuchstaben (z. B. ) und Matrizen mit kursiven Großbuchstaben (z. B. ). ist die Transponierte von und .y,bw,xWwTww=wTw

Lassen:

  • x ist ein Merkmalsvektor (dh die Eingabe der SVM). , wobei die Dimension des Merkmalsvektors ist.xRnn
  • y ist die Klasse (dh die Ausgabe der SVM). , dh die Klassifizierungsaufgabe ist binär.y{1,1}
  • w und sind die Parameter der SVM: Wir müssen sie mit dem Trainingsset lernen.b
  • (x(i),y(i)) ist das Beispiel im Datensatz. Nehmen wir an, wir haben Samples im Trainingsset.ithN

Mit kann man die Entscheidungsgrenzen der SVM wie folgt darstellen:n=2

Bildbeschreibung hier eingeben

Die Klasse wird wie folgt bestimmt:y

y(i)={1 if wTx(i)+b11 if wTx(i)+b1

was genauer geschrieben werden kann als .y(i)(wTx(i)+b)1

Tor

Der SVM hat zum Ziel, zwei Anforderungen zu erfüllen:

  1. Die SVM sollte den Abstand zwischen den beiden Entscheidungsgrenzen maximieren. Mathematisch bedeutet dies, dass wir den Abstand zwischen der durch definierten Hyperebene und der durch definierten Hyperebene maximieren möchten . Dieser Abstand entspricht . Das heißt, wir wollen lösen . Ebenso wollen wir .wTx+b=1wTx+b=12wmaxw2wminww2

  2. Die SVM sollte auch alle korrekt klassifizieren , was bedeutet, dassx(i)y(i)(wTx(i)+b)1,i{1,,N}

Was uns zu folgendem quadratischen Optimierungsproblem führt:

minw,bw2,s.t.y(i)(wTx(i)+b)1i{1,,N}

Dies ist der SVM mit festem Rand , da dieses quadratische Optimierungsproblem eine Lösung zulässt, wenn die Daten linear trennbar sind.

Man kann die Beschränkungen lockern, indem man sogenannte Slack-Variablen einführt . Beachten Sie, dass jede Probe des Trainingssatzes eine eigene Slack-Variable hat. Dies ergibt das folgende quadratische Optimierungsproblem:ξ(i)

minw,bw2+Ci=1Nξ(i),s.t.y(i)(wTx(i)+b)1ξ(i),i{1,,N}ξ(i)0,i{1,,N}

Dies ist die SVM mit weichem Rand . ist ein Hyperparameter, der als Bestrafung des Fehlerausdrucks bezeichnet wird . ( Was ist der Einfluss von C in SVMs mit linearen Kernel? Und Suchbereich , die zur Bestimmung SVM optimale Parameter? ).C

Man kann noch mehr Flexibilität zu, indem eine Funktion Einführung , die bilden den ursprünglichen Merkmalsraum auf einen höherdimensionalen Merkmalsraum. Dies ermöglicht nichtlineare Entscheidungsgrenzen. Das quadratische Optimierungsproblem wird:ϕ

minw,bw2+Ci=1Nξ(i),s.t.y(i)(wTϕ(x(i))+b)1ξ(i),i{1,,N}ξ(i)0,i{1,,N}

Optimierung

Das quadratische Optimierungsproblem kann in ein anderes Optimierungsproblem umgewandelt werden, das Lagrange-Dual-Problem genannt wird (das vorherige Problem wird als primär bezeichnet ):

maxαminw,bw2+Ci=1Nα(i)(1wTϕ(x(i))+b)),s.t.0α(i)C,i{1,,N}

Dieses Optimierungsproblem kann vereinfacht werden (indem einige Farbverläufe auf ), um:0

maxαi=1Nα(i)i=1Nj=1N(y(i)α(i)ϕ(x(i))Tϕ(x(j))y(j)α(j)),s.t.0α(i)C,i{1,,N}

w erscheint nicht als (wie vom Repräsentantensatz angegeben ).w=i=1Nα(i)y(i)ϕ(x(i))

Wir lernen daher das mit dem des Trainingssatzes.α(i)(x(i),y(i))

(FYI: Warum sollte man sich beim Anpassen von SVM mit dem doppelten Problem beschäftigen? Kurze Antwort: Schnellere Berechnung + ermöglicht die Verwendung des Kernel-Tricks, obwohl es einige gute Methoden zum Trainieren von SVM im Urzustand gibt, z. B. siehe {1})

Eine Vorhersage machen

Sobald die gelernt sind, kann man die Klasse einer neuen Stichprobe mit dem Merkmalsvektor wie folgt vorhersagen :α(i)xtest

ytest=sign(wTϕ(xtest)+b)=sign(i=1Nα(i)y(i)ϕ(x(i))Tϕ(xtest)+b)

Die Summe könnte überwältigend erscheinen, da man alle Trainingsmuster summieren muss, aber die überwiegende Mehrheit von ist (siehe Warum sind die Lagrange-Multiplikatoren sind für SVMs sparsam? ) In der Praxis ist dies also kein Problem. (Beachten Sie, dass man Sonderfälle konstruieren kann, in denen alle .) iff ist ein Unterstützungsvektor . Die obige Abbildung enthält 3 Unterstützungsvektoren.i=1Nα(i)0α(i)>0α(i)=0x(i)

Kernel-Trick

Man kann beobachten, dass das Optimierungsproblem das nur im inneren Produkt . Die Funktion, die dem inneren Produkt wird genannt ein kernel , auch bekannt als Kernfunktion, die oft von bezeichnet .ϕ(x(i))ϕ(x(i))Tϕ(x(j))(x(i),x(j))ϕ(x(i))Tϕ(x(j))k

Man kann so wählen , dass das innere Produkt effizient berechnet werden kann. Dies ermöglicht die Verwendung eines potenziell großen Funktionsraums bei geringen Rechenkosten. Das nennt man den Kernel-Trick . Damit eine Kernelfunktion gültig ist , dh mit dem Kernel-Trick verwendet werden kann, müssen zwei Schlüsseleigenschaften erfüllt sein . Es gibt viele Kernelfunktionen zur Auswahl . Als Randnotiz kann der Kernel-Trick auf andere maschinelle Lernmodelle angewendet werden. In diesem Fall werden sie als kernelisiert bezeichnet .k

Weitergehen

Einige interessante QAs zu SVMs:

Andere Links:


Verweise:


2
Hallo Franck, vielen Dank für deine Antwort. Würde es Ihnen etwas ausmachen zu erklären, warum der Vektor orthogonal zur von SVM erzeugten Hyperebene ist? Und wie haben Sie den Abstand zwischen zwei Entscheidungsgrenzen so berechnet, dass erw2w
tosik am

3
Zusätzlich zu dieser großartigen Antwort möchte ich dieses Video empfehlen, das die Mathematik hinter SVM erklärt und insbesondere die Frage @tosik kommentiert. Youtube.com/watch?v=_PwhiWxHK8o
Nikolas Rieble

Sehr nette Antwort. Nur eine Bemerkung zu diesem Teil: iff ist ein Unterstützungsvektor . Bei der Klassifizierung erfolgt die Summierung effektiv über Unterstützungsvektoren (dh ). α(i)=0x(i)α(i)0
989

13

Ich werde mich auf die Ähnlichkeiten und Unterschiede zu anderen Klassifikatoren konzentrieren:

  • Von einem Perzeptron: SVM verwendet Gelenkverlust und L2-Regularisierung, das Perzeptron verwendet den Perzeptronverlust und könnte ein frühes Stoppen (oder unter anderen Techniken) für die Regularisierung verwenden, es gibt wirklich keinen Regularisierungsterm im Perzeptron. Da es keinen Regularisierungsterm gibt, muss das Perzeptron übertrainiert werden, daher können die Generalisierungsfähigkeiten willkürlich schlecht sein. Die Optimierung erfolgt durch stochastische Gradientenabsenkung und ist daher sehr schnell. Positiv zu vermerken ist, dass durch ein vorzeitiges Stoppen mit einer leicht modifizierten Verlustfunktion die Performance einer SVM gleichkommen kann.

  • Aus der logistischen Regression: Die logistische Regression verwendet einen logistischen Verlustausdruck und kann eine L1- oder L2-Regularisierung verwenden. Sie können sich die logistische Regression als den diskriminierenden Bruder der generativen Naive-Bayes vorstellen.

  • Aus LDA: LDA kann auch als generativer Algorithmus angesehen werden, der davon ausgeht, dass die Wahrscheinlichkeitsdichtefunktionen (p (x | y = 0) und p (x | y = 1) normal verteilt sind. Dies ist ideal, wenn die Daten in sind Tatsache normal verteilt. Es hat jedoch den Nachteil, dass "Training" die Inversion einer Matrix erfordert, die groß sein kann (wenn Sie viele Funktionen haben). Unter Homokedastizität wird LDA zu QDA, die für normal verteilte Daten optimal ist Annahmen sind erfüllt, die Sie wirklich nicht besser machen können.

Zur Laufzeit (Testzeit), wenn das Modell einmal trainiert wurde, ist die Komplexität all dieser Methoden dieselbe. Es handelt sich lediglich um ein Skalarprodukt zwischen der gefundenen Hyperebene, dem Trainingsvorgang und dem Datenpunkt.


1
Da Sie in SVM sehr kompetent zu sein scheinen, möchte ich Sie bitten, meine Zweifel zu klären: Wenn wir die beste trennende Hyperebene gefunden haben, wofür verwenden wir sie? Wir können SVM als eine Methode definieren, die zum einen die beste Hyperebene zur korrekten Klassifizierung von Datenpunkten auswählt und zum anderen diese Hyperebene zum Trennen neuer Datenpunkte in den beiden Klassen verwendet. Richtig? (Ich habe einige Zweifel im zweiten Teil)
DavideChicco.it

1
@ DavideChicco.it Ja, wir können die Indikatorfunktion verwenden, um neue Daten zu klassifizieren, was häufig der Hauptzweck des Klassifikators ist. (Nehmen Sie nicht mein Wort für irgendetwas davon, ich bin neu in all dem).
Keyser

12

Die Technik basiert auf dem Zeichnen einer Entscheidungsgrenze und lässt so viel Spielraum wie möglich für die ersten positiven und negativen Beispiele:

Bildbeschreibung hier eingeben

Wie in der obigen Abbildung können wir, wenn wir einen orthogonalen Vektor mit auswählen , ein Entscheidungskriterium für jedes unbekannte Beispiel , das als positiv der Form katalogisiert werden soll:w=1u

wuC

Dies entspricht einem Wert, bei dem die Projektion über die Entscheidungslinie hinaus in die Mitte der Straße platziert wird. Beachten Sie, dass .wu=uw

Eine äquivalente Bedingung für eine positive Probe wäre:

(1)wu+b0

mitC=b.

Wir brauchen und , um eine Entscheidungsregel zu haben, und um dorthin zu gelangen, brauchen wir Einschränkungen .bw

Erste Eingrenzungs wir aufzuzwingen werden, ist , dass für jede positive Probe , ; und für negative Proben . In der Teilungsgrenze oder Hyperebene ( Median ) wäre der Wert , während die Werte an den Dachrinnen und :x+,wx++b1wx+b1011

Bildbeschreibung hier eingeben

Der Vektor ist der Gewichtungsvektor , während die Vorspannung ist .wb


Um diese beiden Ungleichungen zusammenzuführen, können wir die Variable so einführen , dass für positive Beispiele und wenn die Beispiele negativ sind, und schließenyiyi=+1yi=1

yi(xiw+b)10.

Wir stellen also fest, dass dies größer als Null sein muss, aber wenn sich das Beispiel auf den Hyperebenen (den "Rinnen") befindet, die den Abstand zwischen der Entscheidungshyperebene und den Spitzen der Stützvektoren maximieren (in diesem Fall Linien), dann:

(2)yi(xiw+b)1=0

Beachten Sie, dass dies dem Erfordernis vonyi(xiw+b)=1.

Bildbeschreibung hier eingeben


Zweite Einschränkung : Der Abstand der Entscheidungshyperebene zu den Spitzen der Unterstützungsvektoren wird maximiert. Mit anderen Worten, der Abstand ("Straße") wird maximiert:

Bildbeschreibung hier eingeben

Unter der Annahme eines Einheitsvektors senkrecht zur Entscheidungsgrenze ist das Skalarprodukt mit dem Unterschied zwischen zwei "angrenzenden" Plus- und Minus-Beispielen die Breite von "der Straße" :w

width=(x+x)ww

Auf der obigen Gleichung und ist in der Rinne (auf Hyperebenen die Trennung maximieren). Für das positive Beispiel gilt daher: oder ; und für das negative Beispiel: . Also, umformulieren die Breite der Straße:x+x (xiw+b)1=0x+w=1bxw=1b

width=(x+x)ww=x+wxww=1b(1b)w(3)=2w

So , jetzt müssen wir nur noch die Breite der Straße maximieren - also maximieren minimiert , oder minimieren:2w,w

(4)12w2

das ist mathematisch günstig.


Also wollen wir:

  1. Minimiere mit der Einschränkung:x2

  2. yi(wxi+b)1=0


Da wir diesen Ausdruck aufgrund einiger Einschränkungen minimieren möchten, benötigen wir einen Lagrange-Multiplikator (zurück zu den Gleichungen 2 und 4):

(5)L=12w2λi[yi(xiw+b)1]

Differenzieren,

Lw=wλiyixi=0
.

Deshalb,

(6)w=λiyixi

Und Unterscheidung in Bezug aufb:

Lb=λiyi=0,

was bedeutet, dass wir ein Nullsummenprodukt von Multiplikatoren und Labels haben:

(7)λiyi=0

Gleichung (6) wieder in Gleichung (5) einfügen,

L=12(λiyixi)(λjyjxj)(λiyixi)(λjyjxj)λiyib+λi

Der vorletzte Term ist gemäß Gleichung (7) Null.

Deshalb,

(8)L=λi12ijλiλjyiyjxixj

Gleichung (8) ist der letzte Lagrange.

Daher hängt die Optimierung vom Skalarprodukt von Beispielpaaren ab.

Gehen Sie zurück zu der "Entscheidungsregel" in Gleichung (1) und verwenden Sie Gleichung (6):

(9)λiyixiu+b0

wird die endgültige Entscheidungsregel für einen neuen Vektor seinu.


Nichts Originelles ... Nur meine eigenen Notizen auf einem höheren Einstiegsniveau. Grundsätzlich aus diesem Video vom MIT mit meinen eigenen Illustrationen. Bei Fehlern lassen Sie es mich bitte wissen. Aufschlussreiche Antworten und weitere Details finden Sie auf Expertenebene (Francks Post und andere).
Antoni Parellada

Und wie berechne ich b ?
Mike

1
@mike wobei die Menge der Indizes der Stützvektoren istSie finden es hier . b=ysmSαmymxmxsS(αi>0).
Antoni Parellada

@AntoniParellada erstaunliche Antwort Antoni vielen Dank - aber verpassen Sie nicht einen Teil über das Dual-Problem und die KTT-Bedingungen?
Xavier Bourret Sicotte

@XavierBourretSicotte Ich werde eine Weile nicht daran arbeiten können. Bitte erwägen Sie, eine alternative Antwort zu diesen Themen zu schreiben. Wenn Sie dies tun, lassen Sie es mich bitte wissen, damit ich davon Kenntnis erhalte und es unterstützen kann.
Antoni Parellada

3

Einige Kommentare zu Dualitäts- und KTT-Bedingungen

Ursprüngliches Problem

Erinnern Sie sich daran, dass unser ursprüngliches oder ursprüngliches Optimierungsproblem bei @ Antonis Post zwischen den Gleichungen und Form hat:(4)(5)

minw,bf(w,b)=minw,b 12||w||2s.t.  gi(w,b)=y(i)(wTx(i)+b)+1=0

Lagrange-Methode

Die Methode der Lagrange-Multiplikatoren ermöglicht es uns, ein eingeschränktes Optimierungsproblem in ein nicht eingeschränktes der folgenden Form umzuwandeln:

L(w,b,α)=12||w||2imαi[y(i)(wTx(i)+b)1]

Wobei als Lagrange bezeichnet wird und als Lagrange-Multiplikatoren . L(w,b,α)αi

Unser primäres Optimierungsproblem mit der Lagrange lautet wie folgt: (Beachten Sie, dass die Verwendung von , nicht die strengste ist, da wir hier auch und ...)minmaxinfsup

minw,b(maxαL(w,b,α))

Duales Problem

Was @Antoni und Prof. Patrick Winston bei ihrer Herleitung getan haben, ist anzunehmen, dass die Optimierungsfunktion und die Einschränkungen einige technische Bedingungen erfüllen, so dass wir Folgendes tun können:

minw,b(maxαL(w,b,α))=maxα(minw,bL(w,b,α))

Dies ermöglicht es uns, die partiellen Ableitungen von in Bezug auf und , gleich Null zu sein und die Ergebnisse dann wieder in die ursprüngliche Gleichung des Lagrange zu setzen, wodurch ein Äquivalent erzeugt wird duales Optimierungsproblem des FormularsL(w,b,α)wb

maxαminw,bL(w,b,α)maxαimαi12i,jmy(i)y(j)αiαj<x(i)x(j)>s.t. αi0s.t. imαiy(i)=0

Dualität und KTT

Diese Bedingungen sind eine Kombination der Bedingungen Duality und Karush Kuhn Tucker (KTT) und ermöglichen es uns, das duale Problem anstelle des ursprünglichen zu lösen , wobei sichergestellt wird, dass die optimale Lösung dieselbe ist. In unserem Fall gelten folgende Bedingungen:

  • Die Funktionen des primären Ziels und der Ungleichungsbeschränkung müssen konvex sein
  • Die Gleichheitsbedingungsfunktion muss affin sein
  • Die Einschränkungen müssen streng machbar sein

Dann gibt es die Lösungen für das ursprüngliche und das doppelte Problem sind. Darüber hinaus erfüllen die Parameter die folgenden KTT-Bedingungen:w,αw,α

wiL(w,α,β)=0(A)βiL(w,α,β)=0(B)αigi(w)=0(C)gi(w)0(D)αi0(E)

Wenn darüber hinaus einige die KTT-Lösungen erfüllen, sind sie auch eine Lösung für das primäre und das duale Problem.w,α

Die obige Gleichung ist von besonderer Bedeutung und wird als duale Komplementaritätsbedingung bezeichnet . impliziert, dass wenn dann was bedeutet, dass die Bedingung aktiv ist, dh sie gilt eher mit Gleichheit als mit Ungleichheit. Dies ist die Erklärung für Gleichung in Antonis Herleitung, in der die Ungleichheitsbedingung in eine Gleichheitsbedingung umgewandelt wird.(C)αi>0gi(w)=0gi(w)0(2)

Ein intuitives, aber informelles Diagramm

Bildbeschreibung hier eingeben

Quellen


2
Vielen Dank. Ich lese es schnell und komme später darauf zurück, aber es klingt großartig und geht auf fehlende Punkte in meiner Antwort ein.
Antoni Parellada
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.