WikiDer > Support-Vektor-Maschine
Support-Vektor-Maschine (SVM) ist a Algorithmus im Bereich der kontrollierten maschinelles Lernen. Die Methode basiert auf der Theorie des statistischen Lernens der Russen Vapnik und Chervonenkis.[1] Es hat viele verschiedene Anwendungen in Einstufung und Regressionsanalyse.
Prinzip
Eine SVM ist ein Binärklassifikator; es ordnet Objekte anhand einer Reihe von Attributen einer von zwei Klassen zu. Dazu muss sie zuerst numerisches Modell mache diese Objekte zu Punkten in a Vektorraum. In der Trainingsphase wendet die SVM eine lineare Trennung zwischen den beiden Klassen anhand einer Sammlung von Beispielen an, von denen angegeben wird, zu welcher Klasse sie gehören. so gut wie möglich voneinander (diese Trennung ist a Hyperebene; in zwei Dimensionen ist es eine gerade Linie). Danach kann die SVM entscheiden, zu welcher Klasse sie für ein neues zu klassifizierendes Objekt gehört, indem sie entlang der Seite der Hyperebene schaut, auf der der entsprechende Punkt im Raum liegt.
Die "bestmögliche" Trennung bedeutet, dass der Abstand um die Schnittstelle, dh der Abstand zwischen der Schnittstelle und den nächstgelegenen Beispielen jeder Klasse, so groß wie möglich ist. Diese nächsten Beispiele heißen die Stützvektoren.
Das Verfahren ist auch in Fällen nützlich, in denen eine lineare Trennung zwischen den beiden Klassen nicht möglich ist (durch eine entsprechende Transformation, dem sogenannten "Kernel-Trick"), und auch in Fällen, in denen Rauschen oder Fehler in den Daten zu einigen Beispiele können sich auf der falschen Seite der Schnittstelle befinden. Computerimplementierungen von SVM können Probleme mit Tausenden von Dimensionen handhaben.
Lineare Klassifizierung
Der binäre lineare Klassifikator unterteilt Objekte in zwei Klassen, eine positive und eine negative, die mit 1 bzw. -1 gekennzeichnet sind. Die Erfassung von Trainingsdaten besteht dann aus nein Punkte und ihre Bezeichnungen:
in welchem jaich ist 1 oder −1, um anzugeben, zu welcher Klasse der Punkt gehört gehört. Jeder ist ein p-dimensional RealVektor; jedes von den p Elemente im Vektor beschreibt eine Eigenschaft eines Beispielobjekts.
In der Trainingsphase muss die SVM die trennende Hyperebene bestimmen, die die Punkte mit verbindet trennt sich von den Punkten mit . Eine Hyperebene wird durch eine Gleichung der Form . bestimmt
in welchem es internes Produkt von zwei Vektoren. ist der normaler Vektor die senkrecht zur Hyperebene steht und ist der Abstand von der Hyperebene zum Ursprung gemäß der Richtung des Normalenvektors ( ist der Norm des Vektors ).
Die trennende Hyperebene wird so bestimmt, dass der sogenannte Rand, das ist der kleinste Abstand zur Hyperebene, für beide Klassen maximal ist, um einen möglichst großen Abstand zu gewährleisten. Die geometrische Interpretation davon lautet: Die optimale Hyperebene ist senkrecht relativ zur kürzesten Linie zwischen den konvexe Schalen der beiden Klassen und schneidet diese Linie genau in der Mitte.
Für eine linear separierbare Trainingsmenge sind unendlich viele Trennungsebenen möglich. | Die beste Schnittstelle (in Rot) ist die mit dem größten Spielraum. Die eingekreisten Beispiele sind die Stützvektoren. |
Die optimale trennende Hyperebene erfüllt die Anforderung:
Um diese optimale Hyperebene zu konstruieren, a Optimierungsproblem gelöst, was wie folgt formuliert werden kann:
- minimieren in Bezug auf
- mit den Bedingungen
Dies ist ein konvex-quadratisches (d. h. nichtlineares) Programmierproblem. Es wird normalerweise gelöst durch die Lagrange-Dual Problem, das unter bestimmten Bedingungen (den sogenannten Kuhn-Tucker-Bedingungen) die gleiche Lösung hat. Das duale Problem ist oft einfacher zu lösen als das primäre, mit Software "von der Stange".
Beachten Sie, dass die Lage der trennenden Hyperebene nur von wenigen Beispielen abhängt, nämlich denjenigen, die ihr am nächsten sind. Das nennt man Stützvektoren (Dies sind die eingekreisten Punkte in der Abbildung oben). Punkte, die weiter von der Hyperebene entfernt sind, können aus dem Trainingssatz weggelassen werden, ohne die Position der Hyperebene zu ändern; wird ein Stützvektor weggelassen, ändert sich die trennende Hyperebene.
Sobald die optimalen Werte von berechnet, kann die SVM in der Entscheidungsphase einen neuen Vektor erzeugen klassifizieren durch Berechnung der Entscheidungsfunktion
was 1 oder -1 zurückgibt (oder 0, wenn der Vektor genau auf der Schnittstelle liegt).
Nicht trennbare Klassen
In den meisten realen Fällen können die Trainingsbeispiele nicht scharf linear in zwei Klassen getrennt werden. Dies kann beispielsweise an Messfehlern oder Rauschen in den Daten liegen oder es gibt eine Grauzone, in der sich die beiden Klassen überschneiden. Für diesen Fall kann das Optimierungsproblem durch Hinzufügen eines zusätzlichen "Strafterms" modifiziert werden. Es hat dann folgende Form:
- minimieren in Bezug auf : ,
- mit den Einschränkungen
Also geben wir für jedes Trainingsbeispiel eine zusätzliche Variable ein im. Diese "Restvariable" (englisch: Schlupfvariable) ist ein Maß für die mögliche Überschreitung der Randbedingungen (der Abstand auf der falschen Seite der trennenden Hyperebene für die ich-das Beispiel) und durch deren Eingabe in die Zielfunktion sorgen wir dafür, dass diese Überschreitungen so gering wie möglich gehalten werden. Es besteht auch ein Kompromiss zwischen dem Wunsch nach einem möglichst großen Spielraum um die Trennfläche einerseits und möglichst wenigen Überschreitungen andererseits. Die zu wählende positive Konstante weist in diesem Zusammenhang auf die Bedeutung hin, die wir den Überschreitungen beimessen.
Das Doppelproblem
Wir finden den Normalenvektor wie ein lineare Kombination der Trainingsbeispiele schreiben:
Die Variablen sein Lagrange-Multiplikatoren. Die duale Form ist dann das Maximierungsproblem:
- maximieren
- über
- und mit den Bedingungen:
- und .
Beachten Sie, dass die restlichen Variablen treten hier nicht mehr auf und die Konstante C ist nicht mehr in der Zielfunktion, sondern als Einschränkung für die Variablen. Die Entscheidungsfunktion lautet dann:
Die Trainingsbeispiele, deren Lagrange-Variablen heißt der Stützvektoren. Diese befinden sich entweder am Rand (wenn ) oder am Rand (). Nur diese Stützvektoren tragen zur Entscheidungsfunktion bei.
Nichtlineare Klassifikation
Algorithmen wie SVM zeichnen sich dadurch aus, dass sie auch dann verwendet werden können, wenn die Originaldaten nicht linear trennbar sind. Wir nehmen daher an, dass es a Bild existiert von diesem Eingaberaum in einen anderen, höherdimensionalen interner Produktraum. Dieser Raum heißt auf Englisch de Feature-Raum (Beachten Sie, dass der Eingaberaum nicht einmal ein innerer Produktraum sein muss). Wir können dann SVM im Merkmalsraum anwenden, indem wir überall in den Algorithmus einfügen ersetzt werden durch . Aber der Algorithmus verwendet nur in internen Produkten , die ersetzt werden durch . Eine (nichtlineare) reelle Funktion im Eingaberaum entsprechend dem Skalarprodukt von und im Merkmalsraum heißt a Kernelfunktion oder kurz Kernel.
Wir können nun das Punktprodukt im linearen SVM-Algorithmus durch den Kernel ersetzen. Der große Vorteil davon Kernel-Trick ist, dass wir die Vektoren im Merkmalsraum müssen nicht explizit berechnet werden. Solche Berechnungen können sehr zeitaufwendig sein, während oft leicht zu berechnen. Der Merkmalsraum kann viele Dimensionen haben, in manchen Fällen sogar unendlich viele. Mit Kerneln wird der potenzielle Umfang von SVMs enorm. Zum Beispiel wurden Kernel für Graphen, Strings und andere Objekte formuliert. Die Herausforderung besteht darin, einen geeigneten Kernel zu finden, der die Daten in einem Merkmalsraum linear trennbar macht; der Erfolg einer SVM hängt von der Wahl des Kernels, den Parametern des Kernels und der Konstante ab C für die Überschreitungen der Schnittstelle.
Der lineare Klassifikator ist nur ein Sonderfall, bei dem der Eingaberaum ein innerer Produktraum ist, der mit dem Merkmalsraum zusammenfällt. Aber auch in diesem Fall ist es manchmal sinnvoll, anstelle des inneren Produkts eine Kernel-Funktion zu verwenden.
Beispiel
Die Kernel-Funktion
entspricht dem Bild eines Eingaberaums mit nein Bemaßungen zu einem Merkmalsraum mit nein2 Abmessungen, zum Beispiel mit nein=3:
Das kann man hier leicht nachprüfen
Erweiterung auf mehrere Klassen
Der einfachste Weg, Daten mit einer SVM in mehrere Klassen zu klassifizieren, besteht darin, das Problem in separate binäre Probleme aufzuteilen. Beim "eins-zu-eins"-Ansatz wird für jedes Klassenpaar eine binäre SVM trainiert. Wenn da k Klassen erhalten ein k(k-1)/2 Entscheidungsfunktionen. In der Entscheidungsphase wird jede Entscheidungsfunktion angewendet, was zu einer "Stimme" für eine Klasse führt. Die letzte Wahl fällt auf die Klasse, die die meisten Stimmen gesammelt hat. Beim „Einer-gegen-Alles“-Ansatz k Entscheidungsfunktionen, die zwischen einer Klasse und allen anderen unterscheiden. In der Entscheidungsphase wird nicht nur das Vorzeichen berücksichtigt, sondern auch der Wert jeder Funktion. Die Funktion mit der höchsten Punktzahl bestimmt die Klasse (die Funktionen der Klassifikatoren müssen kalibriert werden, damit die Punktzahlen vergleichbar sind; die Skalierung ändert die Ergebnisse einer SVM nicht).
Anwendungen
SVMs sind in vielen Bereichen nützlich, wie zum Beispiel:
- in der Textklassifikation (zum Beispiel at Spamfilter);
- Erkennen handgeschriebener Zeichen;
- Klassifizieren von Bildern (zum Beispiel entscheiden, ob ein Foto ein Gesicht darstellt oder nicht);
- in der biomedizinischen Forschung, zum Beispiel zur Klassifizierung von Gewebeproben.[2]
Externe Links
- Andreas Ng. "Support Vector Machines" (Skript zur Vorlesung)
- OpenCV, "Einführung zur Unterstützung von Vektormaschinen"
- SVMLicht (Computerprogramm von Thorsten Joachims)
- Support-Vektor-Maschinen (Webseite zum Buch Support-Vektor-Maschinen von John Shawe-Taylor und Nello Cristianini, Cambridge University Press, 2000)
Quellen, Anmerkungen und/oder Verweise
|