Termin wymiar jest synonimem liczby elementów w wektorze cech. Niektóre atrybuty kategorialne mają niską wymiarowość. 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 |
Jeśli cecha kategorialna ma małą liczbę możliwych kategorii, możesz ją zakodować jako słownictwo. Dzięki kodowaniu słownika model traktuje każdą możliwą wartość kategorialną jako osobną cechę. Podczas treningu model uczy się różnych wag dla każdej kategorii.
Załóżmy na przykład, że tworzysz model do przewidywania ceny samochodu na podstawie m.in. atrybutu noszącego nazwę car_color
.
Być może czerwone samochody są warte więcej niż zielone.
Ponieważ producenci oferują ograniczoną liczbę kolorów nadwozia, car_color
jest cechą wielowymiarową o niskiej wymiarowości.
Ilustracja poniżej przedstawia słownictwo (możliwe wartości) dla pola car_color
:
Ćwiczenie: sprawdź swoją wiedzę
Numery indeksu
Modele uczenia maszynowego mogą manipulować tylko liczbami zmiennoprzecinkowymi. Dlatego musisz przekonwertować każdy ciąg znaków na niepowtarzalny numer indeksu, jak pokazano na poniższej ilustracji:
Po przekonwertowaniu ciągów tekstowych na unikalne numery indeksów musisz przetworzyć dane w sposób, który pomoże modelowi poznać istotne relacje między wartościami. Jeśli dane o cechach porządkowych pozostaną w postaci indeksowanych liczb całkowitych i zostaną załadowane do modelu, model będzie traktować indeksowane wartości jako ciągłe liczby zmiennoprzecinkowe. Model uznałby wtedy, że „fioletowy” jest 6 razy bardziej prawdopodobny niż „pomarańczowy”.
Kodowanie one-hot
Kolejnym krokiem w tworzeniu słownika jest przekształcenie każdego numeru indeksu na kodowanie jednobitowe. W kodowaniu one-hot:
- Każda kategoria jest reprezentowana przez wektor (tablicę) o wielkości N, gdzie N to liczba kategorii. Jeśli np.
car_color
ma 8 możliwych kategorii, wektor one-hot reprezentującycar_color
będzie miał 8 elementów. - Dokładnie jeden z elementów wektora one-hot ma wartość 1,0; wszystkie pozostałe mają wartość 0,0.
Na przykład w tabeli poniżej pokazano kodowanie 1-hot dla każdego z tych elementów:car_color
Cecha | Czerwony | Orange | Niebieski | Żółty | Zielony | Czarny | Fioletowy | Brązowy |
---|---|---|---|---|---|---|---|---|
"Czerwony" | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
"Orange" | 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 |
"Purple" | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 |
"brązowy" | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
Do wektora cech przekazywany jest wektor jednoelementowy, a nie ciąg znaków ani numer indeksu. Model uczy się osobnego współczynnika dla każdego elementu wektora cech.
Na ilustracji poniżej widać różne przekształcenia w reprezentacji słownika:
Rozproszona reprezentacja
Cecha, której wartości są w większości równe 0 (lub puste), jest nazywana rzadką cechą. Wiele funkcji kategorialnych, np. car_color
, jest zwykle rzadkich.
Rozproszona reprezentacja oznacza przechowywanie pozycji 1,0 w wektorze rzadkim. Na przykład wektor jednoelementowy dla "Blue"
to:
[0, 0, 1, 0, 0, 0, 0, 0]
Ponieważ 1
znajduje się na pozycji 2 (liczenie zaczyna się od 0), skąpa reprezentacja powyższego wektora jednobitowego to:
2
Zwróć uwagę, że rzadka reprezentacja zajmuje znacznie mniej pamięci niż wektor 8-elementowy one-hot. Ważne: model musi trenowac na wektorze jednowymiarowym, a nie na rzadkiej reprezentacji.
Elementy odstające w danych kategorialnych
Podobnie jak dane liczbowe, dane kategorialne również zawierają wartości odstające. Załóżmy, że car_color
zawiera nie tylko popularne kolory, ale też rzadko używane kolory niestandardowe, takie jak "Mauve"
czy "Avocado"
.
Zamiast przypisywać każdemu z tych kolorów osobną kategorię, możesz je umieścić w jednej kategorii „catch-all” o nazwie poza słownictwem. Inaczej mówiąc, wszystkie kolory odbiegające od normy są grupowane w jednym zasobniku. System uczy się jednego współczynnika dla tego zasobnika z wyjątkami.
Kodowanie cech wielowymiarowych
Niektóre cechy kategorialne mają dużą liczbę wymiarów, np.:
Nazwa cechy | Liczba kategorii | Przykładowe kategorie |
---|---|---|
words_in_english | ~ 500 tys. | „happy”, „walking” |
US_postal_codes | ~42 000 | „02114”, „90301” |
last_names_in_Germany | ~850 tys. | „Schmidt”, „Schneider” |
Gdy liczba kategorii jest duża, kodowanie jednobitowe jest zwykle złym wyborem. Elementy umieszczane w innych treściach, opisane w oddzielnym module Umieszczanie, są zwykle znacznie lepszym wyborem. Wbudowane wymiary znacznie zmniejszają liczbę wymiarów, co korzystnie wpływa na modele na 2 sposoby:
- Model zwykle uczy się szybciej.
- Utworzony model zwykle szybciej wyprowadza prognozy. Oznacza to, że model ma mniejsze opóźnienie.
Kody szyfrowania (nazywane też sztuczką z kodą szyfrowania) to mniej popularny sposób na zmniejszenie liczby wymiarów.
Więcej informacji o haszowaniu