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.
quelle
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
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:x 1
Dabei ist Ihr Beispiel und die Werte von sind die Orientierungspunkte.lx l
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.x1 x2 x1 x2
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
quelle