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.
Danke für die Antwort! Ich denke, du hast Recht bezüglich der schrumpfenden Heuristiken. Sie helfen nur, die Modelle schneller zu trainieren. –
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 ... –
Oh, ich sollte das klarstellen: Meine Trainingssätze haben 10 Attribute/Features und sie bestehen aus 5000 Vektoren. –