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. Cel normalizacja to przekształcenie funkcjonowanie na podobnej skali. Weźmy na przykład 2 następujące funkcje:

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

Te 2 cech mieszczą się w bardzo różnych zakresach. Normalizacja może manipulować X i Y, by obejmowały podobny zakres, np. od 0 do 1.

Normalizacja zapewnia te korzyści:

  • Pomaga modelom szybciej się skoncentrować podczas trenowania. Gdy różne cechy mają różne zakresy, metoda gradientu może „odbić się” i spowolnić konwergencję. Bardziej zaawansowane algorytmy optymalizacyjne, takie jak AdagradAdam, zapobiegają temu problemowi, zmieniając skuteczną szybkość uczenia się w czasie.
  • Pomaga modelom wyciągać lepsze prognozy. 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 jedna liczba w modelu stanie się NaN, pozostałe liczby w argumencie model w końcu zamieni się w NaN.
  • Pomaga modelowi nauczyć 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, takiej jak city population..

Rozważ te 2 funkcje:

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

Cechy A i B mają stosunkowo wąskie rozpiętości. Jednak zakres funkcji B jest 10 razy szerszy niż zakres funkcji A. Dlatego:

  • Na początku trenowania model zakłada, że cecha A jest 10 razy bardziej „ważne” niż funkcja B.
  • Trening będzie trwał dłużej niż powinien.
  • Otrzymany model może nie być optymalny.

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

Teraz weź pod uwagę 2 funkcje o większym zakresie:

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

Jeśli nie znormalizujesz cech 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 omawiamy 3 popularne metody normalizacji:

  • skalowanie liniowe
  • Skalowanie wyniku Z
  • skalowanie logów

Ta sekcja zawiera również informacje o przycinaniu. Chociaż to nieprawda normalizacji, przycinanie pozwala osłabić niesprawiedliwe cechy liczbowe zakresy, które generują lepsze modele.

Skala liniowa

Skalowanie liniowe (częściej nazywane po prostu skalowaniem) oznacza konwersję wartości zmiennoprzecinkowych z ich naturalnego zakresu na zakres standardowy, zwykle od 0 do 1 lub od -1 do +1.

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

  • Dolne i górne granice danych nie zmieniają się znacząco w czasie.
  • Cecha nie zawiera żadnych wyjątków lub jest ich niewiele, ekstremalnych.
  • Cecha jest rozłożona w przybliżeniu równomiernie w całym 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 wynoszą od 0 do 100.
  • age zawiera stosunkowo niewielki odsetek wartości odstających. Tylko około 0,3% populacji ma ponad 100 lat.
  • Chociaż niektóre grupy wiekowe są nieco lepiej reprezentowane niż inne, duża zbiór danych powinien zawierać wystarczającą liczbę przykładów 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 będzie dobrym normalizacją technika dla net_worth? Dlaczego?

Skalowanie wyniku Z

Wynik testu Z to liczba standardowych odchyleń wartości od średniej. Na przykład wartość, która jest wyższa o 2 odchylenia standardowe od średniej, ma współczynnik Z-score równy +2,0. Wartość, która jest o 1,5 odchylenia standardowego mniejszej niż średnia ma wynik Z wynoszący -1,5.

Reprezentowanie cechy za pomocą skalowania na podstawie wyniku Z oznacza przechowywanie w wektorze cech wyniku Z danej cechy. Na przykład na rysunku poniżej widać 2 histogramy:

  • Po lewej stronie klasyczny rozkład normalny.
  • Po prawej stronie ta sama dystrybucja znormalizowana za pomocą skalowania wartości Z.
Rysunek 4.  2 histogramy: oba przedstawiają rozkłady normalne o identycznym rozkładzie. Pierwszy histogram, który zawiera dane nieprzetworzone, ma średnią 200 i odchylenie standardowe 30. Drugi histogram, który zawiera wersję rozkładu Z-score pierwszego rozkładu, ma średnią równą 0 i odchylenie standardowe równe 1.
Rysunek 4. Nieprzetworzone dane (po lewej) a wynik Z (po prawej) dla normy dystrybucji danych.

Skalowanie wyniku Z jest również dobrym rozwiązaniem w przypadku danych takich jak na poniższy wykres, który ma tylko raczej niejasny rozkład normalny.

Rysunek 5.  2 histogramy o identycznym kształcie, z których każdy pokazuje stromy wzrost do plateau, a następnie stosunkowo szybki spadek, po którym następuje stopniowy zanik. 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 dwóch histogramów bardzo się różnią.
            Histogram nieprzetworzonych danych obejmuje domenę od 0 do 29 000, podczas gdy
            histogram skalowany na wyniku Z mieści się w zakresie od -1 do około +4,8
Rysunek 5. Nieprzetworzone dane (po lewej) a skalowanie wyniku Z (po prawej) dla nieklasyczny rozkład normalny.

Z-score jest dobrym wyborem, gdy dane mają rozkład normalny lub rozkład podobny do rozkładu normalnego.

Należy pamiętać, że niektóre rozkłady mogą być normalne w większości ale nadal zawierają ekstremalne odchylenia. Na przykład prawie wszystkie punkty funkcji net_worth mogą mieścić się w 3 odchyleniach standardowych, ale niektóre przykłady tej funkcji mogą być odległe od średniej o setki odchyleń standardowych. W takich sytuacjach można połączyć skalowanie wyniku Z za pomocą funkcji inną formę normalizacji (zwykle przycinanie), by obsłużyć tę sytuację.

Ćwiczenie: sprawdź swoją wiedzę

Załóżmy, że Twój model trenuje na podstawie atrybutu o nazwie height, który zawiera wzrost dorosłych w przypadku 10 milionów kobiet. Czy standaryzacja Z-score byłaby dobrą techniką normalizacji w przypadku height? Dlaczego?

Skalowanie logu

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:

  • Małe wartości parametru X mają bardzo wysokie wartości (Y).
  • Gdy wartości parametru X rosną, wartości parametru Y szybko się maleją. W efekcie wysokie wartości parametru X mają bardzo niskie wartości (Y).

Oceny filmów są dobrym przykładem rozkładu prawa energetycznego. W następujących ilustracja, uwaga:

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

Skalowanie logów zmienia rozkład, co pomaga wytrenować model i przewidywać trafniejsze prognozy.

Rysunek 6. Dwa wykresy porównujące nieprzetworzone dane i dziennik nieprzetworzonych danych.
            Wykres z nieprzetworzonych danych pokazuje w nagłówku wiele ocen użytkowników, a następnie
            długim ogonem. Wykres logów jest bardziej równomierny.
Rysunek 6. Porównanie rozkładu nieprzetworzonego z jego logem.

Drugim przykładem może być sprzedaż książek pod kątem zgodności z przepisami prawa energetycznego, ponieważ:

  • Większość opublikowanych książek sprzedaje się w bardzo niewielkiej liczbie egzemplarzy, może 100–200.
  • Niektóre książki sprzedają się w umiarkowanej liczbie, w tysiącach egzemplarzy.
  • Tylko kilka bestsellerów sprzeda się w ponad milionie egzemplarzy.

Załóżmy, że trenujesz model liniowy, by znaleźć zależność np. okładek książek na sprzedaż. Trenowanie modelu liniowego na nieprzetworzonych wartościach muszą znaleźć coś o okładkach książek, które sprzedają milion egzemplarzy to o 10 000 mocniejszych stron niż okładki książek sprzedające tylko 100 kopii. Jednakże dzięki skalowaniu wszystkich danych dotyczących sprzedaży jest to znacznie łatwiejsze. Na przykład log 100 wygląda tak:

  ~4.6 = ln(100)

a log 1 000 000 to:

  ~13.8 = ln(1,000,000)

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

Klips

Odcięcie wartości odstających to technika minimalizowania wpływu wartości skrajnych. W skrócie: treści są zwykle pisane wielkimi literami (redukuje) wartość wyników odstających do określonej maksymalnej wartości. Klipy to dziwny pomysł, a jednocześnie 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 tym wykresie widać, że ponad 99% wartości cech jest zgodne z normalnym rozkładem (w przybliżeniu średnią 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? Cóż, histogram nie jest równomierny, rozkład normalny ani prawo mocy dystrybucji danych. Co się stanie, jeśli po prostu ograniczysz lub obrzeżysz maksymalną wartość funkcji roomsPerPerson do dowolnej wartości, np. 4,0?

Wykres „roomPerPerson”, w którym wszystkie wartości mieszczą się w zakresie od 0 do 0
            4,0 Wykres ma kształt dzwonu, ale w miejscu 4,0 występuje nietypowy szczyt
Rysunek 8. Obcinanie wartości cech na poziomie 4,0.

Przycięcie wartości cechy na poziomie 4,0 nie oznacza, że model ignoruje wszystko wartości większych niż 4,0. Oznacza to, że wszystkie wartości większe niż 4,0 są teraz ustawiane na 4,0. Tak wygląda dziwne wzgórze w takcie 4,0. Pomimo tego wzgórza skalowany zestaw funkcji jest teraz bardziej przydatny niż pierwotne dane.

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

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

  • Z-score większy niż 3 zostanie przycięty do wartości 3.
  • Przytnij Z wynik mniejszy od -3, aby otrzymać dokładnie -3.

Przycinanie zapobiega nadmiernemu indeksowaniu przez model nieistotnych danych. Pamiętaj jednak: Niektóre wyjątki są istotne, więc dobrze je wykorzystaj.

Podsumowanie technik normalizacji

Technika normalizacjiFormułaKiedy używać
Skala liniowa $$ x' = \frac{x - x_{min}}{x_{max} - x_{min}} $$ Gdy cecha jest równomiernie rozłożona między stały zakres.
Skalowanie wyniku 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.
Klips 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 metoda najlepiej nadaje się do normalizacji cechy zgodnie z tą rozkładem?

Histogram przedstawiający klaster danych z wartościami z zakresu od 0 do 200 tys. Liczba punktów danych stopniowo wzrasta w zakresie od 0 do 100 tys., a potem stopniowo maleje od 100 tys. do 200 tys.

Skalowanie wyniku Z
Punkty danych są zwykle zgodne z normalnym rozkładem, więc wynik Z spowoduje to umieszczenie ich w zakresie od –3 do +3.
Skala liniowa
Zapoznaj się z dyskusją na temat technik normalizacji na tej stronie i spróbuj ponownie.
Skalowanie logarytmiczne
Zapoznaj się z dyskusją na temat technik normalizacji na tej stronie i spróbuj ponownie.
Przycinanie
na tej stronie omawiamy techniki normalizacji, i spróbuj jeszcze raz.

Załóżmy, że pracujesz nad modelem, który prognozuje produktywność na podstawie temperatury mierzonej wewnątrz centrum danych. 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 przedziału 31–45.
  • Co 1000 punktów w grze temperature jest ustawiany na 1000 a nie rzeczywistej temperatury.

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

Wytnij wartości odstające między 31 a 45, ale usuń wartości odstające o 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. W przypadku tych wartości dobrym pomysłem jest przycinanie, przy założeniu, zbiór danych nie zawiera wystarczającej liczby przykładów w tym zakresie temperatur, aby wytrenować model do wyliczania rzetelnych prognoz. Jednak podczas wnioskowania zauważ, że model przycięty również dostarczyłby taką samą prognozę dla temperatura 45 stopni, a temperatura 35.

Uwzględnij wszystkie odstające elementy
na tej stronie omawiamy techniki normalizacji, i spróbuj jeszcze raz.
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 przedziału 31–45, ale przytnij wyników odstających o wartości 1000.
Zapoznaj się z dyskusją na temat technik normalizacji na tej stronie i spróbuj ponownie.