Читать книгу Praxiseinstieg Machine Learning mit Scikit-Learn, Keras und TensorFlow - Aurélien Géron - Страница 162

Der gaußsche RBF-Kernel

Оглавление

Wie die polynomiellen Merkmale können auch die ähnlichkeitsbasierten Merkmale bei jedem Machine-Learning-Algorithmus nützlich sein, es kann aber sehr rechenintensiv sein, alle zusätzlichen Merkmale zu berechnen, besonders wenn der Trainingsdatensatz sehr umfangreich ist. Auch hier kommt uns der magische Kerneltrick der SVMs zu Hilfe: Er ermöglicht es, ein zu vielen ähnlichkeitsbasierten Merkmalen äquivalentes Ergebnis zu erhalten. Probieren wir den gaußschen RBF-Kernel mit der Klasse SVC aus:

rbf_kernel_svm_clf = Pipeline([

("scaler", StandardScaler()),

("svm_clf", SVC(kernel="rbf", gamma=5, C=0.001))

])

rbf_kernel_svm_clf.fit(X, y)

Dieses Modell ist links unten in Abbildung 5-9 dargestellt. Die übrigen Diagramme zeigen mit anderen Einstellungen der Hyperparameter gamma (γ) und C berechnete Modelle. Durch das Erhöhen von gamma werden die glockenförmigen Kurven schmaler (rechte Diagramme in Abbildung 5-9). Dadurch wird der Einfluss jedes Datenpunkts geringer: Die Entscheidungsgrenze wird unregelmäßiger und schlängelt sich um einzelne Datenpunkte herum. Ein kleiner Wert für gamma dagegen verbreitert die Glockenkurve, sodass die Datenpunkte einen großen Einflussbereich haben und die Entscheidungsgrenze weicher wird. Damit verhält sich γ wie ein Regularisierungsparameter: Wenn Ihr Modell zum Overfitting neigt, sollten Sie diesen Wert verringern, wenn es zum Underfitting neigt, sollten Sie ihn erhöhen (ähnlich zum Hyperparameter C).

Abbildung 5-9: SVM-Klassifikatoren mit RBF-Kernels

Es gibt noch weitere Kernels, aber diese kommen sehr viel seltener zum Einsatz. Beispielsweise sind manche dieser Kernels auf bestimmte Datenstrukturen spezialisiert. String Kernels finden sich bisweilen bei der Klassifikation von Textdokumenten oder DNA-Sequenzen (z.B. der String-Subsequence-Kernel oder Kernels, die auf der Levenshtein-Distanz aufbauen).

Wie sollen Sie sich bei so vielen möglichen Kernels für einen entscheiden? Als Faustregel gilt: Sie sollten immer zuerst den linearen Kernel ausprobieren (LinearSVC, dieser ist viel schneller als SVC(kernel="linear")), besonders bei sehr umfangreichen Trainingsdaten oder sehr vielen Merkmalen. Wenn der Trainingsdatensatz nicht zu groß ist, sollten Sie es auch mit dem gaußschen RBF-Kernel versuchen; er funktioniert in den meisten Fällen. Wenn Sie dann noch Zeit und Rechenkapazität übrig haben, können Sie mit einigen anderen Kernels, Kreuzvalidierung und Gittersuche experimentieren, insbesondere wenn es für Ihre Datenstruktur spezialisierte Kernels gibt.
Praxiseinstieg Machine Learning mit Scikit-Learn, Keras und TensorFlow

Подняться наверх