Spędziłem kiedyś pół dnia normalizując dane do Random Forest. Wynik? Identyczny jak bez normalizacji. Drzewa decyzyjne nie obchodzą skale.
Modele wymagające normalizacji
- Regresja liniowa/logistyczna - tak, współczynniki muszą być porównywalne
- Sieci neuronowe - zdecydowanie, gradient descent wymaga tego
- SVM - tak, bardzo wrażliwe na skalę
- K-means clustering - tak, liczy odległości
Modele obojętne na skalę
- Random Forest i decision trees - dzielą dane po wartościach bezwzględnych
- XGBoost/LightGBM - wewnętrznie to drzewa
- Naive Bayes - operuje na prawdopodobieństwach
Który typ normalizacji
MinMaxScaler (0-1): gdy znasz zakres wartości, nie ma outlierów. Użyj do sieci neuronowych.
StandardScaler (średnia=0, std=1): gdy masz rozkład normalny. Regresja liniowa, SVM.
RobustScaler: gdy masz outliery, używa mediany zamiast średniej.
Projekt z cenami nieruchomości: użyłem MinMaxScaler, ale jedna willa za 5 mln zł ścisnęła wszystkie normalne mieszkania do zakresu 0.00-0.02. RobustScaler rozwiązał problem.
Protip: dla freelancerów - zawsze trenuj scaler tylko na danych treningowych, potem transformuj test set tym samym scalerem. Inaczej wyciek danych.