logo

Support Vector Machine (SVM)-Algorithmus

Support Vector Machine (SVM) ist ein leistungsstarker Algorithmus für maschinelles Lernen, der für lineare oder nichtlineare Klassifizierungs-, Regressions- und sogar Ausreißererkennungsaufgaben verwendet wird. SVMs können für eine Vielzahl von Aufgaben verwendet werden, wie z. B. Textklassifizierung, Bildklassifizierung, Spam-Erkennung, Handschrifterkennung, Genexpressionsanalyse, Gesichtserkennung und Anomalieerkennung. SVMs sind in einer Vielzahl von Anwendungen anpassungsfähig und effizient, da sie hochdimensionale Daten und nichtlineare Beziehungen verwalten können.

SVM-Algorithmen sind sehr effektiv, da wir versuchen, die maximale trennende Hyperebene zwischen den verschiedenen im Zielmerkmal verfügbaren Klassen zu finden.

Systemsoftware

Unterstützt Vektormaschine

Support Vector Machine (SVM) ist eine überwachtes maschinelles Lernen Algorithmus, der sowohl für die Klassifizierung als auch für die Regression verwendet wird. Obwohl wir auch von Regressionsproblemen sprechen, eignet es sich am besten für die Klassifizierung. Das Hauptziel des SVM-Algorithmus besteht darin, die optimale Hyperebene in einem N-dimensionalen Raum zu finden, die die Datenpunkte in verschiedene Klassen im Merkmalsraum trennen kann. Die Hyperebene versucht, dass der Abstand zwischen den nächstgelegenen Punkten verschiedener Klassen so groß wie möglich ist. Die Dimension der Hyperebene hängt von der Anzahl der Features ab. Wenn die Anzahl der Eingabemerkmale zwei beträgt, ist die Hyperebene nur eine Linie. Wenn die Anzahl der Eingabemerkmale drei beträgt, wird die Hyperebene zu einer 2D-Ebene. Es wird schwer vorstellbar, wenn die Anzahl der Features drei übersteigt.



Betrachten wir zwei unabhängige Variablen x1, X2,und eine abhängige Variable, die entweder ein blauer oder ein roter Kreis ist.

Linear trennbare Datenpunkte

Aus der obigen Abbildung geht sehr deutlich hervor, dass es mehrere Linien gibt (unsere Hyperebene ist hier eine Linie, da wir nur zwei Eingabemerkmale x berücksichtigen).1, X2), die unsere Datenpunkte trennen oder eine Klassifizierung zwischen roten und blauen Kreisen vornehmen. Wie wählen wir also die beste Linie oder allgemein die beste Hyperebene aus, die unsere Datenpunkte trennt?

Wie funktioniert SVM?

Eine vernünftige Wahl als beste Hyperebene ist diejenige, die den größten Abstand oder Spielraum zwischen den beiden Klassen darstellt.

Mehrere Hyperebenen trennen die Daten aus zwei Klassen

Mehrere Hyperebenen trennen die Daten aus zwei Klassen

Wir wählen also die Hyperebene, deren Abstand von ihr zum nächstgelegenen Datenpunkt auf jeder Seite maximiert ist. Wenn eine solche Hyperebene existiert, wird sie als bezeichnet Hyperebene mit maximalem Rand/harter Rand . Aus der obigen Abbildung wählen wir also L2. Betrachten wir ein Szenario wie unten gezeigt

Auswählen der Hyperebene für Daten mit Ausreißern

Auswählen der Hyperebene für Daten mit Ausreißern

Hier haben wir eine blaue Kugel an der Grenze der roten Kugel. Wie klassifiziert SVM die Daten? Es ist einfach! Die blaue Kugel in der Grenze der roten Kugeln ist ein Ausreißer der blauen Kugeln. Der SVM-Algorithmus verfügt über die Eigenschaften, Ausreißer zu ignorieren und die beste Hyperebene zu finden, die den Spielraum maximiert. SVM ist robust gegenüber Ausreißern.

Hyperplane, die am besten optimiert ist

Hyperplane, die am besten optimiert ist

Bei dieser Art von Datenpunkt ermittelt SVM also wie bei früheren Datensätzen die maximale Marge und fügt jedes Mal, wenn ein Punkt die Marge überschreitet, eine Strafe hinzu. So werden die Margen in solchen Fällen genannt weiche Ränder . Wenn der Datensatz einen weichen Rand aufweist, versucht die SVM, ihn zu minimieren (1/Vorsprung+∧(∑Strafe)) . Scharnierverlust ist eine häufig verwendete Strafe. Wenn keine Verstöße vorliegen, erfolgt kein Scharnierverlust. Bei Verstößen erfolgt der Scharnierverlust proportional zur Entfernung des Verstoßes.

Bisher haben wir über linear trennbare Daten gesprochen (die Gruppe der blauen und roten Kugeln ist durch eine gerade Linie/lineare Linie trennbar). Was tun, wenn Daten nicht linear trennbar sind?

Ursprünglicher 1D-Datensatz zur Klassifizierung

Ursprünglicher 1D-Datensatz zur Klassifizierung

Angenommen, unsere Daten sind in der Abbildung oben dargestellt. SVM löst dieses Problem, indem es mithilfe von a eine neue Variable erstellt Kernel . Wir nennen einen Punkt xichauf der Zeile und wir erstellen eine neue Variable yichals Funktion des Abstands vom Ursprung o. Wenn wir dies also grafisch darstellen, erhalten wir etwa das unten gezeigte Ergebnis

Zuordnung von 1D-Daten zu 2D, um die beiden Klassen trennen zu können

Zuordnung von 1D-Daten zu 2D, um die beiden Klassen trennen zu können

In diesem Fall wird die neue Variable y als Funktion des Abstands vom Ursprung erstellt. Eine nichtlineare Funktion, die eine neue Variable erstellt, wird als Kernel bezeichnet.

Unterstützt die Terminologie der Vektormaschine

    Hyperebene: Hyperebene ist die Entscheidungsgrenze, die zum Trennen der Datenpunkte verschiedener Klassen in einem Merkmalsraum verwendet wird. Bei linearen Klassifizierungen handelt es sich um eine lineare Gleichung, d. h. wx+b = 0. Stützvektoren: Stützvektoren sind die Datenpunkte, die der Hyperebene am nächsten liegen, was eine entscheidende Rolle bei der Entscheidung über die Hyperebene und den Rand spielt. Marge: Marge ist der Abstand zwischen dem Stützvektor und der Hyperebene. Das Hauptziel des Support Vector Machine-Algorithmus besteht darin, den Spielraum zu maximieren. Der größere Spielraum weist auf eine bessere Klassifizierungsleistung hin. Kernel: Kernel ist die mathematische Funktion, die in SVM verwendet wird, um die ursprünglichen Eingabedatenpunkte in hochdimensionale Merkmalsräume abzubilden, sodass die Hyperebene auch dann leicht ermittelt werden kann, wenn die Datenpunkte vorhanden sind sind im ursprünglichen Eingaberaum nicht linear trennbar. Einige der gebräuchlichen Kernelfunktionen sind linear, polynomial, radiale Basisfunktion (RBF) und Sigmoid. Harter Rand: Die Hyperebene mit maximalem Rand oder die Hyperebene mit hartem Rand ist eine Hyperebene, die die Datenpunkte verschiedener Kategorien ohne Fehlklassifizierungen ordnungsgemäß trennt. Soft Margin: Wenn die Daten nicht perfekt trennbar sind oder Ausreißer enthalten, ermöglicht SVM eine Soft Margin-Technik. Jeder Datenpunkt verfügt über eine durch die Soft-Margin-SVM-Formulierung eingeführte Slack-Variable, die die strenge Margin-Anforderung abschwächt und bestimmte Fehlklassifizierungen oder Verstöße zulässt. Es wird ein Kompromiss zwischen der Erhöhung der Marge und der Reduzierung von Verstößen entdeckt. C: Margenmaximierung und Fehlklassifizierungsstrafen werden durch den Regularisierungsparameter C in SVM ausgeglichen. Die Strafe für das Überschreiten der Marge oder die falsche Klassifizierung von Datenelementen wird von ihm festgelegt. Bei einem größeren Wert von C wird eine strengere Strafe verhängt, was zu einer kleineren Marge und möglicherweise weniger Fehlklassifizierungen führt. Scharnierverlust: Eine typische Verlustfunktion in SVMs ist der Scharnierverlust. Es bestraft falsche Klassifizierungen oder Margenverstöße. Die Zielfunktion in SVM wird häufig durch Kombination mit dem Regularisierungsterm gebildet. Duales Problem: Ein duales Problem des Optimierungsproblems, das die Lokalisierung der Lagrange-Multiplikatoren in Bezug auf die Unterstützungsvektoren erfordert, kann zur Lösung von SVM verwendet werden. Die duale Formulierung ermöglicht die Verwendung von Kernel-Tricks und eine effektivere Berechnung.

Mathematische Intuition der Support Vector Machine

Betrachten Sie ein binäres Klassifizierungsproblem mit zwei Klassen, die als +1 und -1 bezeichnet sind. Wir haben einen Trainingsdatensatz, der aus Eingabemerkmalsvektoren X und ihren entsprechenden Klassenbezeichnungen Y besteht.

Die Gleichung für die lineare Hyperebene kann wie folgt geschrieben werden:

w^Tx+ b = 0

Java-String zum Zeichen

Der Vektor W stellt den Normalenvektor zur Hyperebene dar. d.h. die Richtung senkrecht zur Hyperebene. Der Parameter B in der Gleichung stellt den Versatz oder Abstand der Hyperebene vom Ursprung entlang des Normalenvektors dar In .

Der Abstand zwischen einem Datenpunkt x_i und der Entscheidungsgrenze kann wie folgt berechnet werden:

d_i = frac{w^T x_i + b}

wobei ||w|| stellt die euklidische Norm des Gewichtsvektors w dar. Euklidische Normdes Normalenvektors W

Für den linearen SVM-Klassifikator:

Optimierung:

    Für den linearen SVM-Klassifikator mit hartem Rand:

underset{w,b}{	ext{minimize}}frac{1}{2}w^Tw =underset{W,b}{	ext{minimize}}frac{1}{2}left | w 
ight|^{2}  	ext{subject to}; y_i(w^Tx_i + b) geq 1 ;for; i = 1, 2,3, cdots,m

Die Zielvariable oder Bezeichnung für das iThDie Trainingsinstanz wird mit dem Symbol t bezeichnetichin dieser Aussage. Und Tich=-1 für negative Vorkommen (wenn yich= 0) und tich=1positive Instanzen (wenn yich= 1) bzw. Weil wir die Entscheidungsgrenze benötigen, die die Einschränkung erfüllt: underset{w,b}{	ext{minimize }}frac{1}{2}w^Tw+ C sum_{i=1}^m zeta_{i}  	ext{subject to } y_i( w^Tx_i + b)ge 1-zeta_{i};; Und ; zeta_{i} ge 0;; für ; i = 1, 2,3, cdots,m

    Für den linearen SVM-Klassifikator mit weichem Rand:

underset{alpha}{	ext{maximieren}}: frac{1}{2}underset{i	o m;}{sum};underset{j	o m}{sum} alpha_ialpha_j t_i t_j K(x_i, x_j) -underset{i	o m}{sum}alpha_i

    Duales Problem: Ein duales Problem des Optimierungsproblems, das das Auffinden der Lagrange-Multiplikatoren in Bezug auf die Unterstützungsvektoren erfordert, kann zur Lösung von SVM verwendet werden. Die optimalen Lagrange-Multiplikatoren α(i), die die folgende duale Zielfunktion maximieren

w= underset{i	o m}{sum}alpha_i t_i K(x_i, x) + b  t_i(w^Tx_i-b) = 1 Longleftrightarrow b= w^Tx_i-t_i

Wo,

  • Aichist der Lagrange-Multiplikator, der der i-ten Trainingsstichprobe zugeordnet ist.
  • K(xich, XJ) ist die Kernelfunktion, die die Ähnlichkeit zwischen zwei Stichproben x berechnetichund xJ. Es ermöglicht SVM, nichtlineare Klassifizierungsprobleme zu bewältigen, indem es die Stichproben implizit in einen höherdimensionalen Merkmalsraum abbildet.
  • Der Begriff ∑αichstellt die Summe aller Lagrange-Multiplikatoren dar.

Die SVM-Entscheidungsgrenze kann anhand dieser optimalen Lagrange-Multiplikatoren und der Unterstützungsvektoren beschrieben werden, sobald das duale Problem gelöst und die optimalen Lagrange-Multiplikatoren entdeckt wurden. Die Trainingsmuster mit i> 0 sind die Unterstützungsvektoren, während die Entscheidungsgrenze bereitgestellt wird durch:

egin{aligned} 	ext{Linear : } K(w,b) &= w^Tx+b  	ext{Polynom : } K(w,x) &= (gamma w^Tx+b)^ N  	ext{Gaußscher RBF: } K(w,x) &= exp(-gamma|| x_i-x_j||^n  	ext{Sigmoid :} K(x_i, x_j) &=  tanh(alpha x_i^Tx_j + b) end{aligned}

Arten von Support-Vektor-Maschinen

Basierend auf der Art der Entscheidungsgrenze können Support Vector Machines (SVM) in zwei Hauptteile unterteilt werden:

    Lineare SVM: Lineare SVMs verwenden eine lineare Entscheidungsgrenze, um die Datenpunkte verschiedener Klassen zu trennen. Wenn die Daten präzise linear getrennt werden können, sind lineare SVMs sehr gut geeignet. Das bedeutet, dass eine einzelne gerade Linie (in 2D) oder eine Hyperebene (in höheren Dimensionen) die Datenpunkte vollständig in ihre jeweiligen Klassen unterteilen kann. Eine Hyperebene, die den Spielraum zwischen den Klassen maximiert, ist die Entscheidungsgrenze. Nichtlineare SVM: Nichtlineare SVM kann zur Klassifizierung von Daten verwendet werden, wenn diese nicht durch eine gerade Linie in zwei Klassen getrennt werden können (im Fall von 2D). Durch die Verwendung von Kernelfunktionen können nichtlineare SVMs nichtlinear trennbare Daten verarbeiten. Die ursprünglichen Eingabedaten werden durch diese Kernelfunktionen in einen höherdimensionalen Merkmalsraum transformiert, in dem die Datenpunkte linear getrennt werden können. Eine lineare SVM wird verwendet, um eine nichtlineare Entscheidungsgrenze in diesem modifizierten Raum zu lokalisieren.

Beliebte Kernelfunktionen in SVM

Der SVM-Kernel ist eine Funktion, die einen niedrigdimensionalen Eingaberaum in einen höherdimensionalen Raum umwandelt, dh nicht trennbare Probleme in trennbare Probleme umwandelt. Es ist vor allem bei nichtlinearen Trennungsproblemen nützlich. Einfach ausgedrückt führt der Kernel einige äußerst komplexe Datentransformationen durch und ermittelt dann den Prozess zum Trennen der Daten basierend auf den definierten Beschriftungen oder Ausgaben.

Brustkrebsklassifikationen mit SVM RBF Kernel-Geeksforgeeks

Vorteile von SVM

  • Wirksam in hochdimensionalen Fällen.
  • Sein Speicher ist effizient, da er eine Teilmenge von Trainingspunkten in der Entscheidungsfunktion verwendet, die als Unterstützungsvektoren bezeichnet werden.
  • Für die Entscheidungsfunktionen können verschiedene Kernelfunktionen angegeben werden und es ist möglich, benutzerdefinierte Kernel anzugeben.

SVM-Implementierung in Python

Sagen Sie voraus, ob Krebs gutartig oder bösartig ist. Anhand historischer Daten über Patienten, bei denen Krebs diagnostiziert wurde, können Ärzte bösartige Fälle unterscheiden und gutartigen Fällen unabhängige Attribute zuweisen.

obj in Java

Schritte

  • Laden Sie den Brustkrebsdatensatz von sklearn.datasets
  • Trennen Sie Eingabefunktionen und Zielvariablen.
  • Erstellen und trainieren Sie die SVM-Klassifikatoren mithilfe des RBF-Kernels.
  • Zeichnen Sie das Streudiagramm der Eingabemerkmale.
  • Zeichnen Sie die Entscheidungsgrenze ein.
  • Zeichnen Sie die Entscheidungsgrenze ein

Python3

# Load the important packages> from> sklearn.datasets>import> load_breast_cancer> import> matplotlib.pyplot as plt> from> sklearn.inspection>import> DecisionBoundaryDisplay> from> sklearn.svm>import> SVC> # Load the datasets> cancer>=> load_breast_cancer()> X>=> cancer.data[:, :>2>]> y>=> cancer.target> #Build the model> svm>=> SVC(kernel>=>'rbf'>, gamma>=>0.5>, C>=>1.0>)> # Trained the model> svm.fit(X, y)> # Plot Decision Boundary> DecisionBoundaryDisplay.from_estimator(> >svm,> >X,> >response_method>=>'predict'>,> >cmap>=>plt.cm.Spectral,> >alpha>=>0.8>,> >xlabel>=>cancer.feature_names[>0>],> >ylabel>=>cancer.feature_names[>1>],> >)> # Scatter plot> plt.scatter(X[:,>0>], X[:,>1>],> >c>=>y,> >s>=>20>, edgecolors>=>'k'>)> plt.show()>
>
>

Ausgabe :

Brustkrebsklassifikationen mit SVM RBF-Kernel