Definition: Support Vector Machine

Seien die betrachteten Klassen.
Sei ein Datenpunkt.
Sei eine -dimensionale Hyperebene mit Normalenvektor und Verschiebung .

Als Support Vector Machine (auch SVM oder Hard-Margin-SVM) definieren wir den Klassifikator

Definition: Primales Optimierungsproblem der SVM

Sei ein Datensatz mit und .

Das primale Optimierungsproblem der SVM erhalten wir durch:

oder etwas kompakter:

Anmerkung

Interpretation des primalen Optimierungsproblems

Ruft man sich die Gleichung einer Hyperebene in den Kopf, nämlich

so fällt mit etwas Überlegen auf, dass die Nebenbedingungen des primalen Optimierungsproblem der SVM gleich zwei solcher Hyperebenen definieren.

Die Vektoren und werden hierbei auch als (namensgebende) Support Vektoren bezeichnet.

Die folgende Illustration zeigt die primäre und die beiden sekundären (gestrichelt) Ebenen einer SVM sowie die zugehörigen Support Vektoren (roter Rand)

Der Abstand der beiden Ebenen zu der primären Ebene beträgt genau .

Hard-Margin SVM mit scikit-learn?

Achtung: In sklearn gibt es keine Hard-Margin SVM!

Wir können aber recht nah herankommen, indem wir groß wählen:

X = ((2, 7), (7.500, 0.500), (3, 3.300), (2.500, 7.500), (4, 3.800), (5, 2))
y=(-1, -1, -1, 1, 1, 1)
 
from sklearn.svm import SVC
svm = SVC(kernel="linear", C=1e10).fit(X, y)
 
svm.predict([(5,10)])

Den Normalvektor und den Bias erhalten wir durch

  • : model.coef_
  • : -model.intercept_[0]

Die Support Vektoren erhalten wir durch svm.support_vectors_.