2017-11-23 4 views
0

Ich bin mit dem folgenden Problem konfrontiert, ich bin ein SVR aus der Scikit-lernen-Bibliothek auf einem Training mit etwa 46500 Obsevations und es läuft mehr als sechs Stunden, bis jetzt laufen.SciKit Learn SVR läuft sehr lang

Ich verwende den linearen Kernel.

Ich habe bereits versucht, den "C" -Wert zwischen 1e-3 und 1000 zu ändern, nichts ändert sich.

Die Poly-Kernel läuft ca. 5 Minuten in, aber ich brauche die Werte für eine Bewertung und können diesen Teil überspringen ...

Hat bekam jemand eine Idee, wie dies zu beschleunigen?

Vielen Dank!

Antwort

1

SVMs sind dafür bekannt, dass sie mit der Anzahl der Proben stark skalieren!

Statt SVR mit einem linear-Kernel verwenden LinearSVR oder für große Daten: SGDClassifier

LinearSVR ist mehr eingeschränkt in Hinblick darauf, was sie berechnen können (kein nichtlineare Kern) und eingeschränkteren Algorithmen haben in der Regel mehr Annahmen und verwenden Sie diese, um Dinge zu beschleunigen (oder Speicher zu sparen).

SVR basiert auf libsvm, während LinearSVR auf liblinear basiert. Beide sind gut getestete hochwertige Implementierungen.

(Es könnte wertvoll sein hinzuzufügen: Verschwenden Sie keine Zeit in allgemeinen Fällen wie diese warten 6 Stunden. Sub-Sample Ihre Daten und versuchen Sie kleinere, weniger kleine, ... Beispiele und daraus abzuleiten Laufzeit oder Probleme. edit: es scheint, du hast das schon gemacht, gut!).

+0

Es funktioniert! Ein kleinerer Datensatz mit SVR> 30 Minuten wurde in 1 Minute ausgeführt. – tschaefermedia

+0

Danke für den Hinweis! – tschaefermedia

+0

Gern geschehen. – sascha