Ich verwende libsvm im C-SVC-Modus mit einem Polynomkern der Stufe 2 und muss mehrere SVMs trainieren. Jedes Trainingsset enthält 10 Features und 5000 Vektoren. Während des Trainings erhalte ich diese Warnung für die meisten SVMs, die ich trainiere:
WARNING: reaching max number of iterations
optimization finished, #iter = 10000000
Könnte jemand erklären, was diese Warnung impliziert und wie sie möglicherweise vermieden werden kann?
Ich möchte auch eine Kreuzvalidierung für meine Modelle anwenden, um die besten Optionen für Gamma und C (Regularisierung) zu ermitteln. Mein Plan ist es, einfach jede Kombination dieser 10 Werte auszuprobieren: 0,00001, 0,0001, 0,001, 0,01, 0,1, 1, 10, 100, 1000, 10000 für beide Parameter und zu sehen, welche Kombination die beste Genauigkeit bei der Kreuzvalidierung ergibt. Ist das genug? Soll ich in diesem Intervall mehr Werte verwenden oder ein größeres Intervall wählen?
quelle
Antworten:
Diese Warnung bedeutet, dass die von LIBSVM zur Lösung des quadratischen Optimierungsproblems verwendete iterative Routine, um die Hyperebene mit maximalem Rand (dh die Parameter und ) zu finden, die Ihre Daten trennt, die maximale Anzahl von Iterationen erreicht hat und angehalten werden muss, während die aktuelle Approximation für kann weiter verbessert werden (dh kann geändert werden, um den Wert der Zielfunktion extremer zu machen). Kurz gesagt bedeutet dies, dass die LIBSVM der Meinung ist, dass sie die Maximum-Margin-Hyperebene nicht gefunden hat, was möglicherweise zutrifft oder nicht.b w ww b w w
Es gibt viele Gründe, warum dies passieren kann. Ich empfehle Ihnen Folgendes:
Es ist eine gute Idee, optimales auf einer logarithmischen Skala zu suchen , wie Sie es tun. Ich denke, für normalisierte Daten sollte der von Ihnen vorgeschlagene Suchbereich für in Ordnung sein. Eine nützliche Überprüfung: Die Genauigkeit des Klassifikators sollte sich an den Grenzen dieses Bereichs und zwischen zwei Werten Ihrer Menge nicht wesentlich ändern. Wenn dies der Fall ist, erweitern Sie den Bereich oder fügen Sie Zwischenwerte hinzu.CC C
Beachten Sie, dass LIBSVM Distributive für Windows ein Python-Skript mit dem Namen grid.py enthalten sollte, mit dem Sie Parameter auswählen können (basierend auf der Kreuzvalidierung und den angegebenen Suchbereichen). Es können auch Konturdiagramme für die Genauigkeit von SVM erstellt werden. Dieses Tool kann sehr hilfreich sein.
Die folgende Frage zu StackOverflow und den zugehörigen Fragen könnte ebenfalls hilfreich sein: libsvm Shrinking Heuristics
quelle