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
:
Ćwiczenie: sprawdź intuicję
"Red"
nie jest liczbą zmiennoprzecinkową. Ty
musi przekonwertować ciągi tekstowe takie jak "Red"
na liczby zmiennoprzecinkowe.
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ę:
Sprawdź swoją intuicję
"Black"
(numer indeksu 5) musi być 5 razy bardziej przydatny.
do modelu niż "Orange"
(liczba indeksu 1).
"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:
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.