Support Vector Machines sind ein Optimierungsproblem. Sie versuchen, eine Hyperebene zu finden, die die beiden Klassen mit dem größten Spielraum trennt. Die Unterstützungsvektoren sind die Punkte, die innerhalb dieses Randes liegen. Es ist am einfachsten zu verstehen, wenn Sie es von einfach zu komplex aufbauen.
Hard Margin Linear SVM
In einem Trainingssatz, in dem die Daten linear trennbar sind und Sie einen harten Rand verwenden (kein Durchhang zulässig), sind die Unterstützungsvektoren die Punkte, die entlang der unterstützenden Hyperebenen liegen (die Hyperebenen parallel zur teilenden Hyperebene an den Rändern des Randes )
Alle Unterstützungsvektoren liegen genau am Rand. Unabhängig von der Anzahl der Dimensionen oder der Größe des Datensatzes kann die Anzahl der Unterstützungsvektoren nur 2 betragen.
Soft-Margin Linear SVM
Was aber, wenn unser Datensatz nicht linear trennbar ist? Wir führen SVM mit weichem Rand ein. Wir verlangen nicht mehr, dass unsere Datenpunkte außerhalb des Randes liegen, wir lassen einige von ihnen über die Linie in den Rand streuen. Wir verwenden den Slack-Parameter C, um dies zu steuern. (nu in nu-SVM) Dies gibt uns einen größeren Spielraum und einen größeren Fehler im Trainingsdatensatz, verbessert jedoch die Verallgemeinerung und / oder ermöglicht es uns, eine lineare Trennung von Daten zu finden, die nicht linear trennbar ist.
Die Anzahl der Unterstützungsvektoren hängt nun davon ab, wie viel Spiel wir zulassen und wie die Daten verteilt werden. Wenn wir eine große Menge an Spiel zulassen, haben wir eine große Anzahl von Unterstützungsvektoren. Wenn wir nur sehr wenig Spiel zulassen, haben wir nur sehr wenige Unterstützungsvektoren. Die Genauigkeit hängt davon ab, ob der richtige Durchhang für die zu analysierenden Daten gefunden wird. Bei einigen Daten ist es nicht möglich, ein hohes Maß an Genauigkeit zu erzielen. Wir müssen einfach die bestmögliche Anpassung finden.
Nichtlineare SVM
Dies bringt uns zu nichtlinearer SVM. Wir versuchen immer noch, die Daten linear zu teilen, aber wir versuchen jetzt, dies in einem höherdimensionalen Raum zu tun. Dies geschieht über eine Kernelfunktion, die natürlich einen eigenen Parametersatz hat. Wenn wir dies zurück in den ursprünglichen Feature-Space übersetzen, ist das Ergebnis nicht linear:
Die Anzahl der Unterstützungsvektoren hängt immer noch davon ab, wie viel Spiel wir zulassen, aber auch von der Komplexität unseres Modells. Für jede Drehung und Drehung im endgültigen Modell in unserem Eingaberaum müssen ein oder mehrere Unterstützungsvektoren definiert werden. Letztendlich ist die Ausgabe einer SVM die Unterstützungsvektoren und ein Alpha, was im Wesentlichen definiert, wie viel Einfluss dieser spezifische Unterstützungsvektor auf die endgültige Entscheidung hat.
Hier hängt die Genauigkeit vom Kompromiss zwischen einem hochkomplexen Modell, das möglicherweise zu den Daten passt, und einem großen Spielraum ab, der einige der Trainingsdaten im Interesse einer besseren Verallgemeinerung falsch klassifiziert. Die Anzahl der Unterstützungsvektoren kann von sehr wenigen bis zu jedem einzelnen Datenpunkt reichen, wenn Sie Ihre Daten vollständig überanpassen. Dieser Kompromiss wird über C und durch die Auswahl von Kernel- und Kernel-Parametern gesteuert.
Ich nehme an, als Sie Leistung sagten, bezogen Sie sich auf Genauigkeit, aber ich dachte, ich würde auch in Bezug auf die Komplexität der Berechnungen mit Leistung sprechen. Um einen Datenpunkt mit einem SVM-Modell zu testen, müssen Sie das Punktprodukt jedes Unterstützungsvektors mit dem Testpunkt berechnen. Daher ist die rechnerische Komplexität des Modells in der Anzahl der Unterstützungsvektoren linear. Weniger Unterstützungsvektoren bedeuten eine schnellere Klassifizierung der Testpunkte.
Eine gute Ressource:
Ein Tutorial zur Unterstützung von Vektormaschinen für die Mustererkennung