Dane liczbowe: normalizacja

Po zbadaniu danych za pomocą technik statystycznych i wizualizacji należy je przekształcić w sposób, który ułatwi modelowi skuteczniejsze trenowanie. Celem normalizacji jest przekształcenie funkcji tak, aby działały na podobnej skali. Rozważmy na przykład 2 cechy:

  • Cecha X obejmuje zakres od 154 do 24 917 482.
  • Cecha Y obejmuje zakres od 5 do 22.

Te 2 funkcje obejmują bardzo różne zakresy. Normalizacja może zmienić wartości XY tak, aby miały podobny zakres, np. od 0 do 1.

Normalizacja zapewnia te korzyści:

  • Pomaga modelom szybciej łączyć się podczas trenowania. Gdy różne cechy mają różne zakresy, metoda gradientu może „odbić się” i spowolnić konwergencję. Bardziej zaawansowani optymalizatorzy, tacy jak Adagrad i Adam, chronią przed tym problemem, zmieniając efektywne tempo uczenia się w czasie.
  • Pomaga modelom wyciągać lepsze wnioski. Jeśli różne cechy mają różne zakresy, uzyskany model może generować mniej przydatne prognozy.
  • Pomaga uniknąć pułapki typu „NaN”, gdy wartości cech są bardzo wysokie. NaN to skrót od not a number (nie jest liczbą). Gdy wartość w modelu przekracza limit precyzji liczby zmiennoprzecinkowej, system ustawia ją na NaN zamiast na liczbę. Gdy 1 liczba w modelu stanie się NaN, inne liczby w modelu również w końcu staną się NaN.
  • Pomaga modelowi uczyć się odpowiednich wag dla każdej cechy. Bez skalowania cech model zwraca zbyt dużą uwagę na cechy o szerokim zakresie i nie wystarczająco dużo uwagi na cechy o wąskim zakresie.

Zalecamy normalizowanie cech liczbowych obejmujących wyraźnie różne zakresy (np. wiek i dochody). Zalecamy też znormalizowanie pojedynczej cechy numerycznej, która obejmuje szeroki zakres, na przykład city population..

Rozważ te 2 funkcje:

  • Najniższa wartość cechy A wynosi -0,5, a najwyższa to +0,5.
  • Najniższa wartość funkcji B to -5,0, a najwyższa – +5,0.

Cechy AB mają stosunkowo wąskie zakresy. Jednak rozpiętość cechy B jest 10 razy szerszy niż rozpiętość cechy A. Dlatego:

  • Na początku trenowania model zakłada, że Cecha B jest 10 razy „ważniejsza” niż Cecha A.
  • Trenowanie trwa dłużej niż powinno.
  • Otrzymany model może nie być optymalny.

Ogólne szkody spowodowane brakiem normalizacji będą stosunkowo niewielkie, ale zalecamy normalizację funkcji A i B w tej samej skali, np. od -1,0 do +1,0.

Teraz weź pod uwagę 2 funkcje o większych różnicach zakresów:

  • Najniższa wartość cechy C to -1, a najwyższa to +1.
  • Najniższa wartość funkcji D to +5000, a najwyższa – +1 000 000 000.

Jeśli nie znormalizujesz atrybutów CD, Twój model prawdopodobnie nie będzie optymalny. Ponadto trening będzie potrzebował znacznie więcej czasu na zbieżność lub w ogóle nie będzie się zbieżeć.

W tej sekcji omówiono 3 popularne metody normalizacji:

  • skalowanie liniowe
  • Skalowanie standaryzacji Z
  • skalowanie logarytmiczne

Ta sekcja zawiera dodatkowo informacje o przycinaniu. Chociaż nie jest to prawdziwa technika normalizacji, przycinanie pozwala uporządkować niesforne cechy liczbowe w zakresy, które dają lepsze modele.

Skala liniowa

Skalowanie liniowe (często w skrócie skalowane) polega na przekształcaniu wartości zmiennoprzecinkowych ze swojego naturalnego zakresu na zakres standardowy, zwykle od 0 do 1 lub od -1 do +1.

Skalowanie liniowe jest dobrym wyborem, gdy są spełnione wszystkie te warunki:

  • Dolna i górna granica danych nie zmieniają się znacząco w czasie.
  • Cecha zawiera niewiele odstających lub zerową liczbę, które nie są ekstremalne.
  • Obiekt jest mniej więcej równomierny w całym swoim zakresie. Oznacza to, że histogram będzie zawierał w przybliżeniu równe słupki dla większości wartości.

Załóżmy, że człowiek age jest funkcją. Skalowanie liniowe to dobra technika normalizacji w przypadku age, ponieważ:

  • Przybliżone dolne i górne granice to 0–100.
  • Plik age zawiera stosunkowo niewielki odsetek wartości odstających. Tylko około 0,3% ludzi ma więcej niż 100 lat.
  • Chociaż niektóre grupy wiekowe są nieco lepiej przedstawione niż inne, duży zbiór danych powinien zawierać wystarczającą liczbę przykładów osób ze wszystkich grup wiekowych.

Ćwiczenie: sprawdź swoją wiedzę

Załóżmy, że Twój model ma cechę o nazwie net_worth, która zawiera wartość netto różnych osób. Czy skalowanie liniowe byłoby dobrą techniką normalizacji w przypadku net_worth? Dlaczego?

Skalowanie standaryzacji Z

Wynik testu Z to liczba standardowych odchyleń wartości od średniej. Na przykład wartość o 2 odchyleniach standardowych większych niż średnia ma wynik Z +2, 0. Wartość, która jest o 1,5 odchylenia standardowego mniej od średniej, ma współczynnik Z-score równy –1,5.

Reprezentowanie cechy za pomocą skalowania do wyniku Z oznacza zapisanie wyniku Z-cech we wektorze cech. Na przykład na rysunku poniżej widać 2 histogramy:

  • Po lewej stronie klasyczny rozkład normalny.
  • Po prawej stronie ten sam rozkład jest normalizowany przez skalowanie wyniku Z.
Rysunek 4.  2 histogramy: oba przedstawiają rozkłady normalne o identycznym rozkładzie. Pierwszy histogram, który zawiera nieprzetworzone dane, ma średnią wartość 200 i odchylenie standardowe 30. Drugi histogram, który zawiera wersję wyniku Z pierwszej rozkładu, ma średnią wartość 0, a odchylenie standardowe 1.
Rysunek 4. Dane wyjściowe (po lewej) w porównaniu ze współczynnikiem Z (po prawej) dla rozkładu normalnego.

Skalowanie wyniku Z jest też dobrym rozwiązaniem w przypadku danych takich jak na ilustracji poniżej, gdzie rozkład jest niejasny i normalny.

Rysunek 5.  Dwa histogramy o identycznym kształcie, każdy o stromym wzroście na płaskowyż, następnie stosunkowo szybkim opadzie, po którym następuje stopniowy spadek. Jeden histogram przedstawia rozkład danych wyjściowych, a drugi – rozkład danych wyjściowych po ich znormalizowaniu za pomocą skalowania wartości Z.
            Wartości na osi X na obu histogramach są bardzo różne.
            Histogram danych wyjściowych obejmuje zakres od 0 do 29 tys., a histogram skalowany za pomocą wartości Z – od –1 do około +4, 8.
Rysunek 5. Nieprzetworzone dane (po lewej) a skalowanie wyniku Z (po prawej) w przypadku nieklasycznego rozkładu normalnego.

Wartość z-score jest dobrym wyborem, gdy dane mają rozkład normalny lub rozkład zbliżony do rozkładu normalnego.

Pamiętaj, że niektóre rozkłady mogą być normalne w większości zakresu, ale nadal mogą zawierać wartości skrajne. Na przykład prawie wszystkie punkty w cesze net_worth mogą mieścić się w 3 odchyleniach standardowych, ale niektóre przykłady tej cechy mogą być oddalone od średniej o setki odchyleń standardowych. W takich sytuacjach możesz połączyć skalowanie według wartości Z-score z inną formą normalizacji (zwykle przycinaniem), aby rozwiązać ten problem.

Ćwiczenie: sprawdź swoją wiedzę

Załóżmy, że Twój model trenuje obiekt o nazwie height, który uwzględnia wzrost dziesięciu milionów kobiet. Czy standaryzacja za pomocą skali Z byłaby dobrą metodą normalizacji w przypadku height? Dlaczego?

Skalowanie logarytmiczne

Skalowanie logarytmiczne oblicza logarytm wartości nieprzetworzonej. Teoretycznie logarytm może mieć dowolną podstawę, ale w praktyce skalowanie logarytmiczne zwykle oblicza logarytm naturalny (ln).

Skalowanie logu jest przydatne, gdy dane są zgodne z prawem mocy. Mówiąc najprościej, rozkład prawa władzy wygląda tak:

  • Niskie wartości X mają bardzo wysokie wartości Y.
  • Wraz ze wzrostem wartości X wartości Y szybko maleją. W związku z tym wysokie wartości X mają bardzo niskie wartości Y.

Oceny filmów są dobrym przykładem rozkładu według prawa potęgowego. Na poniższym rysunku:

  • Kilka filmów ma wiele ocen użytkowników. (niskie wartości atrybutu X mają wysokie wartości atrybutu Y).
  • Większość filmów ma bardzo mało ocen użytkowników. (wysokie wartości X mają niskie wartości Y).

Skalowanie logów zmienia rozkład, co pomaga trenować model generujący lepsze prognozy.

Rysunek 6. 2 wykresy porównujące dane nieprzetworzone z logarytmem tych danych
            Wykres z nieprzetworzonych danych pokazuje w głowie wiele ocen użytkowników, po których widać je długie. Wykres logarytmiczny ma bardziej równomierną dystrybucję.
Rysunek 6. Porównanie rozkładu surowego z jego logarytmem.

Drugi przykład: sprzedaż książek podlega rozkładowi według prawa potęgowego, ponieważ:

  • Większość opublikowanych książek sprzedaje się w niewielkich egzemplarzach, czasem nawet 1–200.
  • Niektóre książki sprzedają się w umiarkowanej liczbie, w tysiącach egzemplarzy.
  • Tylko kilka najpopularniejszych tytułów sprzeda się w ponad milionie egzemplarzy.

Załóżmy, że trenujesz model liniowy, aby znaleźć zależność między okładkami książek a ich sprzedażą. Model liniowy trenowany na podstawie wartości nieprzetworzonych musiałby znaleźć coś w okładkach książek, które sprzedały milion egzemplarzy, co jest 10 tysięcy razy bardziej skuteczne niż okładki książek, które sprzedały tylko 100 egzemplarzy. Jednak dzięki skalowaniu wszystkich danych o sprzedaży zadanie to staje się znacznie łatwiejsze do wykonania. Na przykład logarytm z 100 to:

  ~4.6 = ln(100)

a log 1 000 000 to:

  ~13.8 = ln(1,000,000)

Zatem log 1 000 000 jest tylko około 3 razy większy niż log 100. Prawdopodobnie możesz sobie wyobrazić, że okładka bestsellera jest około trzykrotnie bardziej atrakcyjna (w jakimś sensie) niż okładka książki, która nie cieszy się zbytnim powodzeniem.

Przycinanie

Odcięcie wartości odstających to technika minimalizowania wpływu wartości skrajnych. Krótko mówiąc, przycinanie zwykle ogranicza (zmniejsza) wartość wartości odstających do określonej wartości maksymalnej. Clipping to dziwny pomysł, ale może być bardzo skuteczny.

Wyobraź sobie na przykład zbiór danych zawierający cechę o nazwie roomsPerPerson, która reprezentuje liczbę pokoi (łączna liczba pokoi podzielona przez liczbę osób) w różnych domach. Na poniższym wykresie widać, że ponad 99% wartości funkcji jest zgodnych z rozkładem normalnym (średnia 1,8 i odchylenie standardowe 0,7). Funkcja zawiera jednak kilka wartości odstających, niektóre z nich są bardzo odległe od reszty:

Rysunek 7. Wykres roomsPerPerson, na którym prawie wszystkie wartości
            skupiają się w zakresie 0–4, ale występuje bardzo długi ogon
            sięga on aż do 17 pokoi na osobę
Rysunek 7. Zasadniczo normalne, ale nie całkiem normalne.

Jak można zminimalizować wpływ tych skrajnych wartości? Widok histogramu nie przypomina rozkładu równomiernego, normalnego ani rozkładu według prawa potęgowego. Co się stanie, jeśli po prostu ograniczymy lub przytniemy maksymalną wartość funkcji roomsPerPerson do dowolnej wartości, np.4,0?

Wykres roomsPerPerson, na którym wszystkie wartości mieszczą się w zakresie od 0 do 4,0. Fabuła ma kształt dzwonu, ale z kolei na wykresie 4,0 występuje nietypowe wzgórze.
Rysunek 8. Obcinanie wartości cech na poziomie 4,0.

Przycięcie wartości funkcji na poziomie 4,0 nie oznacza, że model ignoruje wszystkie wartości większe niż 4,0. Oznacza to, że wszystkie wartości większe niż 4,0 są teraz ustawiane na 4,0. To wyjaśnia dziwny szczyt w 4.0. Pomimo tego wzgórza przeskalowany zbiór cech jest teraz bardziej przydatny niż oryginalne dane.

Zaczekaj chwilę. Czy naprawdę możesz zredukować wszystkie wartości odstające do dowolnego górnego progu? Podczas trenowania modelu – tak.

Wartości możesz też przyciąć po zastosowaniu innych form normalizacji. Załóżmy na przykład, że używasz skalowania na podstawie wartości z testu Z, ale kilka wartości odstających ma wartości bezwzględne znacznie większe niż 3. W takim przypadku możesz:

  • Zredukuj wartości Z-score większe niż 3, tak aby wynosiły dokładnie 3.
  • Zredukuj wartości poniżej -3, tak aby wynosiły dokładnie -3.

Dzięki temu model nie będzie nadmiernie indeksować nieistotnych danych. Jednak pewne odchylenia są istotne, więc musisz je ostrożnie przyciąć.

Podsumowanie metod normalizacji

Technika normalizacjiFormułaKiedy używać
Skala liniowa $$ x' = \frac{x - x_{min}}{x_{max} - x_{min}} $$ Gdy funkcja jest równomiernie rozłożona w ramach stałego zakresu.
Skalowanie standaryzacji Z $$ x' = \frac{x - μ}{σ}$$ Gdy rozkład funkcji nie zawiera skrajnych wartości odstających.
Skalowanie logarytmiczne $$ x' = log(x)$$ gdy funkcja jest zgodna z zasadami prawa potęgi.
Przycinanie Jeśli $x > max$, ustaw $x' = max$
Jeśli $x < min$, ustaw $x' = min$
gdy funkcja zawiera skrajne wartości odstające.

Ćwiczenie: sprawdzenie wiedzy

Która technika najlepiej nadaje się do normalizacji atrybutu o takim rozkładzie?

Histogram pokazujący zbiór danych o wartościach od 0 do 200 000. Liczba punktów danych stopniowo wzrasta w zakresie od 0 do 100 tys., a potem stopniowo maleje od 100 tys. do 200 tys.

Skalowanie standaryzacji Z
Punkty danych zwykle odpowiadają rozkładowi normalnemu, więc skalowanie według wartości Z spowoduje, że znajdą się one w zakresie od –3 do +3.
Skala liniowa
Przejrzyj na tej stronie dyskusje na temat technik normalizacji i spróbuj jeszcze raz.
Skalowanie logu
Zapoznaj się z dyskusją na temat technik normalizacji na tej stronie i spróbuj ponownie.
Przycinanie
Zapoznaj się z dyskusją na temat technik normalizacji na tej stronie i spróbuj ponownie.

Załóżmy, że opracowujesz model, który przewiduje wydajność centrum danych na podstawie temperatury zmierzonej wewnątrz tego centrum. Prawie wszystkie wartości temperature w Twoim zbiorze danych mieszczą się w zakresie 15–30 °C, z tymi wyjątkami:

  • Raz lub dwa razy w roku, w bardzo gorące dni, w temperature rejestruje się kilka wartości z zakresu 31–45.
  • Każdy 1000. punkt w pliku temperature ma wartość 1000, a nie rzeczywistą temperaturę.

Która z tych technik normalizacji byłaby odpowiednia w przypadku temperature?

Przytnij wartości odstające między 31 a 45, ale usuń te,które mają wartość 1000

Wartości 1000 są błędne i należy je usunąć, a nie przyciąć.

Wartości od 31 do 45 to prawidłowe punkty danych. Przycinanie może być prawdopodobnie dobrym pomysłem w przypadku tych wartości, przy założeniu, że zbiór danych nie zawiera wystarczającej liczby przykładów w tym zakresie temperatur, aby wytrenować model w celu generowania dobrych prognoz. Podczas wnioskowania pamiętaj jednak, że model przycięty przeprowadziłby w ten sposób taką samą prognozę dla temperatury 45 stopni i temperatury 35 stopni.

Uwzględnij wszystkie odstające elementy
Zapoznaj się z dyskusją na temat technik normalizacji na tej stronie i spróbuj ponownie.
Usuń wszystkie wartości odstające
Zapoznaj się z dyskusją na temat technik normalizacji na tej stronie i spróbuj ponownie.
Usuń wartości odstające z zakresu 31–45, ale przytnij wartości odstające o wartość 1000.
Zapoznaj się z dyskusją na temat technik normalizacji na tej stronie i spróbuj ponownie.