Rastersuche zur SVM-Parameterschätzung

8

Ich experimentiere derzeit mit Gridsearch, um eine Support-Vektor-Maschine zu trainieren. Ich verstehe, dass, wenn ich die Parameter gamma und C habe, die R-Funktion tune.svm eine 10-fache Kreuzvalidierung für alle Kombinationen dieser beiden Parameter durchführt.

Da ich nicht wusste, wie ich anfangen soll, habe ich versucht, einige Informationen darüber zu erhalten, zum Beispiel schlägt Wikipedia 2 Werte vor, die nicht linear sind, z. B. C im Bereich {10, 100, 1000}.

Bisher verwende ich die Beispiele aus meinem zweiten Wikipedia-Link:

gammas = 2^(-15:3)
costs = 2^(-5:15)

Daraus ergeben sich 399 Kombinationen.

Dies dauert sehr, sehr lange (~ 2000 Proben). Zum Beispiel für den Kernel "radial" ist mein bestes Ergebnis gamma = 0,5 und cost = 2.

Könnte ich nicht das gleiche Ergebnis erzielen, wenn ich nur Werte wie (1, 2, 3, 4, ... 10) für die Kosten und (0, 0,5, 1, 1,5, 2) für Gammas verwenden würde? Ich weiß, dass dieses Beispiel konstruiert ist, weil ich das Ergebnis bereits kenne.

Meine Frage:

Aber warum diese exponentielle Skala?

Es gibt so viele Werte zwischen 0 und 1, dass ich denke, dies ist eine Verschwendung von Rechenzeit und nur so wenige sehr große Zahlen, dass es sowieso kein sehr genaues Ergebnis finden konnte. Es wäre für mich nur sinnvoll, wenn dies verwendet würde, um einen kleineren Bereich zu finden. Nehmen wir an, wir wissen dann, dass die besten Kosten 2 ^ 3 sind, und dann suchen wir danach. Aber es wird nirgends erwähnt, dass dies so durchgeführt wird.

Verena Haunschmid
quelle
1
Genau deshalb ist die Rastersuche eine schlechte Methode, um optimale Parameter zu finden. Möglicherweise möchten Sie Bibliotheken auschecken , die dedizierte Optimierungsmethoden wie Optunity bereitstellen .
Marc Claesen

Antworten:

11

Der Grund für das Exponentialgitter ist, dass sowohl C als auch Gamma Skalierungsparameter sind , die multiplikativ wirken. Eine Verdoppelung des Gammas hat also wahrscheinlich einen ungefähr so ​​großen Effekt (aber in die andere Richtung) wie eine Halbierung. Dies bedeutet, dass, wenn wir ein Gitter mit ungefähr exponentiell ansteigenden Werten verwenden, ungefähr die gleiche Menge an "Informationen" über die Hyperparameter vorhanden ist, die durch die Bewertung des Modellauswahlkriteriums an jedem Gitterpunkt erhalten werden.

Normalerweise suche ich in einem Raster, das auf ganzzahligen Potenzen von 2 basiert, was ziemlich gut zu funktionieren scheint (ich arbeite an einem Artikel zur Optimierung der Rastersuche - wenn Sie ein zu feines Raster verwenden, können Sie das Modellauswahlkriterium möglicherweise überanpassen Daher erweist sich ein ziemlich grobes Gitter sowohl für die Verallgemeinerung als auch für den Rechenaufwand als gut.).

In Bezug auf den weiten Bereich hängen die optimalen Hyperparameterwerte leider von der Art des Problems und von der Größe des Datensatzes ab und können nicht a priori bestimmt werden. Der Grund für das große, scheinbar verschwenderische Raster besteht darin, sicherzustellen, dass gute Werte mit hoher Wahrscheinlichkeit automatisch gefunden werden können.

Wenn der Rechenaufwand ein Problem darstellt, können Sie anstelle der Rastersuche den Nelder-Mead-Simplex-Algorithmus verwenden , um den Kreuzvalidierungsfehler zu optimieren. Dies ist ein Optimierungsalgorithmus, für den keine Gradienteninformationen erforderlich sind. Daher ist die Verwendung bei Problemen, bei denen derzeit die Rastersuche verwendet wird, recht einfach. Ich bin kein R-Benutzer, aber Nelder-Mead ist in R via implementiert optim.

Dikran Beuteltier
quelle
Der erste Absatz erklärte sehr gut, was mir unklar war. Ich konnte diese Information (über die Skalierung) nicht finden.
Verena Haunschmid
Wurde das in Absatz 2 erwähnte Stück bereits veröffentlicht?
Sycorax sagt Reinstate Monica
Nein, leider abgelehnt, schreibe ich neu, um den Kommentaren des Rezensenten Rechnung zu tragen.
Dikran Beuteltier
0

Dies wird als "Parameter-Tuning" -Problem für SVMs bezeichnet. Einer der einfachsten Ansätze besteht darin, jeweils den Median für die höchste Genauigkeit der Klassenvorhersage zu ermitteln, die Sie beim Durchlaufen der CV-Falten erhalten.

Verwenden Sie als Faustregel auch einen einfacheren Klassifizierer, um festzustellen, ob Ihre Daten linear trennbar sind. Wenn der k-nächste Nachbar (kNN) oder die lineare Regression besser funktionieren, sollten Sie keinen teureren (rechnerischen) Ansatz wie SVM verwenden. SVM kann leicht überbeansprucht werden. Stellen Sie daher sicher, dass Sie lineare Regression, kNN, lineare Diskriminanzanalyse, zufällige Wälder usw. bewerten.


quelle