Wie wähle ich den Kernel für SVM aus?

95

Wenn Sie SVM verwenden, müssen Sie einen Kernel auswählen.

Ich frage mich, wie ich einen Kernel auswählen soll. Irgendwelche Kriterien für die Kernelauswahl?

xiaohan2012
quelle
Wie groß ist das Problem? (#Variablen, Beobachtungen)?
user603
Ich
bitte

Antworten:

54

Der Kernel ist praktisch ein Ähnlichkeitsmaß. Daher ist es eine gute Idee, einen Kernel nach Vorkenntnissen der Invarianzen zu wählen, wie von Robin (+1) vorgeschlagen.

In Ermangelung von Expertenwissen stellt der Radial Basis Function-Kernel einen guten Standard-Kernel dar (sobald Sie festgestellt haben, dass es sich um ein Problem handelt, das ein nichtlineares Modell erfordert).

Die Auswahl der Kernel- und Kernel- / Regularisierungsparameter kann automatisiert werden, indem eine auf Cross-Valdiation basierende Modellauswahl optimiert wird (oder die Radius-Rand- oder Bereichsgrenzen verwendet werden). Am einfachsten ist es, ein kontinuierliches Modellauswahlkriterium mithilfe der Nelder-Mead-Simplex-Methode zu minimieren, die keine Gradientenberechnung erfordert und für eine sinnvolle Anzahl von Hyperparametern geeignet ist. Wenn Sie mehr als ein paar Hyperparameter einstellen müssen, führt die automatische Modellauswahl aufgrund der Varianz des Modellauswahlkriteriums wahrscheinlich zu einer starken Überanpassung. Es ist möglich, eine gradientenbasierte Optimierung zu verwenden, aber der Leistungszuwachs ist normalerweise nicht die Mühe wert, ihn zu codieren.

Die automatische Auswahl von Kerneln und Kernel- / Regularisierungsparametern ist ein schwieriges Problem, da das Modellauswahlkriterium (in der Regel auf der Grundlage einer Kreuzvalidierung) sehr leicht überarbeitet werden kann und Sie möglicherweise ein schlechteres Modell erhalten als zu Beginn. Die automatische Modellauswahl kann auch die Leistungsbewertung beeinflussen. Stellen Sie daher sicher, dass Ihre Leistungsbewertung den gesamten Prozess der Anpassung des Modells (Schulung und Modellauswahl) bewertet. Weitere Informationen finden Sie unter

GC Cawley und NLC Talbot, Verhinderung einer Überanpassung bei der Modellauswahl durch Bayes'sche Regularisierung der Hyperparameter, Journal of Machine Learning Research, Band 8, Seiten 841-861, April 2007. (pdf)

und

GC Cawley und NLC Talbot, Überanpassung bei der Modellauswahl und anschließende Auswahlverzerrung bei der Leistungsbewertung, Journal of Machine Learning Research, vol. 11, S. 2079-2107, Juli 2010. (pdf)

Dikran Beuteltier
quelle
Ich verstehe, dass die radiale Basis ein Ähnlichkeitsmaß ist, da sie für weit voneinander entfernte Vektoren nahe 0 ist und bei identischen Vektoren ihr Maximum erreicht. Ich verstehe jedoch nicht, wie diese Idee auf den linearen Algorithmus zutrifft (mit dem Skalarprodukt als Kernel). Wie können wir das Skalarprodukt als Ähnlichkeitsmaß interpretieren?
Bananin
@Bananin das Punktprodukt kann als das Produkt der Größe der beiden Vektoren und des Kosinus des Winkels zwischen ihnen geschrieben werden. Sie können sich das also als Messung der Ähnlichkeit in Bezug auf die Richtung der Vektoren vorstellen (aber natürlich auch abhängig davon) auf ihre Größen)
Dikran Beuteltier
34

Wenn Sie sich nicht sicher sind, was am besten ist, können Sie automatische Auswahlverfahren verwenden (z. B. Kreuzvalidierung, ...). In diesem Fall können Sie sogar eine Kombination von Klassifikatoren verwenden (wenn Ihr Problem in der Klassifizierung besteht), die mit einem anderen Kernel erhalten wurden.

Der "Vorteil" der Arbeit mit einem Kernel besteht jedoch darin, dass Sie die übliche "euklidische" Geometrie so ändern, dass sie zu Ihrem eigenen Problem passt. Außerdem sollten Sie wirklich versuchen zu verstehen, was das Interesse eines Kernels für Ihr Problem ist, was für die Geometrie Ihres Problems besonders ist . Dies kann beinhalten:

  • Invarianz : Wenn es eine Familie von Transformationen gibt, die Ihr Problem nicht grundlegend ändern, sollte der Kernel dies widerspiegeln. Die Invarianz durch Rotation ist im Gaußschen Kernel enthalten, aber Sie können an viele andere Dinge denken: Übersetzung, Homothetik, jede Gruppendarstellung, ....
  • Was ist ein guter Separator? Wenn Sie eine Vorstellung davon haben, was ein gutes Trennzeichen (dh eine gute Klassifizierungsregel) in Ihrem Klassifizierungsproblem ist, sollte dies bei der Auswahl des Kernels berücksichtigt werden. Denken Sie daran, dass Sie mit SVM Klassifikatoren des Formulars erhalten

f^(x)=i=1nλiK(x,xi)

Wenn Sie wissen, dass ein lineares Trennzeichen gut ist, können Sie einen Kernel verwenden, der affine Funktionen liefert (dh ). Wenn Sie der Meinung sind, dass glatte Grenzen im Geiste von glattem KNN besser sind, können Sie einen Gaußschen Kernel nehmen ...K(x,xi)=x,Axi+c

Robin Girard
quelle
In Ihrer Antwort haben Sie erwähnt, dass "der" Vorteil der Arbeit mit einem Kernel darin besteht, dass Sie die übliche "Euklidian" -Geometrie so ändern, dass sie zu Ihrem eigenen Problem passt. Außerdem sollten Sie wirklich versuchen, das Interesse eines Kernels zu verstehen Was ist für Ihr Problem besonders für die Geometrie Ihres Problems? " Können Sie zunächst einige Hinweise geben? Vielen Dank.
Raihana
11

Ich habe immer das Gefühl, dass die Auswahl von Hyperparametern für SVMs über die Kreuzvalidierung in Kombination mit der Rastersuche erfolgt.

bayerj
quelle
2
Ich habe das gleiche Gefühl
Xiaohan2012
2
Rastersuche ist eine schlechte Idee. Sie verbringen viel Zeit damit, in Bereichen zu suchen, in denen die Leistung schlecht ist. Verwenden Sie gradientenfreie Optimierungsalgorithmen wie die in der Praxis weitaus effizientere Nelder-Mead-Simplex-Methode (z. B. fminsearch () in MATLAB).
Dikran Marsupial
Nein, verwenden Sie grafische Modelle oder Gaußsche Prozesse für die globale Optimierung in Kombination mit erwarteten Informationen. (Siehe "Algorithmen zur Optimierung von
Hyperparametern
2

Im Allgemeinen ist der RBF-Kernel eine vernünftige erste Wahl. Darüber hinaus ist der lineare Kernel ein Sonderfall des RBF. Insbesondere wenn die Anzahl der Features sehr groß ist, kann man nur den linearen Kernel verwenden.

Boyxiaolong
quelle
1
Es hängt davon ab, ob Ihre Daten linear trennbar sind oder nicht, und nicht davon, wie viele Dimensionen Sie haben. Wenn die Anzahl der Features sehr groß ist (wiederum abhängig von den Daten), wenden Sie zuerst die Dimensionsreduktion an, PCA oder LDA (lineare oder nichtlineare Kernel-Varianten)