SVM-Parameterauswahl

9

Gibt es bessere alternative Methoden zur Auswahl von C und Gamma, die zu einer besseren Trainingsleistung führen?

John
quelle

Antworten:

5

Die Rastersuche ist langsam, da viel Zeit für die Untersuchung von Hyperparametereinstellungen aufgewendet wird, die bei weitem nicht optimal sind. Eine bessere Lösung ist der Nelder-Mead-Simplex-Algorithmus , der keine Berechnung von Gradienteninformationen erfordert und einfach zu implementieren ist (auf der Wikipedia-Seite sollten genügend Informationen vorhanden sein). Möglicherweise befindet sich auch Java-Code in der Weka-Toolbox . Ich arbeite jedoch in MATLAB und habe Weka nicht im Detail betrachtet.

SMO ist ein Algorithmus zum Finden der Modellparameter anstelle der Hyperparameter.

Dikran Beuteltier
quelle
Könnten Sie Ihre Matlab-Implementierung bereitstellen?
Zach
1
Es gibt hier eine theoval.cmp.uea.ac.uk/matlab/#optim, aber wenn Sie bereits über die Optimierungs-Toolbox verfügen, ist fminsearch auch eine Implementierung der Nelder-Mead-Methode IIRC.
Dikran Marsupial
5

Die Nelder-Mead-Simplex-Methode kann so viele Funktionsbewertungen umfassen wie eine einfache Rastersuche. Normalerweise ist die Fehleroberfläche nahe genug an den optimalen Parameterwerten glatt genug, dass eine grobe Gittersuche gefolgt von einer feineren in einem kleineren Bereich ausreichen sollte.

Wenn Sie an einer gradientenbasierten Optimierung von C und Gamma interessiert sind, gibt es Methoden wie die Optimierung der Radius-Rand-Grenzen oder die Optimierung der Fehlerrate für einen Validierungssatz. Die Berechnung des Gradienten der Zielfunktion umfasst so etwas wie einen SVM-Zug, aber ein einfacher Gradientenabstieg kann nur einige Dutzend Iterationen umfassen. (Unter http://olivier.chapelle.cc/ams/ finden Sie einen Artikel und eine Matlab-Implementierung.)

Innuo
quelle
Nach meiner Erfahrung ist Nelder-Met normalerweise schneller als die Rastersuche und der Gradientenabstieg ist nur geringfügig schneller, da weniger Iterationen erforderlich sind und die Kosten für die Berechnung des Gradienten hoch sind. Wenn Sie also eine Implementierung haben, die einen Gradientenabstieg bietet, verwenden Sie diese, aber Nelder-Mead wird wahrscheinlich nicht weit dahinter sein. Sobald Sie mehr als zwei Hyperparameter zum Einstellen der Rastersuche haben, wird dies natürlich sofort zur langsamsten Methode. Es wäre interessant, eine Studie über die vergleichenden Wirkungsgrade jeder Methode zu sehen.
Dikran Marsupial
Sie haben Recht, wenn eine Anzahl von Parametern mehr als ein Paar ist, ist die Rastersuche nicht möglich. Gleiches gilt jedoch für Nelder-Mead, da die Größe des Simplex durch die Dimensionalität bestimmt wird.
Innuo
Nur im gleichen Maße wie beim Gradientenabstieg wird durch Hinzufügen einer zusätzlichen Dimension zum Problem nur ein zusätzlicher Punkt zum Simplex hinzugefügt, sodass die Anzahl der Hyperparameter wie beim Gradientenabstieg ungefähr linear skaliert. Ich habe es bei Problemen mit mehr als 40 Hyperparametern verwendet und es ist nur geringfügig langsamer als der Gradientenabstieg (bei so vielen Hyperparametern kommt es bei der Modellauswahl in beiden Fällen zu einer Überanpassung).
Dikran Beuteltier
0

Hier ist ein Eintrag in Alex Smolas Blog, der sich auf Ihre Frage bezieht

Hier ist ein Zitat:

[...] wählen Sie zufällig 1000 Paare (x, x ') aus Ihrem Datensatz aus, berechnen Sie den Abstand aller dieser Paare und nehmen Sie den Median, das Quantil 0,1 und das Quantil 0,9. Wählen Sie nun λ als Umkehrung einer dieser drei Zahlen. Mit ein wenig Kreuzvalidierung werden Sie herausfinden, welches der drei am besten ist. In den meisten Fällen müssen Sie nicht weiter suchen.

carlosdc
quelle