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ę?
Odpowiedzi:
Twoje podejście jest całkowicie poprawne. Chociaż transformacje danych są często niedoceniane jako „przetwarzanie wstępne”, nie można wystarczająco podkreślić, że transformacje w celu zoptymalizowania wydajności modelu mogą i powinny być traktowane jako część procesu budowania modelu.
Uzasadnienie: model stosuje się na niewidzialnych danych, które zasadniczo nie są dostępne w chwili budowy modelu. Proces sprawdzania poprawności (w tym dzielenie danych) symuluje to. Aby więc uzyskać dobre oszacowanie jakości modelu (i mocy uogólniającej), należy ograniczyć obliczanie parametrów normalizacji (średniej i wariancji) do zestawu treningowego.
Mogę tylko zgadywać, dlaczego nie zawsze tak się dzieje w literaturze. Jednym argumentem może być to, że obliczanie średniej i wariancji nie jest tak wrażliwe na małe zmiany danych (ale nawet jest to prawdą tylko wtedy, gdy podstawowa wielkość próby jest wystarczająco duża, a dane są w przybliżeniu normalnie rozmieszczone bez skrajnych wartości odstających).
źródło
Normalizacja cech polega na tworzeniu różnych elementów w tej samej skali. Skalowanie przyspiesza opadanie gradientu, unikając wielu dodatkowych iteracji, które są wymagane, gdy jedna lub więcej funkcji przyjmuje znacznie większe wartości niż pozostałe (bez skalowania wizualizowana funkcja kosztów będzie wykazywać wielką asymetrię).
Wydaje mi się, że sensowne jest stosowanie średniej i różnych wartości z zestawu treningowego, gdy nadchodzą dane testowe. Jednak jeśli rozmiar danych jest ogromny, zarówno zestawy szkoleniowe, jak i walidacyjne można w przybliżeniu postrzegać jako rozkład normalny, a zatem w przybliżeniu dzielą one średnią i zmienną.
źródło
Metodologia, którą opisałeś, jest solidna, jak powiedzieli inni. Powinieneś wykonać dokładnie taką samą transformację na funkcjach zestawu testowego, jak na funkcjach z zestawu treningowego.
Myślę, że warto dodać, że kolejnym powodem normalizacji funkcji jest zwiększenie wydajności niektórych procesów wrażliwych na różnice w skali niektórych zmiennych. Na przykład analiza głównych składników (PCA) ma na celu uchwycenie największego odsetka wariancji, w wyniku czego zwiększy wagę zmiennych, które wykazują największą wariancję, jeśli normalizacja funkcji nie zostanie początkowo wykonana.
źródło