Po przeanalizowaniu danych za pomocą technik statystycznych i wizualizacji przekształć dane w sposób, który umożliwi lepsze trenowanie modelu co osłabia efektywność przekazu. 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. - Cecha
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 następujące korzyści:
- Pomaga modelom szybciej łączyć się podczas trenowania. Gdy różne obiekty mają różne zakresy, gradient gradientowy może „odrzucenie” i wolną zbieżność. Jednak bardziej zaawansowani optymalizatorzy, tacy jak Adagrad i Adam chronią przed tym problemem przez i zmieniania efektywnego tempa uczenia się w miarę upływu czasu.
- Pomaga modelom wyciągać lepsze prognozy. Gdy różne cechy mają różne zakresy, wynik model może generować nieco mniej przydatne prognozy.
- Pomaga uniknąć „pułapki NaN”, gdy wartości cech są bardzo wysokie.
NaN to skrót od
nie jest liczbą. Gdy wartość w modelu przekracza
limit precyzji liczby zmiennoprzecinkowej, system ustawia wartość na
NaN
pewnej liczby. 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 poświęca zbyt wiele uwagi do cech o szerokim zakresie i niewystarczającej uwagi do wąskich zakresów.
Zalecamy normalizację funkcji liczbowych obejmujących wyraźnie
różnych przedziałów (np. wiek i dochody).
Zalecamy również normalizację pojedynczej funkcji liczbowej, która obejmuje szeroki zakres,
na przykład city population.
Weź pod uwagę 2 rzeczy:
- 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 funkcja B
's
rozpiętość jest 10 razy szerszy niż rozpiętość cechy A
. Dlatego:
- Na początku trenowania model zakłada, że cecha
A
jest 10 razy bardziej „ważne” niż funkcjaB
. - Trenowanie trwa dłużej niż powinno.
- Otrzymany model może nie być optymalny.
Ogólne szkody wynikające z braku normalizacji będą stosunkowo niewielkie. jednak nadal zalecamy normalizowanie cech A i B do tej samej skali, np. od -1,0 do +1,0.
Rozważmy teraz 2 cechy o większej rozbieżności zakresów:
- Najniższa wartość cechy C to -1, a najwyższa to +1.
- Najniższa wartość cechy
D
to +5000, a najwyższa to +1 000 000 000.
Jeśli nie znormalizujesz cech C
i D
, model prawdopodobnie
być nieoptymalne. Co więcej, szkolenie potrwa znacznie dłużej,
dochodzą do siebie, a nawet nie docierają w ogóle.
W tej sekcji opisujemy 3 popularne metody normalizacji:
- skalowanie liniowe
- Skalowanie wyniku Z
- skalowanie logów
Ta sekcja dodatkowo obejmuje przycinanie. Chociaż to nieprawda normalizacji, przycinanie pozwala osłabić niesprawiedliwe cechy liczbowe zakresy, które generują lepsze modele.
Skala liniowa
Skalowanie liniowe (częściej skróconej tylko do skalowania) oznacza konwertowanie wartości zmiennoprzecinkowych z metody ich naturalny zakres do zakresu standardowego – zwykle od 0 do 1 lub -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.
- Obiekt jest mniej więcej równomierny w całym swoim zakresie. Histogram pokazuje mniej więcej słupki w przypadku większości grup wiekowych.
Załóżmy, że człowiek age
jest funkcją. Skalowanie liniowe to dobra normalizacja
technika dla 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% ma ponad 100 osób.- 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.
Sprawdź swoją wiedzę
Załóżmy, że Twój model ma cechę o nazwienet_worth
, która przechowuje sieć
dla wielu osób. Czy skalowanie liniowe będzie dobrym normalizacją
technika dla net_worth
? Dlaczego?
Skalowanie wyniku Z
Wynik Z to liczba odchyleń standardowych, których wartość pochodzi od średniej. Na przykład wartość, która jest o 2 odchylenia standardowe większe od średniej ma wynik Z +2,0. Wartość, która jest o 1,5 odchylenia standardowego mniejsze niż średnia ma wynik Z wynoszący -1,5.
Reprezentowanie cechy za pomocą skalowania do wyniku Z oznacza zapisanie jej wynik Z w wektorze cech. Na przykład na poniższym rysunku pokazano dwa histogramy:
- Po lewej stronie znajduje się klasyczny rozkład normalny.
- Po prawej stronie ten sam rozkład jest normalizowany przez skalowanie wyniku Z.
![Rysunek 4. Dwa histogramy: oba przedstawiają rozkład normalny z wartościami
i identycznego rozkładu. Pierwszy histogram zawierający nieprzetworzone dane
ma średnią 200 i odchylenie standardowe 30. Druga
histogram, który zawiera wersję wyniku Z pierwszego
ma średnią wartość 0 i odchylenie standardowe 1.](https://developers.google.cn/static/machine-learning/crash-course/images/z-scaling_classic.png?authuser=6&hl=pl)
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. Dwa histogramy o identycznym kształcie, każdy stromy
wznosi się na płaskowyż, potem stosunkowo szybki zejście,
stopniowego rozpadu. Jeden histogram ilustruje
rozkład nieprzetworzonych danych; drugi histogram pokazuje
rozkład nieprzetworzonych danych po znormalizowaniu za pomocą skalowania wyniku 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](https://developers.google.cn/static/machine-learning/crash-course/images/z-scaling-non-classic-normal-distribution.png?authuser=6&hl=pl)
Wynik Z jest dobrym wyborem, gdy dane mają normalny rozkład lub jest bardzo podobny do normalnego rozkładu.
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 w funkcji net_worth
mogą pasować do 3 odchyleń standardowych:
ale kilkoma przykładami tej funkcji mogą być setki odchyleń standardowych
od średniej. 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 funkcję o nazwieheight
, która trzyma dorosłego
wysokości 10 milionów kobiet. Czy skalowanie wyniku Z jest dobrym normalizacją?
technika dla height
? Dlaczego?
Skalowanie logu
Skalowanie logu oblicza logarytm nieprzetworzonej wartości. Teoretycznie logarytm może być dowolną podstawą; w praktyce skalowanie logu czasu 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 przepisów prawa. W następujących ilustracja, uwaga:
- Niewiele 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 jest sprzedaż książek zgodna z dystrybucją prawa energetycznego, ponieważ:
- Większość opublikowanych książek sprzedaje się w niewielkich egzemplarzach, czasem nawet 1–200.
- Niektóre książki sprzedają się w umiarkowanej liczbie egzemplarzy – w tysiącach.
- 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. Możesz sobie wyobrazić, że możesz sobie wyobrazić, że okładka bestsellera będzie 3 razy mocniejszy (jakieś) niż miniaturowa okładka książki.
Klips
Clipping to technika pozwalająca i minimalizować wpływ skrajnych ekstremów. 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.
Na przykład wyobraźmy sobie zbiór danych zawierający cechę o nazwie roomsPerPerson
,
czyli liczbę pomieszczeń (łączną liczbę sal
według liczby domowników) dla różnych domów. 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 ta zawiera jednak
kilka wyjątków, niektóre ekstremalnych:
![Rysunek 7. Wykres „roomPerPerson”, w którym niemal wszystkie wartości
są grupowane od 0 do 4, ale jest tam bardzo długi ogon
aż do 17 pokoi na osobę](https://developers.google.cn/static/machine-learning/crash-course/images/PreClipping.png?authuser=6&hl=pl)
Jak możesz zminimalizować wpływ tych skrajnych odchylenia? Cóż,
histogram nie jest równomiernym rozkładem, rozkładem normalnym ani prawem mocy
dystrybucji danych. A co, jeśli po prostu ograniczysz lub przyciśniesz maksymalną wartość
roomsPerPerson
ma dowolną wartość, np.4,0?
![Wykres „roomPerPerson”, w którym wszystkie wartości mieszczą się w zakresie od 0 do 0
4,0 Fabuła ma kształt dzwonka, ale z kolei na wykresie 4,0 występuje nietypowe wzgórze.](https://developers.google.cn/static/machine-learning/crash-course/images/Clipping.png?authuser=6&hl=pl)
Przycięcie wartości cechy na poziomie 4,0 nie oznacza, że model ignoruje wszystko wartości większych niż 4,0. Wskazuje natomiast, że wszystkie wartości, które były większe, niż 4.0. Tak wygląda dziwne wzgórze w takcie 4,0. Pomimo przeskalowany zestaw obiektów jest teraz bardziej przydatny niż oryginalne dane.
Zaczekaj chwilę. Czy można naprawdę ograniczyć wszystkie wartości odstające do dowolnej górnej próg udziału? Podczas trenowania modelu – tak.
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:
- Przytnij wyniki Z większej niż 3, aby otrzymać dokładnie 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 cech nie zawiera skrajnie odstających |
Skalowanie logu | $$ x' = log(x)$$ | Gdy cecha jest zgodna z prawem potęgowym. |
Klips | Jeśli $x > max$, ustaw $x' = maks. USD Jeśli $x < min$, ustaw $x' = min$ |
Gdy cecha zawiera ekstremalne odchylenia. |
Ćwiczenie: sprawdź swoją wiedzę
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 jesienią
od 15 do 30 stopni Celsjusza, z tymi wyjątkami:
- Raz lub dwa w roku, w bardzo upalne dni, kilka wartości pomiędzy
31 i 45 są rejestrowane w trybie
temperature
. - Co 1000 punkt w grze
temperature
jest ustawiany na 1000 a nie rzeczywistej temperatury.
Która technika normalizacji byłaby uzasadniona
temperature
?
Wartości 1000 to błędy i należy je usunąć, a nie przycięty.
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.