6.5 Soft Margin SVM
Die bisherige SVM hat eine harte Voraussetzung: Die Daten müssen linear trennbar sein. Echte Daten sind verrauscht, haben Ausreißer und überlappende Klassen. Die Soft Margin SVM lockert die Nebenbedingungen, indem sie Verletzungen erlaubt, aber bestraft.
Wiederholung: Ergebnis der Hard Margin SVM
📄 09_svm_nicht_trennbar.pdf, Folie 4 📄 09_svm_nicht_trennbar.pdf, Folie 5Zusammenfassung von 6.2 und 6.3:
- Die SVM ist ein konvexes Optimierungsproblem, jedes lokale Minimum ist eine Lösung.
- Falls das Problem linear trennbar ist, ist die Existenz einer Lösung garantiert.
- Durch das Kriterium der maximalen Trennbreite ist die SVM auch auf hochdimensionale Probleme anwendbar.
- Zur Lösung des quadratischen Programms gibt es leistungsfähige allgemeine Pakete (z.B.
quadprogin Matlab). Meist ist es aber besser, spezialisierte SVM-Pakete zu verwenden (die Folie nennt „svmlib“, gemeint ist vermutlich libsvm). - Die Lage der Trennebene wird nur durch die Supportvektoren bestimmt, alle anderen Punkte spielen keine Rolle.
„Aber: wir sind noch nicht am Ziel…“
Nicht linear trennbare Daten
📄 09_svm_nicht_trennbar.pdf, Folie 6Problem 1: Der zulässige Bereich ist leer. Wendet man die Hard Margin SVM auf nicht linear trennbare Daten an, gibt es kein , das alle Nebenbedingungen erfüllt. Der zulässige Bereich ist die leere Menge, es kann keine Lösung gefunden werden. Ein einziger falsch beschrifteter Punkt reicht dafür.
Problem 2: Auch bei trennbaren Daten kann Härte schaden. Selbst wenn die Daten trennbar sind, kann es besser sein, einige Ausnahmen zuzulassen. Die Abbildung auf der Folie zeigt zwei Wolken, bei denen ein einzelner Ausreißer (ein schwarzer Punkt mitten zwischen den roten) die trennende Gerade stark verkippt. Ohne diesen Punkt gäbe es eine viel breitere Lücke. Das ist dieselbe Überlegung wie auf 📄 08_svm.pdf, Folie 7: Ein Klassifikator, der jeden Trainingspunkt korrekt trennt, ist nicht unbedingt der beste.
Man erlaubt den Datenpunkten, zur Not auch innerhalb des Margins oder sogar auf der falschen Seite der Trennebene zu liegen, solange der Abstand zur Trennebene nicht zu groß ist.
Schlupfvariablen
📄 09_svm_nicht_trennbar.pdf, Folie 7Jede Nebenbedingung erhält eine Schlupfvariable (slack variable) , die angibt, wie stark die Nebenbedingung verletzt wird:
Kurz: , .
Geometrische Bedeutung: misst die Verletzung in Einheiten von . Der tatsächliche Abstand, um den ein Punkt „zu weit drin“ liegt, ist (in der Abbildung die grün gestrichelten Linien vom Punkt zum Rand seines Margins).
Ergänzung, nicht auf den Folien: Je nach Wert von unterscheidet man drei Fälle.
| Lage des Punkts | ||
|---|---|---|
| korrekt, außerhalb oder auf dem Margin | ||
| zwischen 0 und 1 | im Margin, aber noch auf der richtigen Seite | |
| genau auf der Trennebene | ||
| auf der falschen Seite, fehlklassifiziert |
Folgerung: Jeder fehlklassifizierte Trainingspunkt hat . Daher ist eine obere Schranke für die Anzahl der Trainingsfehler.
📄 09_svm_nicht_trennbar.pdf, Folie 8Tradeoff: Mit Schlupfvariablen kann man den Margin beliebig breit machen, man muss nur genügend Punkte „hineinlassen“. Die zweite Abbildung zeigt genau das: ein breiter Streifen mit vielen Verletzungen. Je größer die Trennbreite, desto mehr Fehler. Das erfordert einen sinnvollen Kompromiss.
Zielfunktion bei nicht linear trennbaren Daten
📄 09_svm_nicht_trennbar.pdf, Folie 9Die Gesamtgröße der Schlupfvariablen charakterisiert man, ähnlich wie beim Perzeptron, durch einfaches Aufaddieren:
Da alle sind, können sie sich nicht gegenseitig aufheben. (Ohne die Nebenbedingung könnte man negative bei „sehr guten“ Punkten benutzen, um Verletzungen anderswo zu kompensieren.)
Ziel: möglichst klein und gleichzeitig die Trennbreite möglichst groß. Beides kombiniert man in einer Zielfunktion, die immer noch quadratisch und konvex ist:
Der Regularisierungsparameter (regularization parameter) kontrolliert den relativen Einfluss beider Größen:
- Großes : Verletzungen sind teuer. Die SVM versucht, möglichst alle Punkte korrekt mit Margin zu trennen, nimmt dafür einen schmalen Margin in Kauf. Gefahr: Overfitting, starke Reaktion auf Ausreißer. Für erhält man die Hard Margin SVM.
- Kleines : Verletzungen sind billig. Breiter Margin, viele Punkte im Margin, glattere Entscheidung. Gefahr: Underfitting.
Laut Folie ist bei stark verrauschten und schlecht trennbaren Klassifikationsproblemen ein kleineres tendenziell besser.
Warum ist das konvex? ist konvex, ist linear in (also konvex), Summe konvexer Funktionen ist konvex (6.3). Die Nebenbedingungen sind linear in .
Ergänzung: Der Name „Regularisierungsparameter“ passt eigentlich besser zu : Der Term ist ein Regularisierer wie bei der Ridge-Regression, und gewichtet den Datenterm dagegen. Großes heißt also wenig Regularisierung. In der Praxis wählt man per Kreuzvalidierung (Kapitel 5), typischerweise auf einem logarithmischen Gitter wie .
Die Soft Margin SVM
📄 09_svm_nicht_trennbar.pdf, Folie 10- minimiere
- unter den Nebenbedingungen, :
Bemerkungen:
- „1-Norm“, weil die Schlupfvariablen linear, also über ihre 1-Norm , eingehen. Ergänzung: Es gibt auch die 2-Norm-Variante mit .
- Es gibt jetzt Optimierungsvariablen (, , ) und Nebenbedingungen.
- Der zulässige Bereich ist nie leer: Für jedes kann man einfach groß genug wählen. Damit ist das Problem für beliebige Daten lösbar.
Zahlenbeispiel
Ergänzung, nicht auf den Folien.
Wir nehmen die Trennebene aus 6.2, Beispiel 1: , , also . Für eine feste Ebene ist die kleinste zulässige Schlupfvariable (warum, siehe 6.6).
| Punkt | Lage | ||||
|---|---|---|---|---|---|
| auf dem Margin (Supportvektor) | |||||
| weit außerhalb | |||||
| im Margin, richtige Seite | |||||
| genau auf der Trennebene | |||||
| falsche Seite, fehlklassifiziert |
Mit und ergibt sich für der Zielfunktionswert . Ob eine andere Ebene besser ist, hängt von ab: Bei großem lohnt es, zu vergrößern (schmalerer Margin), um die zu verkleinern.
Supportvektoren bei Soft Margin
Ergänzung, nicht auf den Folien (siehe aber 📄 09_svm_nicht_trennbar.pdf, Folie 13, Fälle 2 und 3).
Bei der Soft Margin SVM sind alle Punkte mit Supportvektoren: die auf dem Margin und alle, die den Margin verletzen. Im dualen Problem (vgl. 6.4) ändert sich nur eine Nebenbedingung: Aus wird die Box-Bedingung . Die KKT-Bedingungen ergeben dann:
| Bedeutung | |
|---|---|
| : kein Supportvektor | |
| , : Supportvektor genau auf dem Margin | |
| , : Supportvektor im Margin oder fehlklassifiziert |
Der Einfluss jedes einzelnen Punkts auf ist also auf begrenzt. Das erklärt, warum kleines robust gegen Ausreißer macht: Ein Ausreißer kann die Ebene nicht beliebig stark verziehen.
Kurz in scikit-learn
Ergänzung: Der Effekt von lässt sich direkt ausprobieren. Kleines führt typischerweise zu mehr Supportvektoren (breiter Margin, viele Punkte darin):
from sklearn.svm import SVC
for C in [0.01, 1, 100]:
clf = SVC(kernel="linear", C=C).fit(X_train, y_train)
print(C, len(clf.support_), clf.score(X_test, y_test))
Typische Fallstricke
- ist kein Margin-Parameter, sondern ein Strafgewicht. Großes bedeutet kleinen Margin, nicht großen.
- „Soft Margin heißt, die Daten werden nichtlinear getrennt.“ Nein. Die Trennebene bleibt linear, sie darf nur Fehler machen. Nichtlinearität kommt erst mit Kernen (Kapitel 7).
- heißt nicht fehlklassifiziert. Für liegt der Punkt noch auf der richtigen Seite (bzw. auf der Ebene).
- Skalierung der Merkmale: Da gegen abwägt und Abstände eingehen, hängt das Ergebnis von der Skalierung der Merkmale ab. Ergänzung: In der Praxis vorher standardisieren.