Ich bin neu im maschinellen Lernen und versuche, mit Scikit-Learn (sklearn) ein Klassifizierungsproblem zu lösen. Sowohl DecisionTree als auch SVM können einen Klassifikator für dieses Problem trainieren.
Ich verwende sklearn.ensemble.RandomForestClassifier
und sklearn.svm.SVC
passe die gleichen Trainingsdaten an (ca. 500.000 Einträge mit 50 Funktionen pro Eintrag). Der RandomForestClassifier bringt in etwa einer Minute einen Klassifikator heraus. Der SVC benötigt mehr als 24 Stunden und läuft weiter.
Warum arbeitet der SVC so ineffizient? Ist der Datensatz für SVC zu groß ? Ist SVC für ein solches Problem ungeeignet ?
Entscheidungsbäume und zufällige Wälder sind eigentlich extrem gute Klassifikatoren. Obwohl SVMs (Support Vector Machines) als komplexer angesehen werden, bedeutet dies nicht, dass sie eine bessere Leistung erbringen.
Die Arbeit "Ein empirischer Vergleich von überwachten Lernalgorithmen" von Rich Caruana verglich 10 verschiedene binäre Klassifikatoren, SVM, Neuronale Netze, KNN, logistische Regression, naive Bayes, zufällige Wälder, Entscheidungsbäume, eingesackte Entscheidungsbäume, verstärkte Entscheidungsbäume und Bootstrapped-Entscheidungen Bäume auf elf verschiedenen Datensätzen und verglichen die Ergebnisse auf 8 verschiedenen Leistungsmetriken.
Sie fanden heraus, dass Boosted-Entscheidungsbäume zuerst mit Random Forests und dann mit Bagged Decision Trees und dann mit SVM eingingen
Die Ergebnisse hängen auch davon ab, für wie viele Klassen Sie tatsächlich klassifizieren.
quelle
"ob ein Problem linear ist oder nicht" Wenn bei einem binären Klassifizierungsproblem der Datensatz durch eine Hyperebene getrennt werden kann, handelt es sich um ein lineares Problem.
Wenn der Datensatz nicht linear trennbar ist, während Sie versuchen, einen linearen Klassifikator zu finden, um eine solche Hyperebene zu finden, die überhaupt nicht existiert, scheint der Algorithmus für immer zu laufen.
Ein Vorschlag: Sie können einen kleinen Teil Ihrer Daten abtasten und diese Algorithmen ausprobieren, um festzustellen, ob sie in einem kleinen Datensatz funktionieren. Erhöhen Sie dann den Datensatz, um zu überprüfen, wann dieses Problem auftritt.
quelle