Powszechną dobrą praktyką w uczeniu maszynowym jest normalizacja funkcji lub standaryzacja danych zmiennych predykcyjnych, to znaczy, wyśrodkowanie danych odejmując średnią i normalizując ją dzieląc przez wariancję (lub też odchylenie standardowe). W celu zapewnienia sobie samowystarczalności i dla mojego zrozumienia robimy to, aby osiągnąć dwie główne rzeczy:
- Unikaj bardzo małych odważników modelowych, aby uzyskać stabilność numeryczną.
- Zapewnij szybką konwergencję algorytmów optymalizacyjnych, takich jak np. Gradient sprzężony, aby duża wielkość jednego wymiaru predykcyjnego nie powodowała powolnej konwergencji.
Zazwyczaj dzielimy dane na zestawy szkoleniowe, walidacyjne i testowe. W literaturze zwykle widzimy, że aby przeprowadzić normalizację cech, biorą one średnią i wariancję (lub odchylenie standardowe) w stosunku do całego zestawu zmiennych predykcyjnych. Wielką wadą, którą tu widzę, jest to, że jeśli to zrobisz, w rzeczywistości wprowadzasz przyszłe informacje do zmiennych predykcyjnych treningu, a mianowicie przyszłe informacje zawarte w średniej i wariancji.
Dlatego wykonuję normalizację funkcji w stosunku do danych treningowych i zapisuję średnią i wariancję. Następnie stosuję normalizację funkcji do zmiennych predykcyjnych walidacji i zestawów danych testowych przy użyciu średniej treningowej i wariancji. Czy są z tym jakieś zasadnicze wady? czy ktoś może polecić lepszą alternatywę?