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

Komplexität der Berechnung

Оглавление

Die Klasse LinearSVC verwendet die Bibliothek liblinear, die einen optimierten Algorithmus (https://homl.info/13) für lineare SVMs enthält.1 Sie unterstützt den Kerneltrick nicht, skaliert aber annähernd linear mit der Größe des Trainingsdatensatzes und der Anzahl Merkmale: Seine zeitliche Komplexität ist in etwa O(m × n).

Der Algorithmus benötigt länger, wenn eine sehr hohe Präzision erforderlich ist. Dies lässt sich über den Toleranz-Hyperparameter ε (tol in Scikit-Learn) einstellen. Für die meisten Klassifikationsaufgaben genügt die voreingestellte Toleranz.

Die Klasse SVC dagegen verwendet die Bibliothek libsvm, deren Algorithmus (https://homl.info/14) den Kerneltrick unterstützt.2 Die zeitliche Komplexität liegt meist zwischen O(m2 × n) und O(m3 × n). Leider bedeutet dies, dass der Algorithmus bei großen Trainingsdatensätzen (z.B. Hunderttausenden von Datenpunkten) unsäglich langsam wird. Dieser Algorithmus ist bestens für komplexe, aber kleine und mittelgroße Trainingsdatensätze geeignet. Er skaliert jedoch gut mit der Anzahl Merkmale, insbesondere bei dünn besetzten Merkmalen (wenn also jeder Datenpunkt nur wenige Merkmale ungleich null aufweist). In diesem Fall skaliert der Algorithmus in etwa mit der durchschnittlichen Anzahl von Nicht-null-Merkmalen pro Datenpunkt. Tabelle 5-1 vergleicht die Klassen zur SVM-Klassifikation in Scikit-Learn miteinander.

Tabelle 5-1: Vergleich der Klassen zur SVM-Klassifikation in Scikit-Learn


Praxiseinstieg Machine Learning mit Scikit-Learn, Keras und TensorFlow

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