Dane kategorialne: słownictwo i kodowanie jednorazowe

Termin wymiar jest synonimem liczby elementów w wektor cech. Niektóre cechy kategorialne są mało wymiarowe. Na przykład:

Nazwa cechy Liczba kategorii Przykładowe kategorie
snowed_today 2 Prawda, fałsz
skill_level 3 Początkujący, praktykujący, ekspert
season 4 zima, wiosna, lato, jesień
day_of_week 7 poniedziałek, wtorek, środa
planeta 8 Merkury, Wenus, Ziemia

Gdy cecha kategorialna ma małą liczbę możliwych kategorii, można zakodować go jako słownik. Dzięki kodowaniu słownemu model traktuje każdy potencjalnej wartości kategorialnej jako oddzielną cechę. Podczas trenowania zapamiętuje różne wagi dla każdej kategorii.

Załóżmy na przykład, że tworzysz model, który prognozuje cenę samochodu, częściowo w obiekcie kategorialnym o nazwie car_color. Może czerwone samochody są warte więcej niż zielone. Producenci oferują ograniczoną liczbę kolorów zewnętrznych, dlatego car_color to czyli niskowymiarowej cechy kategorialnej. Na poniższej ilustracji zaproponowano terminologię (możliwe wartości) dla car_color:

Rysunek 1. Każdy kolor z palety jest reprezentowany jako osobny
      funkcji. Oznacza to, że każdy kolor jest osobną cechą w wektorze cech.
      Na przykład „Czerwony” to funkcja, „pomarańczowy” to oddzielna funkcja,
      i tak dalej.
Rysunek 1. Unikalna cecha każdej kategorii.

Ćwiczenie: sprawdź intuicję

Prawda czy fałsz: model systemów uczących się może trenować bezpośrednio nieprzetworzone ciągi znaków, takie jak "Red" i "Black", bez do skonwertowania tych wartości na wektory liczbowe.
Prawda
Podczas trenowania model może modyfikować tylko liczby zmiennoprzecinkowe. Ciąg "Red" nie jest liczbą zmiennoprzecinkową. Ty musi przekonwertować ciągi tekstowe takie jak "Red" na liczby zmiennoprzecinkowe.
Fałsz
Model systemów uczących się może trenować tylko na funkcjach z jest wartością zmiennoprzecinkową, którą musisz przekształcić na wartości zmiennoprzecinkowych przed trenowaniem.

Numery indeksu

Modele systemów uczących się mogą modyfikować tylko liczby zmiennoprzecinkowe. Dlatego musisz przekonwertować każdy ciąg na unikalny numer indeksu, jak w następującą ilustrację:

Rysunek 2.  Każdy kolor jest powiązany z unikalną liczbą całkowitą. Dla:
      przykład: „Czerwony” jest powiązane z liczbą całkowitą 0 „pomarańczowy” z
      liczba całkowita 1 i tak dalej.
Rysunek 2. Funkcje indeksowane.

Sprawdź swoją intuicję

Czy model powinien trenować bezpośrednio na wyświetlanych numerach indeksu na ilustracji 2?
Tak
Jeśli model wytrenowany na liczbach indeksu, nieprawidłowo traktować każdy z nich jako wartość liczbową i rozważyć "Black" (numer indeksu 5) musi być 5 razy bardziej przydatny. do modelu niż "Orange" (liczba indeksu 1).
Nie
Model nie powinien trenować na liczbach indeksu. Gdyby tak było, model traktowałby każdy numer indeksu jako wartość liczbową i traktować "Black" (numer indeksu 5) za 5 razy bardziej istotne dla modelu niż "Orange". (numer indeksu 1).

Kodowanie One-got

Następnym krokiem budowania słownika jest przekonwertowanie każdego numeru indeksu na szybkiego kodowania. W przypadku kodowania szybko:

  • Każda kategoria jest reprezentowana przez wektor (tablica) N elementów, przy czym N to liczba kategorii. Jeśli na przykład car_color ma 8 możliwych wartości, , to wektor gorący będzie miał osiem elementów.
  • Dokładnie jeden z elementów w wektorze jednorodnym ma wartość 1,0; wszystkie pozostałe elementy mają wartość 0,0.

Na przykład w tabeli poniżej znajdziesz kodowanie jednorazowe dla każdego języka car_color:

Funkcja Czerwony Orange Niebieski Żółty Zielony Czarny Fioletowy Brązowy
„Czerwony” 1 0 0 0 0 0 0 0
"Pomarańczowy" 0 1 0 0 0 0 0 0
„Niebieski” 0 0 1 0 0 0 0 0
„Żółty” 0 0 0 1 0 0 0 0
„Zielony” 0 0 0 0 1 0 0 0
"Czarny" 0 0 0 0 0 1 0 0
„Fioletowy” 0 0 0 0 0 0 1 0
„Brązowy” 0 0 0 0 0 0 0 1

Jest to wektor 1 gorąca, a nie ciąg znaków czy numer indeksu, który jest przekazywany do wektora cech. Model uczy się oddzielnej wagi dla każdego elementu wektora cech.

Na ilustracji poniżej przedstawiono różne przekształcenia reprezentacja słownika:

Rysunek 3.  Schemat kompleksowego procesu mapowania kategorii
      wektory cech. Na schemacie cechy wejściowe są oznaczone kolorami żółtymi,
      „pomarańczowy”, „niebieski” i „niebieski” po raz drugi.  System używa zapisanego
      słownictwo („czerwony” to 0, „pomarańczowy” to 1, „niebieski” to 2, „żółty” to 3 oraz
      itd.), aby zmapować wartość wejściową na identyfikator. W ten sposób system mapuje kolor „żółty”,
      „pomarańczowy”, „niebieski” i „niebieski” 3, 1, 2, 2. Następnie system dokonuje konwersji
      do jednogorącego wektora cech. Na przykład w przypadku systemu
      z ośmioma możliwymi kolorami, wartość 3 zmienia się w 0, 0, 0, 1, 0, 0, 0, 0.
Rysunek 3. Pełny proces mapowania kategorii na wektory cech.

Rzadka reprezentacja

Cecha, której wartości mają zazwyczaj wartość zero (lub są puste), nosi nazwę funkcji rozproszonej. Wiele funkcje kategorialne, takie jak car_color, są zwykle uboczne. Rzadka reprezentacja oznacza przechowywanie pozycji z 1,0 w rozproszonym wektorze. Na przykład jeden gorący wektor dla zmiennej "Blue" to:

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

Ponieważ 1 jest na pozycji drugiej (po rozpoczęciu liczenia od 0), funkcja rozproszona reprezentacja poprzedniego, gorącego wektora to:

2

Zauważ, że rozproszona reprezentacja wykorzystuje znacznie mniej pamięci niż ośmioelementowy, jeden gorący wektor. Co ważne, model musi wytrenować na reprezentacji rozproszonej, a nie rozproszonej.

Wartości odstające w danych kategorialnych

Podobnie jak w przypadku danych liczbowych dane kategorialne zawierają też wartości odstające. Załóżmy, że car_color zawiera nie tylko popularne kolory, ale też niektóre rzadko używane kolory odstające, takie jak "Mauve" lub "Avocado". Zamiast przypisywać każdemu z tych kolorów odstających odrębną kategorię, możesz umieścić je w jednym „uniwersalnym”, kategoria o nazwie poza słownikiem (OOV). Innymi słowy, wszystkie kolory odstające są połączone grupy wyników odstających od reszty. System uczy się jednej wagi dla tego segmentu odstających.

Kodowanie wysokowymiarowych cech kategorialnych

Niektóre cechy kategorialne mają dużą liczbę wymiarów, np. w poniższej tabeli:

Nazwa cechy Liczba kategorii Przykładowe kategorie
words_in_english ok. 500 000 „szczęśliwy”, „spacerujący”
US_postal_codes Ok. 42 000 „02114”, „90301”
last_names_in_Germany Ok. 850 000 „Schmidt”, „Schneider”

Jeśli liczba kategorii jest duża, jednorazowe kodowanie nie jest dobrym rozwiązaniem. Wektory dystrybucyjne wyszczególnione w osobnym wierszu Moduł reprezentacji właściwościowych jest zwykle to znacznie lepszy wybór. Umieszczanie znacznie zmniejsza liczbę Wymiary, które przynoszą modelom 2 ważne korzyści:

  • Model zwykle trenuje szybciej.
  • Zwykle taki model szybciej generuje prognozy. Oznacza to, że model ma mniejsze opóźnienie.

Haszowanie (nazywane też szyfrowaniem). trik) to mniej popularny sposób zmniejszania liczby wymiarów.