Dane liczbowe: normalizacja

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ż funkcja B.
  • 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 nazwie net_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.
. 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.  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
Rysunek 5. Nieprzetworzone dane (po lewej) a skalowanie wyniku Z (po prawej) dla nieklasyczny rozkład normalny.

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 nazwie height, 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 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 przepisów prawa. W następujących ilustracja, uwaga:

  • Niewiele 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 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ę
Rysunek 7. Zasadniczo normalne, ale nie całkiem normalne.

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.
Rysunek 8. Wycinanie wartości cech przy 4,0.

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 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 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ę

Która metoda najlepiej nadaje się do normalizacji cechy zgodnie z tą rozkładem?

Histogram przedstawiający zbiór danych o wartościach od 0 do 0
          200 000. Liczba punktów danych stopniowo zwiększa się w zakresie
          od 0 do 100 tys., a potem stopniowo spada z 100 tys. do
          200 000.

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
na tej stronie omawiamy techniki normalizacji, i spróbuj jeszcze raz.
Skalowanie logu
na tej stronie omawiamy techniki normalizacji, i spróbuj jeszcze raz.
Klips
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 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ą nagrywane w formacie temperature.
  • Co 1000 punktów w grze temperature jest ustawiany na 1000 a nie rzeczywistej temperatury.

Która technika normalizacji byłaby uzasadniona temperature?

Wytnij wartości odstające z przedziału 31–45, ale usuń te odstające za pomocą wartość 1000

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.

Uwzględnij wszystkie odstające elementy
na tej stronie omawiamy techniki normalizacji, i spróbuj jeszcze raz.
Usuń wszystkie odstające
na tej stronie omawiamy techniki normalizacji, i spróbuj jeszcze raz.
Usuń wartości odstające z przedziału 31–45, ale przytnij wyników odstających o wartości 1000.
na tej stronie omawiamy techniki normalizacji, i spróbuj jeszcze raz.