Einführung
In diesem Tutorial lernen wir über Support Vector Machines (SVM), die eine Gruppe von Methoden für das überwachte Lernen sind, die zur Klassifikation, Regression und Ausreißererkennung verwendet werden. SVMs sind in hochdimensionalen Räumen effektiv und können auch dann gut funktionieren, wenn die Anzahl der Dimensionen größer ist als die Anzahl der Samples.
Die Vorteile von SVMs umfassen ihre Effektivität in hochdimensionalen Räumen, die Speicher-effizienz und die Vielseitigkeit in Bezug auf verschiedene Kernel-Funktionen. Es ist jedoch wichtig, das Überanpassen zu vermeiden und den richtigen Kernel und die richtige Regularisierung für das gegebene Problem auszuwählen.
In diesem Tutorial werden wir die folgenden Themen behandeln:
- Klassifikation mit SVM
- Mehrklassen-Klassifikation
- Scores und Wahrscheinlichkeiten
- Ungleiche Verteilungen
- Regression mit SVM
- Dichte-Schätzung und Neuentdeckungsdetection
VM Tipps
Nachdem der VM-Start abgeschlossen ist, klicken Sie in der linken oberen Ecke, um zur Registerkarte Notebook zu wechseln und Jupyter Notebook für die Übung zu nutzen.
Manchmal müssen Sie einige Sekunden warten, bis Jupyter Notebook vollständig geladen ist. Die Validierung von Vorgängen kann aufgrund der Einschränkungen von Jupyter Notebook nicht automatisiert werden.
Wenn Sie bei der Lernphase Probleme haben, können Sie Labby um Hilfe bitten. Geben Sie nach der Sitzung Feedback, und wir werden das Problem für Sie schnellstmöglich beheben.
Klassifikation mit SVM
- Beginnen Sie mit dem Import der erforderlichen Bibliotheken:
from sklearn import svm
- Definieren Sie die Trainingssamples
Xund die Klassenlabelsy:
X = [[0, 0], [1, 1]]
y = [0, 1]
- Erstellen Sie eine Instanz des
SVC-Klassifizierers und passen Sie die Daten an:
clf = svm.SVC()
clf.fit(X, y)
- Verwenden Sie das trainierte Modell, um neue Werte vorherzusagen:
clf.predict([[2., 2.]])
Mehrklassen-Klassifikation
- Die
SVC- undNuSVC-Klassifizierer können zur Mehrklassen-Klassifikation mit der "one-versus-one"-Methode verwendet werden:
X = [[0], [1], [2], [3]]
Y = [0, 1, 2, 3]
clf = svm.SVC(decision_function_shape='ovo')
clf.fit(X, Y)
dec = clf.decision_function([[1]])
Scores und Wahrscheinlichkeiten
- SVMs liefern keine direkten Wahrscheinlichkeitsschätzungen, aber Sie können die Wahrscheinlichkeitsschätzung aktivieren, indem Sie den Parameter
probabilityaufTruesetzen:
clf = svm.SVC(probability=True)
clf.fit(X, y)
- Anschließend können Sie die Methode
predict_probaverwenden, um die Wahrscheinlichkeiten für jede Klasse zu erhalten:
clf.predict_proba([[2., 2.]])
- Beachten Sie, dass die Wahrscheinlichkeitsschätzung aufwendig ist und eine Kreuzvalidierung erfordert, also verwenden Sie sie mit Bedacht.
Ungleiche Verteilungen
- SVMs können ungleiche Verteilungen durch Anpassen des Parameters
class_weightbehandeln:
clf = svm.SVC(class_weight={1: 10})
clf.fit(X, y)
Regression mit SVM
- Für Regressionsprobleme können SVMs mit der Klasse
SVRverwendet werden:
X = [[0, 0], [1, 1]]
y = [0.5, 2.5]
regr = svm.SVR()
regr.fit(X, y)
regr.predict([[1, 1]])
Dichteschätzung und Neuentdeckungsdetection
- SVMs können auch zur Dichteschätzung und Neuentdeckungsdetection mit der Klasse
OneClassSVMverwendet werden:
clf = svm.OneClassSVM()
clf.fit(X)
clf.predict(X)
Zusammenfassung
In diesem Tutorial haben wir uns mit Support Vector Machines (SVM) und ihren Anwendungen in der Klassifikation, Regression, Dichteschätzung und Neuentdeckungsdetection beschäftigt. Wir haben die Schritte für die Klassifikation, die Mehrklassenklassifikation, die Scores und Wahrscheinlichkeiten, die ungleichen Verteilungen, die Regression und die Dichteschätzung behandelt. SVMs sind leistungsstarke Werkzeuge für maschinelles Lernen und können in verschiedenen Szenarien eingesetzt werden, um genaue Vorhersagen zu erzielen.