Maschinelles Lernen – IV (Support Vector Machines + Kaggle Dataset mit SVMs)

Blog

Maschinelles Lernen – IV (Support Vector Machines + Kaggle Dataset mit SVMs)

Inhalt

In diesem Beitrag gehen wir durch:

(i) Rolle von Support-Vektoren in SVMs

sys.argv [0]

(ii) Kostenfunktion für SVMs

(iii) SVMs als Klassifikator für große Margen

(iv) Nichtlineare Entscheidungsgrenzen durch SVMs mit Hilfe von Kernels

(v) Kaggle-Datensatzerkennung bei betrügerischen Kreditkartentransaktionen mit SVMs

In dem früher Post haben wir uns die Probleme mit hoher Verzerrung und Varianz beim maschinellen Lernen genauer angesehen und diskutiert, wie die Regularisierung zusammen mit einigen anderen Techniken eine große Rolle bei der Lösung dieser Probleme spielt. In diesem Beitrag werfen wir einen detaillierten Blick auf einen anderen überwachten Lernalgorithmus namens Support Vector Machine. Später in diesem Beitrag werden wir einen Kaggle-Datensatz lösen, um betrügerische Kreditkartentransaktionen mithilfe der SVM zu erkennen.

SVM ist eine überwachte maschinelle Lernmethode, die sowohl Regressions- als auch Klassifikationsprobleme löst. Es wird jedoch hauptsächlich bei Klassifikationsproblemen verwendet, wo es Hyperebenen in den n-Merkmalsdimensionen konstruiert. Ein n-dimensionaler Feature-Raum hat eine Hyperebene mit n-1 Dimensionen. Z.B. Im Datensatz mit 2 Merkmalen (2-dimensionaler Merkmalsraum) ist die von der SVM konstruierte Hyperebene eine Kurve (Linie, Kreis usw.). Wenn wir ein Klassifikationsproblem auf 2 Klassen lösen, dann ist die Aufgabe des SVM-Klassifikators um die Hyperebene zu finden, die den Abstand zwischen den 2 Klassen maximiert. Bevor wir uns ansehen, wie SVMs funktionieren, wollen wir verstehen, woher der Name Support Vector Machine stammt.

SVM in Aktion ( Quelle )

Was ist ein Support-Vektor?

Wir wissen, dass ein SVM-Klassifikator Hyperebenen zur Klassifizierung konstruiert. Aber wie konstruiert der SVM-Klassifikator eine Hyperebene? Lassen Sie uns Intuition entwickeln, indem wir nur 2 Klassen betrachten. Wir wissen, dass eine Hyperebene irgendwo in der Mitte der 2 Klassen passieren muss. Eine gute Trennung zwischen diesen Klassen wird durch die Hyperebene erreicht, die den größten Abstand zu den nächsten Trainingsdatenpunkten aus beiden Klassen hat. In der obigen Abbildung bilden die 2 gepunkteten Linien, die die Extreme jeder Klasse markieren, die Unterstützungsvektoren für jede Klasse. Diese Stützvektoren helfen dabei, die Hyperebene zu finden, die den Abstand (Margin) der Hyperebene von jeder der 2 Klassen mit Hilfe ihrer Stützvektoren maximiert.

Funktionieren von SVMs

Support Vector Machines können als Klassifikator sowohl lineare als auch nichtlineare Entscheidungsgrenzen anpassen und einer der Hauptvorteile von SVMs gegenüber der logistischen Regression besteht darin, dass sie die Trainingsparameter aufgrund einer stark vereinfachten Kostenfunktion schnell berechnen.

Kostenfunktion

Erinnern wir uns an die binäre Crossentropie-Kostenfunktion, die für die binäre Klassifizierung in der logistischen Regression verwendet wird. Zur Vereinfachung ignorieren wir hier den Bias-Term, sodass die letzte Vorhersage, die wir für das i-te Trainingsbeispiel aus einer Gesamtzahl von 'm' Trainingsbeispielen durch logistische Regression treffen, als h(x(i )) = sigmoid(W * x(i))

Diese Kostenfunktion kann in 2 Teile geteilt werden: wenn y(i) = 1 wird der Term (1 — y(i))*log(1 — h(x(i))) zu 0 und wenn y(i) = 0 , wird der Term y(i)*log(h(x(i))) zu 0. Die entsprechenden Graphen für diese Gleichungen (Kosten vs. W * x) (ohne den Regularisierungsterm, da er beiden gemeinsam ist) sind:

SVM verwendet eine geringfügige Modifikation dieser Kostenfunktion, die ihr Rechenvorteile gegenüber der logistischen Regression bietet. Für den Fall y = 1 sehen wir, dass die Kostenfunktion alle ihre Werte näher an 0 hat, wenn W * x >= 1 und wenn W * x<1, the -log(h(x)) function values are approximated by a straight line by calculating the derivative of the cost function when W * x = 0. Similarly for the case y = 0, we see that the cost function has all its values closer to 0 when W * x 1, the -log(1 — h(x)) values are approximated by a straight line by calculating the derivative of the cost function when W * x = 0.

Da wir nun keine logarithmische Kostenfunktion mehr verwenden, benennen wir den logarithmischen Teil in der logistischen Regressionskostenfunktion um. Ersetzen wir **-log(h(x)) durch cost1(h(x)) **und -log(1 — h(x)) mit Kosten0(h(x)) . Wir ignorieren hier die Konstante (1/m), da sie unser Minimierungsziel nicht beeinflusst und uns hilft, unsere Berechnungen zu vereinfachen. Die endgültige Kostenfunktion für die Support-Vektor-Maschine sieht also wie folgt aus:

Daraus ergibt sich folgende mathematische Gleichung für die Kostenfunktion:

Im Gegensatz zur logistischen Regression, die Wahrscheinlichkeitswerte ausgibt, geben SVMs 0/1 aus. Wenn h(x) >=1 ist, gibt die SVM 1 aus und wenn h(x) 0 ist die Ausgabe eine Wahrscheinlichkeit > 0,5, die auf 1 gerundet wurde und wenn h(x)<0, the output was a probability < 0.5 which was rounded-off to 0. The range of (-1, 1) is an _extra safety margin factor _which allows SVMs to make more confident predictions than logistic regression.

Lassen Sie uns nun die Kostenfunktion ein wenig umparametrieren. Derzeit hat unsere Kostenfunktion die Form A + λ B, wobei A die Kostenfunktion und B der Regularisierungsterm ist. Lass es uns in C . umwandeln A + B-Form, wobei C eine ähnliche Rolle wie 1/λ spielt.

wo kann man ecomi . kaufen

#maschinenlernen #python #kernel #support-vector-machine #kaggle

medium.com

Maschinelles Lernen – IV (Support Vector Machines + Kaggle Dataset mit SVMs)

Inhalt. Im vorherigen Beitrag haben wir uns die Probleme mit hoher Verzerrung und Varianz beim maschinellen Lernen genauer angesehen und diskutiert, wie die Regularisierung zusammen mit einigen anderen Techniken eine große Rolle bei der Lösung dieser Probleme spielt. In diesem Beitrag werfen wir einen detaillierten Blick auf einen anderen überwachten Lernalgorithmus namens Support Vector Machine.