SVM in Sklearn

SVM in Sklearn
Support-Vector-Maschinen (SVMs, auch als Support-Vektor-Netzwerke bezeichnet) im maschinellen Lernen werden beaufsichtigte Lernmodelle mit entsprechenden Algorithmen, die Daten für Regression und Klassifizierung bewerten. SVMS, basierend auf statistischen Lernrahmen oder der VC -Theorie, die Chervonenkis und Vapnik herausgestellt haben, gehören zu den zuverlässigsten Vorhersagetechniken (1974). Die Implementierung von SVMs in Sklearn sowie deren Vorteile und Nachteile wird in diesem Artikel behandelt.

Was ist SVM?

SVM oder Support Vector Machine ist eine überwachte Technik für maschinelles Lernen zur Analyse von Daten für Regression und Klassifizierung. Das Ziel des SVM-Algorithmus ist es, die optimale Entscheidungsgrenze oder -Linie zu definieren, die den n-dimensionalen Raum kategorisieren kann, sodass wir in Zukunft neue Datenpunkte klassifizieren können. Diese Entscheidungsgrenze ist als Hyperebene bekannt. Dadurch kann Ihr Modell einen gekennzeichneten Datensatz sortieren und die nicht markierte Eingabe kategorisieren. Es ist eines der beliebtesten überwachten Lernalgorithmen und wird häufig verwendet, um Bilder mithilfe der Funktionen zu klassifizieren, die durch ein tiefes Faltungsnetzwerk wiederhergestellt wurden.

Angenommen, Sie haben einige linear trennbare Punkte in Ihrem Papier, die unterschiedliche Arten haben. Das SVM findet eine gerade Linie, die diese Punkte so weit wie möglich in zwei Kategorien unterteilt. Stellen Sie sich zwei Punkte von Punkten vor, die in einem Flugzeug liegen. Die ersten sind rot, während der Rest blau ist. Um die Entfernung von beiden Punktklassen zu optimieren, sucht eine Stützvektormaschine eine Linie, die die roten Punkte von den blauen unterteilt. Dies ist als die bekannt größte Differenzmarge. Es ist wichtig, den Abstand von der Linie zu den Punkten an den Grenzen der beiden Punkte zu messen, um die Marge mit dem größten Unterschied zu bestimmen. Sie bezeichnen sie als Vektoren unterstützen. Die Punkte müssen durch eine Linie trennbar sein, da sie durch eins getrennt werden müssen. Der Begriff dafür ist lineare Trennbarkeit. Der Kernel -Trick ist eine entscheidende Ergänzung des Unterstützungsvektor -Maschinenalgorithmus, um diese Einschränkung zu überwinden. Dadurch wird die Daten in einen höherdimensionalen Raum verschoben und verwendet eine lineare Funktion, um sie dort zu trennen. Durch einen sogenannten Kernel wird die Transformation durchgeführt. Dies ist nur denkbaren. Einfach ausgedrückt: Um zu verhindern, dass eine Linie verwendet wird, um das Rot aus den blauen Punkten zu unterteilen, mischen Sie sie im Flugzeug.

Heben Sie die roten an und lassen Sie die Blauen zurück. Es ist jetzt offensichtlich, dass Sie die Punkte mit einer Ebene trennen können. Die Kernel -Technik erreicht dies. Es verändert die Daten in einer höheren Dimension, um vermutlich linear trennbar zu sein. Das Heben wurde eine dritte Dimension (drei Abmessungen) hinzugefügt, die die Punkte durch eine Linie in drei Abmessungen trennte, eine Ebene, während die Punkte auf dem Boden (zwei Dimensionen) nicht waren.

Vorteile von SVM

  1. In hochdimensionalen Räumen ist es effektiver, ihren Speicher gut genug zu verwenden.
  2. Geeignet für Klassen mit unterschiedlichen Unterscheidungsmarken. Zusätzlich effektiv, wenn die Stichprobengrößen die Gesamtabmessungen überschreiten.

Nachteile von SVM

  1. Wenn die Gesamtmerkmale jedes Datenpunkts größer sind als die Trainingsdatenmuster, funktioniert es nicht gut. Zusätzlich ist seine Technik für größere Datensätze nicht geeignet.
  2. Ein Datensatz beginnt zu verzögern, wenn sich die Zielklassen überlappen, oder mehr Rauschen vorhanden ist. Darüber hinaus fehlt der vom Support Vector -Klassifikator erzeugten Klassifizierung eine probabilistische Rechtfertigung.

Implementierung von SVM in Sklearn

Bibliotheken importieren
von Sklearn.Datensätze importieren make_classification
von Sklearn import SVM
Datensatz erstellen
X, y = make_classification (random_state = 42)
print ('Zugdaten ist', x)
print ('Testdaten ist', y)

Ausgang

Die Zugdaten sind [-2.02514259 0.0291022 -0.47494531… -0.33450124 0.86575519
-1.20029641]
[1.61371127 0.65992405 -0.15005559… 1.37570681 0.70117274
-0.2975635]
[0.16645221 0.95057302 1.42050425… 1.18901653 -0.55547712
-0.63738713]

[-0.03955515 -1.60499282 0.22213377… -0.30917212 -0.46227529
-0.43449623]
[1.08589557 1.2031659 -0.6095122… -0.3052247 -1.31183623
-1.06511366]
[-0.00607091 1.30857636 -0.17495976… 0.99204235 0.32169781
-0.66809045]]]
Die Testdaten sind [0 0 1 1 0 0 0 1 0 1 1 0 0 0 1 1 1 0 1 1 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0
0 1 1 1 0 1 0 0 1 1 0 0 1 1 1 0 1 0 1 1 0 1 1 1 1 0 1 0 0 1 0 1 0 1 0 0 0 1 1 1 1 1 1 0 1 0 1 0 1 0 1 0
1 1 1 0 0 0 1 0 1 0 1 1 1 1 1 0 1 0 1 1 0 1 1 0 0]
Erstellen von SVM -Modell
Modell = SVM.SVC ()
Modell.fit (x, y)
Print ("Support Vectors sind", Modell.Support_Vectors_)
Print ("Indizes für Support -Vektoren sind", Modell, Modell.Unterstützung_)

Ausgang

Unterstützungsvektoren sind [-2.02514259 0.0291022 -0.47494531… -0.33450124 0.86575519
-1.20029641]
[0.17989415 -0.22210005 0.10537551… -0.96834445 -0.22463315
0.5500521]
[-1.22576566 0.80742726 0.65232288… 0.88365994 -0.03850847
-0.1726273]

[0.2005692 -0.24878048 -1.07213901… 0.08614388 -0.36702784
-0.82759022]
[-0.6115178 -1.22532865 -0.85835778… 0.18483612 2.63238206
0.4933179]
[-0.22096417 -0.54561186 -0.57117899… 0.64084286 -0.28110029
1.79768653]]]
Indizes für Stützvektoren sind [0 4 5 6 8 11 12 13 18 21 22 23 24 27 29 30 31 32 33 34 36 47 52 54
58 67 73 78 79 81 83 89 92 95 2 3 7 9 10 14 25 35 38 39 40 42 45 49
51 57 59 60 61 62 63 68 72 74 75 76 80 85 86 88 91 93 94 96]

Abschluss

Wir haben die Erklärung der Support Vector Machines (SVM) zusammen mit ihren Vorschriften, Nachteilen und Implementierung durchlaufen. SVM zeichnet Hyperebenen zwischen Punkten mit dem größten Rand und kann für Klassifizierungs- und Regressionsfälle verwendet werden. Wir haben gesehen, wie Sklearn uns eine einfache Möglichkeit bietet, SVM zu implementieren und Details zu den Support -Vektoren zu erhalten.