Robocikowo>ROBOCIKOWO
Dane

One-Hot

AktywnyOpublikowany
Sposób kodowania zmiennych kategorycznych jako binarnych wektorów z jedną jedynką (hot) i resztą zer; eliminuje fałszywą relację porządku między kategoriami.
Kluczowa innowacja
Reprezentacja zmiennej kategorycznej jako binarnego wektora o długości równej liczbie klas, w którym dokładnie jeden element ma wartość 1, a pozostałe 0 — co eliminuje fałszywą relację porządku obecną w kodowaniu liczbami całkowitymi.
Kategoria
Dane
Poziom abstrakcji
Primitive
Poziom operacji
Dane
Zastosowania
Reprezentacja etykiet klas w klasyfikacji wieloklasowej (target dla cross-entropy)Kodowanie cech kategorycznych w danych tabelarycznychReprezentacja tokenów w klasycznych modelach NLP (n-gramy, bag-of-words)Wejście do warstwy embedding (logicznie, choć w praktyce realizowane jako lookup)Reprezentacja akcji w uczeniu ze wzmocnieniem dla dyskretnych przestrzeni akcjiKodowanie stanu w automatach skończonych (one-hot state machines w cyfrowej elektronice)

Jak działa

Niech zbiór możliwych kategorii ma rozmiar K. Każdej kategorii przypisuje się unikalny indeks i ∈ {0, …, K−1}. Wartość kategoryczna jest następnie reprezentowana jako wektor v ∈ {0,1}^K, w którym v[i] = 1, a v[j] = 0 dla j ≠ i. W praktyce uzyskuje się to przez wybór i-tego wiersza macierzy jednostkowej I_K. W bibliotekach takich jak scikit-learn realizuje to OneHotEncoder, w pandas — get_dummies, a w PyTorch/TensorFlow — funkcje one_hot. Dla K bardzo dużych (np. słowników w NLP) one-hot często nie jest materializowany jawnie — operacja mnożenia macierzy wag W przez wektor one-hot redukuje się do indeksowania (embedding lookup), co jest podstawową optymalizacją w warstwach embedding.

Rozwiązany problem

Eliminuje fałszywą relację porządku i nierównych odległości, jaką wprowadza zakodowanie kategorii liczbami całkowitymi (np. „czerwony=0, zielony=1, niebieski=2" sugerowałoby, że niebieski jest dwa razy bardziej oddalony od czerwonego niż zielony). Pozwala modelom liniowym i sieciom neuronowym poprawnie traktować kategorie nominalne.

Implementacja

Pułapki implementacyjne
Wybuch wymiarowości przy dużym KWysoka

Dla słowników rzędu 10⁵–10⁶ (NLP) gęsta materializacja one-hot jest niepraktyczna pamięciowo i numerycznie.

Rozwiązanie:Używaj reprezentacji rzadkiej (scipy.sparse) lub warstw embedding (lookup zamiast mnożenia).
Brak relacji semantycznych między kategoriamiŚrednia

Wszystkie wektory są równie odległe — model nie ma żadnej informacji a priori o podobieństwie kategorii.

Rozwiązanie:Tam gdzie ważna jest semantyka (NLP, kategoryczne hierarchie), zastąp embeddingami uczonymi end-to-end lub wstępnie wytrenowanymi.
Współliniowość w modelach liniowychŚrednia

Suma kolumn one-hot jest stale równa 1, co prowadzi do współliniowości z wyrazem wolnym (intercept) w regresji.

Rozwiązanie:Stosuj dummy encoding (drop_first=True) — pomijaj jedną kategorię referencyjną.
Niespójność słownika train/testWysoka

Kategoria występująca tylko w zbiorze testowym powoduje błąd lub cichy wektor zerowy, jeśli encoder nie był na nią uczony.

Rozwiązanie:Fituj encoder na pełnym zbiorze (train+test) tylko dla kategorii znanych a priori; w produkcji ustaw handle_unknown="ignore" lub mapuj do specjalnej kategorii UNK.

Hiperparametry (konfigurowalne osie)

Rozmiar słownika (K)Krytyczna

Liczba unikalnych kategorii do zakodowania. Wpływa bezpośrednio na wymiarowość wektora wynikowego i koszt pamięciowy.

Obsługa nieznanych kategoriiWysoka

Strategia dla wartości spoza zbioru treningowego: ignore (wektor zerowy), error (wyjątek), infrequent_if_exist (mapowanie do specjalnej kategorii).

Usunięcie kolumny referencyjnejŚrednia

Czy usunąć jedną kolumnę dla uniknięcia współliniowości w modelach liniowych (dummy encoding).

Format rzadkiWysoka

Czy zwracać scipy.sparse zamiast gęstej macierzy — istotne przy dużym K.

Złożoność obliczeniowa

Złożoność czasowa: O(K) per sample. Złożoność przestrzenna: O(K) per sample (dense), O(1) (sparse / index).

Paradygmat wykonania

Tryb główny
Rzadki

Wektor wynikowy ma dokładnie jedną aktywną pozycję; idealny kandydat do reprezentacji rzadkiej.

Wzorzec aktywacji
Podzbiór aktywny

Równoległość

Poziom równoległości
W pełni równoległy

Kodowanie każdej próbki jest niezależne i trywialnie zrównoleglalne.

Zakres
TreningInferencjaPomiędzy tokenami

Wymagania sprzętowe

Podstawowe

Operacja jest trywialna obliczeniowo (indeksowanie / wpisanie 1 do wektora zer) i nie zyskuje na specjalizowanym hardware.