Also ich bin ein SVM-Klassifikator (mit einem linearen Kernel und Wahrscheinlichkeit false) von sklearn auf einem Datenrahmen mit etwa 120 Funktionen und 10.000 Beobachtungen ausgeführt. Das Programm benötigt Stunden, um ausgeführt zu werden, und stürzt aufgrund der Überschreitung der Rechengrenzen immer wieder ab. Ich frage mich nur, ob dieser Datenrahmen vielleicht zu groß ist?Zu viele Daten für SVM?
Antwort
Sie könnten versuchen, die Parameter für den Algorithmus zu ändern.
Tips on practical use from the documentation.
Sie könnten einen anderen Algorithmus versuchen, hier ist ein Spickzettel Sie hilfreich finden könnten:
Er verwendet einen linearen Kernel, also gibt es keinen Kernel-Cache (in Verwendung)! – sascha
Danke - habe meinen Beitrag aktualisiert – bobo
Und der Spickzettel empfiehlt genau, was er macht (Klassifizierung <100k Proben -> linear SVC). Mit diesen Informationen kann also nichts gewonnen werden. – sascha
Kurz keine, das überhaupt nicht zu groß ist. Lineares SVM kann viel weiter skalieren. Die Bibliothek libSVC dagegen kann nicht. Die gute Sache, sogar in scikit-lernen Sie haben große svm Implementierung - LinearSVC, die auf liblinear basiert. Sie können es auch mit SGD (auch in scikitlearn verfügbar) lösen, das auch für viel größere Datensätze konvergiert.
Die Implementierung basiert auf libsvm. Die Anpassungszeitkomplexität ist mehr als quadratisch mit der Anzahl der Proben, die es schwierig macht, auf Datensatz mit mehr als ein paar 10000 Proben zu skalieren.
Die offiziellen Daten über sklearn svm sagten die theshold 10.000 Proben so SGD ein besserer Versuch sein könnten.
Das sollte für einen linearen Kernel in Ordnung sein (zumindest mit LinearSVC; nicht sicher über SVC mit Kernel = linear). Zeig uns den Code! – sascha