6.2 Die optimale Trennebene
In 6.1 haben wir gesehen: In hohen Dimensionen gibt es viele trennende Ebenen, und die Wahl der „richtigen“ entscheidet über die Generalisierung. Der Supportvektoralgorithmus (support vector algorithm) wählt die Trennebene, die die Trennbreite für die gegebenen Trainingsdaten maximiert.
📄 08_svm.pdf, Folie 12Die Abbildung zeigt das Problem: Zwei Punktwolken in der Ebene lassen sich durch unendlich viele Geraden trennen („…which one?“). Intuitiv wirkt die Gerade „in der Mitte der Lücke“ am vernünftigsten. Die SVM macht diese Intuition präzise.
Wiederholung: Trennebenen
📄 08_svm.pdf, Folie 13Eine Hyperebene (hyperplane) im ist gegeben durch einen Normalenvektor und einen Achsenabschnitt (Bias) :
- steht senkrecht auf der Ebene und zeigt in den Halbraum mit (positive Klasse).
- Auf der anderen Seite ist (negative Klasse).
- Der lineare Klassifikator ist .
Skalierungsinvarianz
Für jedes beschreiben
dieselbe Ebene, denn man kann die Gleichung einfach durch teilen. Das Paar ist also nur bis auf einen Faktor festgelegt. (Für vertauschen sich zusätzlich die Seiten, deshalb nimmt man in der Praxis .)
Kanonische Form
Um die Mehrdeutigkeit zu beseitigen, legt man den Skalierungsfaktor bezüglich der Trainingsmenge fest:
Wähle so, dass für die Trainingspunkte gilt:
In Worten: Der nächstgelegene Trainingspunkt hat den Funktionswert . Alle anderen Punkte haben betragsmäßig größere Werte. Das ist keine Einschränkung der möglichen Ebenen, sondern nur eine Konvention, welcher Vertreter gewählt wird.
Geometrischer Abstand und Trennbreite
📄 08_svm.pdf, Folie 14Vorzeichenbehafteter Abstand
Der vorzeichenbehaftete Abstand eines Punkts zur Hyperebene (geometric margin) ist
Warum gilt diese Formel? Herleitung (Ergänzung, auf der Folie nur angegeben): Sei der Fußpunkt des Lots von auf die Ebene. Dann ist , denn man geht vom Fußpunkt entlang der Einheitsnormalen um den Abstand . Einsetzen:
Auflösen nach ergibt die Formel. Das Vorzeichen sagt, auf welcher Seite der Punkt liegt. Wichtig: ändert sich nicht, wenn man mit skaliert, Zähler und Nenner wachsen beide um . Der geometrische Abstand ist eine echte Eigenschaft der Ebene, nicht der Parametrisierung.
Ergänzung: Multipliziert man mit dem Label, so ist genau dann, wenn korrekt klassifiziert ist. ist dann der (positive) Abstand zur Ebene.
Die Trennbreite (margin)
Die Trennbreite einer Hyperebene bezüglich einer Trainingsmenge ist
also der Abstand des zur Trennebene am nächsten liegenden Datenpunkts.
Trennbreite in kanonischer Form
Ist die Ebene kanonisch, so ist der Zähler für die nächstgelegenen Punkte genau 1. Für diese Punkte gilt also:
Die nächstliegenden Datenpunkte heißen Supportvektoren (engl. to support: halten, unterstützen), da nur sie allein die Lage der optimalen Trennebene bestimmen.
Herleitung: Die Breite des freien Streifens ist
📄 08_svm.pdf, Folie 15Bei der optimalen Trennebene liegen auf beiden Seiten Supportvektoren. Wäre das nicht so, z.B. nur auf der positiven Seite, könnte man die Ebene ein Stück von diesen Punkten weg schieben und den Mindestabstand vergrößern, sie wäre also nicht optimal.
- Die positiven Supportvektoren liegen auf der Ebene , im Abstand von der Trennebene.
- Die negativen Supportvektoren liegen auf der Ebene , im Abstand auf der anderen Seite.
- Dazwischen liegt kein einziger Datenpunkt, denn in kanonischer Form gilt für alle Punkte .
Also gibt es um die Trennebene einen Freiraum der Breite
Ergänzung, alternative Herleitung: Seien und Punkte auf den beiden Randebenen. Subtrahiert man und , erhält man . Projiziert man auf die Einheitsnormale , ergibt sich die Streifenbreite .
Die Folien nennen (Abstand der nächsten Punkte zur Ebene) die Trennbreite und die Breite des Freiraums. In der Literatur wird manchmal auch „Margin“ genannt. Für die Optimierung ist das egal, der Faktor 2 ändert das Optimum nicht. In der Prüfung sauber sagen, welche Größe gemeint ist.
Vom geometrischen Ziel zum Optimierungsproblem
Um die optimale Trennebene zu finden, muss möglichst groß werden, also
möglichst klein. Zwei Vereinfachungen:
- Die Wurzel weglassen: Da monoton steigend ist, hat dieselbe Minimalstelle wie . ist mathematisch einfacher: eine glatte quadratische Funktion, überall differenzierbar (die Wurzel ist bei nicht differenzierbar).
- Die Trennung als Nebenbedingung: Gleichzeitig muss sichergestellt sein, dass die Trainingsmenge korrekt getrennt wird, und zwar in kanonischer Form, also mit . Das wird als Nebenbedingung (constraint) der Minimierung formuliert.
Warum braucht man die Nebenbedingung überhaupt? Ohne sie wäre trivialerweise optimal. Erst die Forderung verhindert, dass beliebig klein wird: Sie fixiert die Skalierung (kanonische Form) und erzwingt korrekte Klassifikation.
Der Supportvektoralgorithmus als Optimierungsproblem
📄 08_svm.pdf, Folie 16Für einen gegebenen Trainingsdatensatz :
- minimiere
- unter Nebenbedingungen, :
oder kürzer
Der Trick mit dem Label: Für ist die Kurzform direkt die erste Zeile. Für multipliziert man mit , dabei dreht sich das Ungleichheitszeichen um: , also wieder .
Es handelt sich um ein quadratisches Optimierungsproblem (quadratic program, QP) mit linearen Ungleichheitsbedingungen: Die Zielfunktion ist quadratisch in , die Nebenbedingungen sind linear in .
Bemerkungen:
- Optimiert wird über und , obwohl in der Zielfunktion nicht vorkommt. taucht nur in den Nebenbedingungen auf.
- Ergänzung: In Lehrbüchern steht oft . Der Faktor ändert das Optimum nicht, er macht nur die Ableitung schöner (). In der Soft Margin Version (6.5) verwenden auch die Folien .
- Die Nebenbedingung ist nur erfüllbar, wenn die Daten linear trennbar sind. Sonst ist der zulässige Bereich leer, siehe 6.5.
Zahlenbeispiele
Ergänzung, nicht auf den Folien.
Beispiel 1: Zwei Punkte
Gegeben: mit und mit .
Intuition: Die optimale Trennebene ist die Mittelsenkrechte der Verbindungsstrecke. zeigt also in Richtung , d.h. mit . Beide Punkte sind Supportvektoren, die Nebenbedingungen gelten mit Gleichheit:
Ergebnis: , , Trennebene , also .
Margin: , also
Probe: Der Abstand der beiden Punkte ist . Bei zwei Punkten ist der freie Streifen genau die Verbindungsstrecke. ✔
Beispiel 2: Ein dritter Punkt, der keine Rolle spielt
Füge mit hinzu. Mit der Lösung aus Beispiel 1:
Die Nebenbedingung ist erfüllt, und zwar strikt (inaktiv, siehe 6.3). Der Punkt liegt außerhalb des Margins, ist kein Supportvektor, und die Lösung ändert sich nicht. Genau das meinen die Folien mit „nur die Supportvektoren bestimmen die Trennebene“.
Beispiel 3: Drei Supportvektoren
Jetzt , ; , ; , .
Versuch 1: Lösung aus Beispiel 1 übernehmen. Dann ist , Nebenbedingung verletzt. Der neue Punkt liegt im Margin.
Versuch 2: Nur als Supportvektoren, : , , . Dann ist , wieder verletzt.
Versuch 3: Alle drei Punkte sind Supportvektoren, alle drei Gleichungen gelten mit Gleichheit:
Margin: , also und
Der Margin ist kleiner als in Beispiel 1 (). Das muss so sein: Eine zusätzliche Nebenbedingung kann den zulässigen Bereich nur verkleinern, das Optimum also nur verschlechtern oder gleich lassen. Dass Versuch 3 tatsächlich das Optimum ist (und nicht nur zulässig), lässt sich mit den KKT-Bedingungen nachprüfen, siehe 6.4.
Kurz in scikit-learn
Ergänzung: Eine Hard Margin SVM erhält man in scikit-learn näherungsweise mit einem sehr großen (siehe 6.5):
import numpy as np
from sklearn.svm import SVC
X = np.array([[0, 0], [2, 2], [3, 0]])
y = np.array([-1, 1, 1])
clf = SVC(kernel="linear", C=1e6).fit(X, y)
print(clf.coef_, clf.intercept_) # ≈ [[0.667 0.333]] [-1.]
print(clf.support_) # Indizes der Supportvektoren: [0 1 2]
Typische Fallstricke
- Funktionswert ist nicht Abstand. hängt von der Skalierung von ab, erst nach Division durch erhält man den geometrischen Abstand. Deshalb braucht man die kanonische Form, um „Abstand maximieren“ als „ minimieren“ schreiben zu können.
- Supportvektoren sind keine Vektoren im Sinne von Richtungen, sondern einfach ausgewählte Trainingspunkte.
- „Es gibt genau zwei Supportvektoren.“ Falsch. Es gibt mindestens einen pro Klasse, aber es können beliebig viele sein (Beispiel 3: drei). Im sind es typischerweise höchstens , wenn die Punkte in allgemeiner Lage sind.
- nicht vergessen. ist eine Optimierungsvariable, auch wenn es in der Zielfunktion fehlt.