Czy przeprowadzić normalizację funkcji przed czy w ramach walidacji modelu?


52

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:

  1. Unikaj bardzo małych odważników modelowych, aby uzyskać stabilność numeryczną.
  2. 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:


46

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).


Uważam to za nieco mylące. OP twierdzi, że robi normalizację funkcji w zakresie sprawdzania poprawności i testowania zestawów danych. Twoja odpowiedź najpierw mówi, że jego podejście jest prawidłowe. Następnie mówisz: „należy ograniczyć obliczanie parametrów normalizacyjnych do zestawu treningowego”, co nie jest tym, co robi. Zatem twoja odpowiedź zaprzecza samemu, mówiąc mu, że to, co robi, jest poprawne, a następnie sugeruje coś innego. Czego tu brakuje?
mahonya

4
To, co robi OP, zostało opisane w jego ostatnim akapicie i właśnie to powiedziałem. Oczywiście normalizacja jest stosowana do zestawu testowego / walidacyjnego, jeśli została zastosowana do zestawu szkoleniowego. Ważne jest to, że parametry tej normalizacji zostały obliczone tylko na danych treningowych, a nie na całym zestawie. Mam nadzieję że to pomoże.
steffen

Ach, wielkie dzięki. Źle zrozumiałem twoją odpowiedź. Myślałem, że sugerujesz „zastosowanie” normalizacji tylko do zestawu treningowego, co wyraźnie nie było tym, co zasugerowałeś.
mahonya

2

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ą.


1
Powodem, dla którego normalizacja danych może przyspieszyć opadanie gradientu, wydaje mi się, że bez normalizacji rss ma kontury eliptyczne, więc biorąc pod uwagę stałą szybkość uczenia się, może potrzebować więcej iteracji dla zejścia gradientu. Podczas gdy ze skalowaniem, rss ma kontury okręgu (symetryczne), więc opadanie gradientu szybko się zbiega. Czy mam rację?
awokado

1

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.


Bardzo dobry punkt! dziękuję za przyniesienie go. Pamiętam z moich badań, że zawsze normalizowałem matrycę wejściową przed obliczeniem PCA.
SkyWalker
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.