2012-09-19 6 views
13

Ich benutze libsvm im C-SVC-Modus mit einem Polynomkern von Grad 2 und ich bin verpflichtet, mehrere SVMs zu trainieren. Während des Trainings, erhalte ich entweder eine oder sogar beide dieser Warnungen für einige der SVM, die ich trainieren:libsvm Shrinking Heuristics

WARNING: using -h 0 may be faster 
* 
WARNING: reaching max number of iterations 
optimization finished, #iter = 10000000 

Ich habe die Beschreibung für den h Parameter gefunden:

-h shrinking : whether to use the shrinking heuristics, 0 or 1 (default 1) 

und ich habe versucht, die Erklärung aus der libsvm-Dokumentation zu lesen, aber es ist ein bisschen zu hoch für mich. Kann mir bitte jemand eine Laienerklärung geben und vielleicht einige Vorschläge wie das Einstellen wäre von Vorteil, weil ...? Außerdem wäre es hilfreich zu wissen, ob die Einstellung dieses Parameters für alle SVMs, die ich trainiere, negative Auswirkungen auf die Genauigkeit für SVMs haben könnte, die diese Warnung nicht explizit angeben.

Ich bin mir nicht sicher, was ich von der anderen Warnung machen soll.

Nur um mehr Details zu geben: meine Trainingssätze haben 10 Attribute (Features) und sie bestehen aus 5000 Vektoren.


Update:

Falls jemand anderes ist die „erreicht maximale Anzahl der Iterationen“ bekommen, so scheint es, durch numerische Stabilitätsprobleme verursacht werden. Außerdem wird dadurch eine sehr langsame Trainingszeit erzeugt. Polynomial-Kernel profitieren von der Verwendung von Kreuzvalidierungstechniken, um den besten Wert für die Regularisierung (den C-Parameter) zu bestimmen, und im Fall von Polynom-Kernen half er, sie kleiner als 8 zu halten. Auch wenn der Kernel inhomogen ist \ sum (\ gamma x_i s_i + coef0)^d (Entschuldigung, LaTeX wird nicht auf SO unterstützt), wobei coef0! = 0, dann kann die Kreuzvalidierung mit einer Grid-Suchtechnik für Gamma und C implementiert werden, da in diesem Fall Fall, der Standardwert für Gamma (1/number_of_features) ist möglicherweise nicht die beste Wahl. Von meinen Experimenten her wollen Sie wahrscheinlich nicht, dass Gamma zu groß ist, da es numerische Probleme verursacht (ich versuche einen maximalen Wert von 8 dafür).

Für weitere Inspiration über die möglichen Werte für Gamma und C sollte man versuchen, in grid.py stochern.

Antwort

8

Die schrumpfenden Heuristiken sollen die Optimierung beschleunigen. Wie es in den FAQ heißt, helfen sie manchmal und manchmal nicht. Ich glaube, es ist eine Frage der Laufzeit und nicht der Konvergenz.

Die Tatsache, dass die Optimierung die maximale Anzahl von Iterationen erreicht, ist jedoch interessant. Vielleicht möchten Sie mit der Toleranz (Kostenparameter) spielen oder sich die einzelnen Probleme ansehen, die das verursachen. Sind die Datensätze groß?

+0

Danke für die Antwort! Ich denke, du hast Recht bezüglich der schrumpfenden Heuristiken. Sie helfen nur, die Modelle schneller zu trainieren. –

+0

In Bezug auf die maximalen Iterationen haben meine Datensätze jeweils 5000 Elemente. Das Training dauert weniger als eine Minute. Was ist der Kostenparameter? Ist es die Regularisierung? Im Moment setze ich es nur auf 1, den Standardwert in libsvm ... –

+0

Oh, ich sollte das klarstellen: Meine Trainingssätze haben 10 Attribute/Features und sie bestehen aus 5000 Vektoren. –