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.
17
Odpowiedzi:
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 .
źródło
Oto lista, którą znalazłem na stronie http://www.dataschool.io/comparing-supervised-learning-algorithms/, wskazując, który klasyfikator wymaga skalowania funkcji :
Pełny stół:
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}):
Bibliografia:
źródło
log transformation / Box-Cox
i 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.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.
źródło