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 Adagrad i Adam, 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ż funkcjaB
. - 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 C
i D
, 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 nazwienet_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.
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.
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 nazwieheight
, 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 parametruY
szybko się maleją. W efekcie wysokie wartości parametruX
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ą wysokieY
). - Większość filmów ma bardzo mało ocen użytkowników. (Wysokie wartości parametru
X
mają niskieY
).
Skalowanie logów zmienia rozkład, co pomaga wytrenować model i przewidywać trafniejsze prognozy.
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:
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?
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 normalizacji | Formuła | Kiedy 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
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
?
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.