Reprezentacja: czyszczenie danych

Jabłka wytwarzają mieszankę dużych ilości owoców i robaków. Mimo to jabłka w ekskluzywnych sklepach spożywczych mają w pełni doskonałe wyniki. Między sadem a sklepem spożywczym ktoś poświęca dużo czasu na usuwanie złych jabłek lub rzucanie wosku na te, które można uratować. Jako inżynier systemów uczących się będziesz poświęcać mnóstwo czasu na rozpowszechnianie złych przykładów i czyszczenie tych, które można odzyskać. Nawet kilka „złych jabłek” może zepsuć ogromny zbiór danych.

Skalowanie wartości cech

Skalowanie oznacza przekształcanie wartości cech w postaci liczby zmiennoprzecinkowej z ich naturalnego zakresu (np. od 100 do 900) na zakres standardowy (na przykład od 0 do 1 lub od -1 do +1). Jeśli zestaw funkcji zawiera tylko 1 funkcję, skalowanie nie daje żadnych praktycznych korzyści. Jeśli jednak zestaw funkcji zawiera wiele funkcji, skalowanie cech zapewnia te korzyści:

  • Ułatwia szybsze zbieganie się w stronę gradientu.
  • Pomaga uniknąć „pułapki NaN”, w której jedna liczba w modelu staje się NaN (np. gdy wartość przekroczy limit precyzji podczas trenowania), a z powodu działań matematycznych każda inna liczba w modelu również staje się NaN.
  • Pomaga modelowi poznać odpowiednie wagi dla każdej cechy. Bez skalowania cech model będzie poświęcał zbyt dużą uwagę na cechy o szerszym zakresie.

Nie musisz nadawać każdej cechy zmiennoprzecinkowej dokładnie tej samej skali. Nic strasznego się nie stanie, jeśli Cecha A zostanie zmieniona od -1 do +1, a cecha B – z -3 na +3. Jednak model źle zareaguje, jeśli Cecha B zostanie przeskalowana z 5000 do 100 000.

Obsługa ekstremalnych odchyleń

Poniższy wykres przedstawia funkcję o nazwie roomsPerPerson ze zbioru danych California Housing. Wartość roomsPerPerson została obliczona przez podzielenie łącznej liczby pokojów na danym obszarze przez liczbę ludności tego obszaru. Figura pokazuje, że na zdecydowanej większości obszarów Kalifornii na osobę przypada jedno lub dwa sale. Spójrzmy jednak na oś X.

Wykres z pokojami na osobę, w którym prawie wszystkie wartości są grupowane od 0 do 4, ale dochodzi do 55 pokoi na osobę z bardzo długim ogonem

Rysunek 4. Duże ostre ogony.

Jak można zminimalizować wpływ tych ekstremalnych odchyleń? Jednym ze sposobów jest rejestrowanie każdej wartości:

Wykres (roomsPerPerson), w którym 99% wartości mieści się w zakresie od 0,4 do 1,8, ale nadal jest długi ogon, który prowadzi do wartości 4,2 (mniej więcej).

Rysunek 5. W przypadku skali logarytmicznej pozostaje tylko ogon.

Skalowanie logów działa trochę lepiej, ale zawiera też wiele wartości odstających. Wybierzmy kolejną metodę. A co, jeśli po prostu „ograniczymy” lub „przycinamy” maksymalną wartość roomsPerPerson do dowolnej wartości, np.4,0?

Wykres RoomPerPerson, na którym wszystkie wartości mieszczą się w przedziale od -0,3 do 4,0. Historia jest w kształcie dzwonu, ale w punkcie 4,0 jest nietypowe wzgórze.

Rysunek 6. Przycinanie wartości cech na poziomie 4,0

Skrócenie wartości cechy do 4,0 nie oznacza, że ignorujemy wszystkie wartości większe niż 4,0. Oznacza to raczej, że wszystkie wartości powyżej 4,0 stają się 4,0. To wyjaśnia zabawne wzgórze w punkcie 4,0. Pomimo takich wzrostów skalowany zbiór cech jest teraz bardziej przydatny niż oryginalne dane.

Podział

Na wykresie poniżej widać względną częstość występowania domów w różnych szerokościach geograficznych w Kalifornii. Zwróć uwagę na grupowanie. Los Angeles znajduje się na szerokości geograficznej 34, a San Francisco – mniej więcej 38.

Działka domy na szerokość geograficzną. Rysunek jest bardzo nieregularny. Wokół szerokości geograficznej 36 znajdują się doldum, a wokół szerokości 34 i 38 ogromne wzrosty.

Rysunek 7. Liczba domów na szerokość geograficzną.

W zbiorze danych latitude jest wartością zmiennoprzecinkową. Jednak nie ma sensu przedstawiać w naszym modelu funkcji latitude jako funkcji zmiennoprzecinkowej. Wynika to z tego, że między wartościami szerokości geograficznej a wartościami mieszkań nie występuje relacja liniowa. Na przykład domy na szerokości 35 nie są \(\frac{35}{34}\) droższe (i tańsze) niż domy na szerokości 34. Mimo to poszczególne szerokości prawdopodobnie dość dobrze nadają się do prognozowania wartości domu.

Aby zwiększyć przydatność szerokości geograficznej, podzielmy je na „biny” zgodnie z tym:

Działka domy na szerokość geograficzną. Wykres

Rysunek 8. Podział wartości.

Zamiast jednej cechy zmiennoprzecinkowej wprowadziliśmy 11 różnych cech logicznych (LatitudeBin1, LatitudeBin2, ..., LatitudeBin11). Zastosowanie 11 osobnych cech jest nieco niesprawne, więc połączmy je w jeden wektor 11-elementowy. Umożliwi nam to odzwierciedlenie szerokości 37,4 w następujący sposób:

[0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0]

Dzięki powiązywaniu nasz model może teraz uczyć się zupełnie różnych wag dla każdej szerokości geograficznej.

Przeglądanie

Do tej pory zakładaliśmy, że wszystkie dane używane do trenowania i testowania są wiarygodne. W rzeczywistości wiele przykładów w zbiorach danych jest nierzetelnych z co najmniej jednego z tych powodów:

  • Pominięte wartości. Załóżmy na przykład, że ktoś zapomniał wpisać wiek domu.
  • Zduplikowane przykłady. Serwer mógł na przykład przez pomyłkę przesłać 2 razy te same logi.
  • Złe etykiety. Załóżmy na przykład, że ktoś błędnie oznaczył zdjęcie dębu jako klon.
  • Nieprawidłowe wartości cech. np. wpisując dodatkową cyfrę lub wystawiony na słońcu termometr.

Po wykryciu nieprawidłowych przykładów zwykle można je „naprawić”, usuwając ze zbioru danych. Do wykrywania pominiętych wartości lub zduplikowanych przykładów możesz napisać prosty program. Wykrywanie nieprawidłowych wartości cech lub etykiet może być znacznie trudniejsze.

Oprócz wykrywania nieprawidłowych poszczególnych przykładów musisz też wykrywać nieprawidłowe dane w formie zbiorczej. Histogramy to świetny mechanizm wizualizacji danych zbiorczych. Pomocna może też być analiza statystyk takich jak:

  • Wartości maksymalne i minimalne
  • Średnia i mediana
  • Odchylenie standardowe

Rozważ wygenerowanie list najczęstszych wartości obiektów dyskretnych. Na przykład liczba przykładów z polem country:uk powinna być zgodna z oczekiwaną liczbą. Czy język language:jp powinien być na pewno najbardziej powszechnym językiem w Twoim zbiorze danych?

Poznaj swoje dane

Przestrzegaj tych reguł:

  • Zastanów się, jak Twoim zdaniem powinny wyglądać Twoje dane.
  • Sprawdź, czy dane spełniają te oczekiwania (lub czy możesz wyjaśnić, dlaczego tak nie jest).
  • Dokładnie sprawdź, czy dane treningowe są zgodne z innymi źródłami (np. panelami).

Traktuj dane z taką rozwagą, jak w przypadku kodu o znaczeniu krytycznym. Dobre systemy uczące się opierają się na dobrych danych.

Informacje dodatkowe

Reguły systemów uczących się, faza systemów uczących się, etap II: inżynieria funkcji