Zgodnie z dokumentacją obiektu StandardScaler w scikit-learn:
Na przykład wiele elementów wykorzystywanych w funkcji celu algorytmu uczenia się (np. Jądro RBF maszyn wektora wektorowego lub regulatory modeli liniowych L1 i L2) zakłada, że wszystkie funkcje są wyśrodkowane wokół 0 i mają wariancję w tej samej kolejności. Jeśli cecha ma wariancję większą o rzędy wielkości niż inne, może zdominować funkcję celu i uniemożliwić estymatorowi uczenie się z innych cech poprawnie, zgodnie z oczekiwaniami.
Przed klasyfikacją powinienem skalować moje funkcje. Czy jest jakiś prosty sposób, aby pokazać, dlaczego powinienem to zrobić? Odniesienia do artykułów naukowych byłyby jeszcze lepsze. Znalazłem już jeden, ale prawdopodobnie jest wiele innych.
źródło
Zależy to od używanego jądra. Zdecydowanie najczęściej stosowanym (oprócz liniowym) jest jądro gaussowskie, które ma formę
SVM przyjmuje tę funkcję i używa jej do porównania podobieństwa punktu ( ) do każdego innego punktu w zestawie treningowym poprzez zsumowanie różnic w następujący sposób:x1
gdzie jest twoim przykładem, a wartości są punktami orientacyjnymi.x l
Jeśli cecha wynosi od 0 do 50 000, podczas gdy cecha mieści się w zakresie od 0 do 0,01, możesz zobaczyć, że zdominuje tę sumę, podczas gdy będzie miało praktycznie żadnego wpływu. Z tego powodu konieczne jest skalowanie funkcji przed zastosowaniem jądra.x1 x2 x1 x2
Jeśli chcesz dowiedzieć się więcej, polecam moduł 12 (Wspierające maszyny wektorowe) z internetowego kursu Stanforda dotyczącego uczenia maszynowego w Coursera (bezpłatny i dostępny w dowolnym momencie): https://www.coursera.org/course/ml
źródło