Support Vector Machine

Support Vector Machines (kurz SVM) sind ein Lernverfahren aus dem Bereich des überwachten Lernen und werden in den allermeisten Fällen zur Klassifikation eingesetzt – sie können jedoch auch bei Regressionen Anwendung finden. Dieser Artikel verdeutlicht die Funktionsweise der SVM am Beispiel einer binären Klassifikation (es gibt zwei Klassen). 

Funktionsweise einer SVM #

SVMs werden gerne eingesetzt, da sie häufig eine gute Trennung der Daten bei vergleichsweise geringem Rechenaufwand erreichen. Im Gegensatz zu Decision Tree, KNN und Co. wird bei einer SVM versucht, eine möglichst gute räumliche Trennung der Daten zu erreichen. Ziel bei jeder Support Vector Machine ist es, eine Hyperebene in einem n-dimensionalen (n = die Anzahl der Features) Raum zu finden, die die Daten möglichst optimal trennt. Die Hyperebene stellt die Grenze zwischen den zwei Klassen dar. Je nachdem, auf welche Seite der Hyperebene ein Punkt fällt, wird er entweder der einen oder der anderen Klasse zugeordnet.

Im 2D-Raum ist die Hyperebene eine Linie, im 3D-Raum eine Ebene (Quelle)

Aber was sind denn jetzt die Support Vectors in der SVM? 
Die Support-Vektoren sind die Datenpunkte, die am nähesten an der Hyperebene liegen und anhand derer die Hyperebene errechnet wird. Beim Training einer SVM wird versucht, die optimale Hyperebene zu finden, die in Summe möglichst weit weg von den Support-Vektoren liegt und die Daten optimal trennt. Je mehr Platz zwischen Support-Vektoren und Hyperebene, desto sicherer ist die Klassifikation neuer Datenpunkte.

Hyperebene und Support-Vektoren (Quelle)

Transformation durch Kernel #

Wichtig ist, dass die Hyperebene nicht “verbogen” werden kann, um nicht linear trennbare Daten zu trennen. Hierfür haben SVMs jedoch einen Trick: mithilfe einer Kernel-Funktion werden die Daten in einen höherdimensionalen Raum “transformiert”, sodass sie durch eine nicht-”verbogene” Hyperebene getrennt werden können. Die Kernel-Funktion kann z. B. eine Polynomfunktion oder eine radiale Basisfunktion sein.

Nicht-linear trennbare Daten werden durch einen Kernel in eine höhere Dimension transformiert, in welcher sie dann linear trennbar sind. (Quelle)

Bei diesen Kernel-Funktionen gibt es dann z. T. auch Hyperparameter, die im Trainingsprozess gefunden werden müssen. Ein Polynom-Kernel folgt bspw. dem üblichen Schema eines Polynoms:

f(x) = anxn + an-1xn-1 + … + a2x2 + a1x + a0

Hierbei müssen der Grad n des Polynoms sowie der höchste Koeffizient a0 als Hyperparameter gelernt werden. Weitere Hyperparameter der SVM sind unter anderem C und Gamma, die das Training beeinflussen und zum Beispiel bestimmen, wie stark falsch eingeordnete Punkte im Training bestraft werden. Mehr dazu kann unter den weiterführenden Links nachgelesen werden.

Weiterführende Links:
Support Vector Machine (sklearn): https://scikit-learn.org/stable/modules/classes.html#module-sklearn.svm 
Support Vector Machine – Kernel functions (sklearn): https://scikit-learn.org/stable/modules/svm.html#svm-kernels 
Support Vector Machines: https://towardsdatascience.com/support-vector-machine-introduction-to-machine-learning-algorithms-934a444fca47 
Multiclass Classification Using Support Vector Machines: https://www.baeldung.com/cs/svm-multiclass-classification 
What is the Kernel trick? https://medium.com/@zxr.nju/what-is-the-kernel-trick-why-is-it-important-98a98db0961d 

Schreibe einen Kommentar