Jakie algorytmy wymagają skalowania funkcji oprócz SVM?

17

Pracuję z wieloma algorytmami: RandomForest, DecisionTrees, NaiveBayes, SVM (jądro = liniowy i rbf), KNN, LDA i XGBoost. Wszystkie były dość szybkie, z wyjątkiem SVM. Właśnie wtedy dowiedziałem się, że potrzebuje skalowania funkcji, aby działać szybciej. Potem zacząłem się zastanawiać, czy powinienem zrobić to samo dla innych algorytmów.

Aizzaac
źródło

Odpowiedzi:

21

Zasadniczo algorytmy wykorzystujące odległości lub podobieństwa (np. W postaci iloczynu skalarnego) między próbkami danych, takimi jak k-NN i SVM, są wrażliwe na transformacje cech.

Klasyfikatory oparte na modelu graficznym, takie jak Fisher LDA lub Naive Bayes, a także drzewa decyzyjne i metody zestawów opartych na drzewach (RF, XGB) są niezmienne dla funkcji skalowania, ale nadal dobrym pomysłem może być przeskalowanie / standaryzacja danych .

krzyczeć
źródło
3
+1. Zauważ, że XGBoost faktycznie implementuje również drugi algorytm, oparty na liniowym wzmocnieniu. Skalowanie zrobi różnicę.
usεr11852 mówi Reinstate Monic
2
Czy mógłbyś rozwinąć więcej informacji na temat zmiany skali / standaryzacji danych dla RF i XGB? Nie wiem, jak to może wpłynąć na jakość modelu.
Tomek Tarczyński
17

Oto lista, którą znalazłem na stronie http://www.dataschool.io/comparing-supervised-learning-algorithms/, wskazując, który klasyfikator wymaga skalowania funkcji :

wprowadź opis zdjęcia tutaj

Pełny stół:

wprowadź opis zdjęcia tutaj

W grupowaniu k-oznacza musisz również znormalizować swoje dane wejściowe .

Oprócz rozważenia, czy klasyfikator wykorzystuje odległości lub podobieństwa, jak wspomniano Yell Bond, Stochastic Gradient Descent jest również wrażliwy na skalowanie cech (ponieważ szybkość uczenia się w równaniu aktualizacji Stochastic Gradient Descent jest taka sama dla każdego parametru {1}):

wprowadź opis zdjęcia tutaj


Bibliografia:

Franck Dernoncourt
źródło
Brakuje w tej odpowiedzi wyjaśnienia, dlaczego !! Zobacz na to moją odpowiedź.
kjetil b halvorsen
2
@kjetilbhalvorsen dobrze wyjaśniłem dla k-średnich i SGD, ale istnieje wiele innych algorytmów i modeli. Limit wymiany wynosi 30
000 znaków
Nieco powiązane: stats.stackexchange.com/questions/231285/…
kjetil b halvorsen
@FranckDernoncourt Czy mogę zadać ci pytanie oparte na tym? Mam zestaw danych zarówno danych jakościowych, jak i ciągłych, dla których buduję SVM. Dane ciągłe są mocno wypaczone (długi ogon). Do transformacji na ciągłym powinienem zrobić log transformation / Box-Coxi wtedy też normalise the resultant data to get limits between 0 and 1? Więc będę normalizować wartości dziennika. Następnie obliczyć SVM na danych ciągłych i kategorycznych (0-1) razem? Pozdrawiam za wszelką możliwą pomoc.
Chuck,
7

Yi=β0+β1xi+β2zi+ϵi
i=1,,n
xi=(xix¯)/sd(x)zi=(ziz¯)/sd(z)
Yi=β0+β1xi+β2zi+ϵi
β1,2β^1,2
β0=β0β1x¯sd(x)β2z¯sd(z),β1=β1sd(x),β2=β2sd(z)

A ta dyskusja na temat regresji liniowej mówi ci, na co powinieneś zwrócić uwagę w innych przypadkach: Czy istnieje niezmienność, czy nie? Zasadniczo metody zależne od miar odległości między predyktorami nie wykazują niezmienności , dlatego ważna jest standaryzacja. Kolejnym przykładem będzie grupowanie.

kjetil b halvorsen
źródło
1
Czy potrafisz wyraźnie pokazać, w jaki sposób jeden oblicza jeden zestaw bet od drugiego w tym konkretnym przykładzie zastosowanego skalowania?
Mathews24,
@kjetil Czy mogę zadać ci pytanie oparte na tym? Mam zestaw danych zarówno danych jakościowych, jak i ciągłych, dla których buduję SVM. Dane ciągłe są mocno wypaczone (długi ogon). Czy do ciągłej transformacji powinienem wykonać transformację logów / Box-Cox, a następnie znormalizować otrzymane dane, aby uzyskać limity między 0 a 1? Więc będę normalizować wartości dziennika. Następnie obliczyć SVM na danych ciągłych i kategorycznych (0-1) razem? Pozdrawiam za wszelką możliwą pomoc
Chuck,
1
Czy możesz dodać to jako nowe pytanie? z odniesieniem tutaj!
kjetil b halvorsen