Warum muss ich bei der Verwendung von SVMs die Funktionen skalieren?

9

Gemäß der Dokumentation des StandardScaler- Objekts in scikit-learn:

Beispielsweise gehen viele Elemente, die in der Zielfunktion eines Lernalgorithmus verwendet werden (wie der RBF-Kernel von Support Vector Machines oder die L1- und L2-Regularisierer linearer Modelle), davon aus, dass alle Merkmale um 0 zentriert sind und eine Varianz in derselben Reihenfolge aufweisen. Wenn ein Merkmal eine um Größenordnungen größere Varianz aufweist als andere, kann dies die Zielfunktion dominieren und dazu führen, dass der Schätzer nicht wie erwartet korrekt von anderen Merkmalen lernen kann.

Ich sollte meine Funktionen vor der Klassifizierung skalieren. Gibt es eine einfache Möglichkeit zu zeigen, warum ich das tun sollte? Verweise auf wissenschaftliche Artikel wären noch besser. Ich habe bereits einen gefunden , aber es gibt wahrscheinlich viele andere.

Scallywag
quelle

Antworten:

16

γ = 1κ(u,v)=exp(- -u- -v2)γ=1

Gegeben sind 3 Merkmalsvektoren:

x1=[1000,1,2]],x2=[900,1,2]],x3=[1050,- -10,20]].

dann ist , das heißt ist angeblich ähnlicher wie als .x 1 x 3 x 2κ(x1,x2)=exp(10000)κ(x1,x3)=exp(2905)x1x3x2

Die relativen Unterschiede zwischen und: x 2[0,1,0,0],x1

x2[0,1,0,0]],x3[0,05,- -10,10]].

Ohne Skalierung schließen wir, dass ähnlicher ist als , obwohl die relativen Unterschiede pro Feature zwischen und sind viel größer als die von und .x 3 x 2 x 1 x 3 x 1 x 2x1x3x2x1x3x1x2

Mit anderen Worten, wenn Sie nicht alle Features auf vergleichbare Bereiche skalieren, dominieren die Features mit dem größten Bereich bei der Berechnung der Kernelmatrix vollständig.

Einfache Beispiele zur Veranschaulichung finden Sie im folgenden Dokument: Ein praktischer Leitfaden zur Unterstützung der Vektorklassifizierung (Abschnitt 2.2).

Marc Claesen
quelle
Vielleicht möchten Sie auch die Regularisierung diskutieren: Die Skalierung der Gewichte hängt von der Skalierung der Eingaben ab ...
Seanv507
Der Effekt der Regularisierung besteht darin, dass unterschiedliche Skalierungen unterschiedliche optimale implizieren , was zu diesem speziellen Problem etwas orthogonal ist. C.
Marc Claesen
2
Aber es könnte tatsächlich sein, dass die Nähe entlang einer Dimension wichtiger ist. Das Ziel ist es also nicht, in allen Features die gleiche Varianz zu haben, sondern sie so zu skalieren, dass Entfernungen entlang jedes Features für die Aufgabe ungefähr die gleiche Bedeutung haben.
Isarandi
@Marc Claesen: Wenn Ihre Variablen unterschiedliche Größenordnungen haben, haben Ihre Gewichte auch unterschiedliche Größenordnungen, und die l2-Norm konzentriert sich auf die Eingaben mit geringer Varianz und entsprechend großen Gewichten. Anders ausgedrückt, die Regularisierung der Gewichtsnorm stellt sicher, dass „kleine“ Eingaben geringe Auswirkungen haben. Dies ist nur dann sinnvoll, wenn Sie "klein" (über Ihre Eingaben hinweg) standardisiert haben, z. B. indem Sie Ihre Variablen normalisieren
seanv507
1
@ seanv507, das nur für lineare SVM gilt.
Marc Claesen
0

Es hängt davon ab, welchen Kernel Sie verwenden. Bei weitem am häufigsten verwendet (außer linear) ist der Gaußsche Kern, der die Form hat

f=exp(- -||x1- -x2||22σ2)

Eine SVM verwendet diese Funktion, um die Ähnlichkeit eines Punktes ( ) mit jedem anderen Punkt im Trainingssatz zu vergleichen, indem die Unterschiede wie folgt summiert werden:x1

(x1- -l1)2+(x2- -l2)2...+(xn- -ln)2

Dabei ist Ihr Beispiel und die Werte von sind die Orientierungspunkte.lxl

Wenn das Merkmal zwischen 0 und 50.000 liegt, während das Merkmal zwischen 0 und 0,01 liegt, können Sie sehen, dass diese Summe dominieren wird, während hat praktisch keine Auswirkungen. Aus diesem Grund ist es notwendig, die Merkmale zu skalieren, bevor der Kern angewendet wird.x1x2x1x2

Wenn Sie mehr erfahren möchten, empfehle ich Modul 12 (Support Vector Machines) aus dem Stanford Online-Kurs für maschinelles Lernen bei Coursera (kostenlos und jederzeit verfügbar): https://www.coursera.org/course/ml

ralph346526
quelle