Termin wymiar jest synonimem liczby elementów w wektorze 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 |
Jeśli cecha kategorialna ma małą liczbę możliwych kategorii, możesz ją zakodować jako słownictwo. W przypadku kodowania słownictwa 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
.
Może czerwone samochody są warte więcej niż zielone samochody.
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ą intuicję
"Red"
nie jest liczbą zmiennoprzecinkową. Musisz przekonwertować ciągi znaków, takie jak "Red"
, na liczby zmiennoprzecinkowe.
Numery indeksu
Modele uczenia maszynowego mogą manipulować tylko liczbami zmiennoprzecinkowymi. Dlatego musisz przekonwertować każdy ciąg na unikalny numer indeksu, jak na tej ilustracji:
Ćwiczenie: sprawdź swoją intuicję
"Black"
(indeks 5) jest 5 razy bardziej istotny dla modelu niż "Orange"
(indeks 1).
"Black"
(numer indeksu 5) jest 5 razy bardziej istotny dla modelu niż "Orange"
(numer indeksu 1).
Kodowanie One-got
Kolejnym krokiem w tworzeniu słownika jest przekształcenie każdego numeru indeksu na kodowanie jednobitowe. W kodyfikacji jednobitowej:
- 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, to wektor reprezentujący jeden gorący wektor będzie miał 8 elementów. - Dokładnie jeden z elementów wektora one-hot ma wartość 1,0. Pozostałe elementy mają wartość 0,0.
Na przykład w tabeli poniżej pokazano kodowanie 1-hot dla każdego z tych elementów:car_color
Funkcja | 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 |
"Brown" | 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.
Ilustracja poniżej przedstawia różne przekształcenia w reprezentacji słownika:
Rozproszona reprezentacja
Cecha, której wartości są głównie równe 0 (lub puste), jest nazywana rzadką cechą. Wiele funkcji kategorialnych, np. car_color
, jest zwykle rzadkich.
Reprezentacja rozproszona oznacza przechowywanie pozycji 1.0 w rozproszonym wektorze. 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 jednowartościowego to:
2
Zwróć uwagę, że rzadka reprezentacja zajmuje znacznie mniej pamięci niż wektor 8-elementowy one-hot. Ważne jest, aby model trenował 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. te wymienione w tabeli poniżej:
Nazwa cechy | Liczba kategorii | Przykładowe kategorie |
---|---|---|
words_in_english | ~ 500 000 | „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 wstawiane, opisane w oddzielnym module Elementy wstawiane, 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.
- Zwykle taki model szybciej generuje prognozy. Oznacza to, że model ma mniejsze opóźnienie.
Kody szyfrowania (zwane też sztuczką z kodą szyfrowania) to mniej popularny sposób na zmniejszenie liczby wymiarów.