W artykule poruszam kwestię normalizacji oraz standaryzacji danych. Jeżeli szukasz odpowiedzi na pytania kiedy standaryzować dane lub kiedy je normalizować zapraszam do przeczytania niniejszego artykułu :).
Co to jest normalizacja i standaryzacja?
Tłumacząc pojecie normalizacji możemy powiedzieć, że jest to przekształcenie danych numerycznych w taki sposób aby spełniały pewne określone kryteria. Takimi kryteriami może być wybrany przez nas przedział wartości danych np. [0, 1] lub inne cechy jak normalność rozkładu.
Standaryzacja jest to szczególny przypadek normalizacji. Dane są przekształcane w taki sposób, że średnia z wektora danych jest równa 0 natomiast odchylenie standardowe jest równe 1.
Nie chcę się skupiać w artykule na miarach normalizacji bo jest ich naprawdę dużo np. min-max, unitaryzacja itd.. Chciałbym jednakże poruszyć temat kiedy powinniśmy standaryzować czy normalizować nasze dane w przypadku kiedy budujemy modele statystyczne.
Przesłanki do standaryzacji danych
I. Wszystkie modele uczenia maszynowego, które wykorzystują odległości (metryki jak Euklidesowa) czy podobieństwo (liczone są iloczyny skalarne) pomiędzy wektorami cech wymagają uprzedniej standaryzacji zmiennych. Przykładem takich algorytmów będą: k-NN, SVM, Sieci Neuronowe.
- Wynika to z tego, że jeżeli jedna z porównywanych cech ma bardzo szeroki rozkład wartości to liczona odległość będzie zaburzona przez tę cechę. Dlatego wszystkie cechy muszą być standaryzowane, żeby wkład każdej do liczonej odległości, był w przybliżeniu proporcjonalny.
II. W przypadku modeli regresji dane standaryzujemy zawsze kiedy model zawiera przekształcenia wielomianowe (polynomial terms) lub interakcje zmiennych.
- Przekształcenia wielomianowe to w potocznym języku podniesienie zmiennych np. do kwadratu czyli przekształcenie kwadratowe (quadratic) lub do sześcianu (cubic) – jest to wprowadzenie nieliniowości do modelu. Z kolei interakcje wprowadza się gdy podejrzewamy https://becejprevoz.com/buchstabe-k/index.html , że wpływ jednej zmiennej niezależnej na zmienną celu zależy od zmiany wartości drugiej zmiennej niezależnej. Przykładem wprowadzenia interakcji pomiędzy zmiennymi będzie utworzenie nowej zmiennej, która jest wynikiem przemnożenia dwóch zmiennych (np. A i B utworzona zmienna: A ✕ B).
- Czemu standaryzujemy w takim przypadku? Ponieważ, takie przekształcenia bardzo często wprowadzają do modelu multikolinearność. Efekt ten powstaje gdy zmienne niezależne są ze sobą silnie skorelowane, jest to efekt niepożądany. Więcej o multikolinearności pojawi się w artykule o regresji liniowej. Standaryzacja zmiennych pozwala zredukować kolinearność między nimi.
III. Warto standaryzować zmienne jeżeli używamy algorytmu optymalizacyjnego spadku wzdłuż gradientu (gradient descent). Ponieważ przyspieszy to proces zbiegania do maksimum lub minimum.
- To przyspieszenie wynika z tego, że learning rate w updateowanym równaniu gradient descentu w przypadku danych standaryzowanych jest taki sam dla każdego parametru.
IV. Jeżeli chcemy analizować daną cechę i porównywać ją pomiędzy dwoma populacjami, które różnią się rozmiarem, normalizujemy obie populacje. W innym razie, nie możemy stwierdzić jak znaczący jest wpływ danego zjawiska na całkowitą liczbę przypadków
V. Jeżeli stosujemy regresje regularyzowane tzn. Lasso, Ridge czy gdy wprowadzamy regularyzację do regresji logistycznej również powinniśmy standaryzować zmienne
- Ten podpunkt jest ważny ponieważ w przypadku metod regularyzacji, nakładana jest kara na wartości oszacowanych współczynników. Jednakże, wartość tej kary zależy od siły wpływu poszczególnej zmiennej. Dlatego niezbędnym jest standaryzacja zmiennych lub centryzacja przed zastosowaniem metod z zakresu regularyzacji.
O czym warto pamiętać przy korzystaniu ze standaryzacji czy normalizacji
Standaryzację można wykorzystać do wyszukiwania anomalii i obserwacji odstających. Ze względu na fakt, że standaryzowana zmienna ma średnią równą 0 i odchylenie standardowe równe 1, obserwacje odstające możemy traktować te, których wartość przekracza +/- 3. Jest to pewna reguła kciuka, jak wspominałem w artykułach o regresji logistycznej powinniśmy zawsze uważać z pochopnym usuwaniem danych itd. Każdy przejaw obserwacji odstającej powinniśmy zidentyfikować i ocenić indywidualnie.
Kiedy standaryzujemy lub normalizujemy zmienne, pamiętajmy, że zmienia się również interpretacja oszacowanych wyników. Nie możemy interpretować współczynników beta w przypadku estymacji regresji na standaryzowanych danych w ten sam sposób co na nie standaryzowanych.
Artykuł napisano na podstawie:
- https://statisticsbyjim.com/regression/standardize-variables-regression/
- https://en.wikipedia.org/wiki/Standardization
- https://technopremium.com/blog/preprocessing-with-scikit-learn-standardization/
- https://en.wikipedia.org/wiki/Feature_scaling#mw-head
- https://www.dataschool.io/comparing-supervised-learning-algorithms/
- https://www.listendata.com/2017/04/how-to-standardize-variable-in-regression.html
[…] Mimo tego, że wskazaliśmy, że chcemy otrzymać do 3 zmiennych, lasso wybrało nam tylko jedną zmienną, ponieważ dla reszty współczynniki zostały zredukowane do 0. Dodatkowo warto napomnieć, że przed stosowaniem regresji Lasso niezbędna jest standaryzacja zmiennych. Więcej o tym dlaczego, można przeczytać w artykule o standaryzacji [link]. […]