Wiele algorytmów uczących się uczy się pojedynczej wagi dla cechy lub używa odległości między próbkami. Pierwsza dotyczy modeli liniowych, takich jak regresja logistyczna, które są łatwe do wyjaśnienia.
Załóżmy, że masz zbiór danych zawierający tylko jedną kategorię „narodowość” z wartościami „Wielka Brytania”, „Francuski” i „Stany Zjednoczone”. Załóżmy, bez utraty ogólności, że są one zakodowane jako 0, 1 i 2. Masz wtedy wagę w dla tej cechy w klasyfikatorze liniowym, który podejmie jakąś decyzję w oparciu o ograniczenie w × x + b> 0 lub równoważnie w × x <b.
Problem polega teraz na tym, że waga w nie może zakodować wyboru trójetapowego. Trzy możliwe wartości w × x to 0, w i 2 × w. Albo te trzy wszystkie prowadzą do tej samej decyzji (wszystkie są <b lub ≥b), albo „UK” i „francuski” prowadzą do tej samej decyzji, albo „francuski” i „USA” wydają tę samą decyzję. Model nie ma możliwości dowiedzenia się, że „UK” i „US” powinny mieć tę samą etykietę, z „francuskim” jako nieparzystym.
Dzięki jednokrotnemu kodowaniu efektywnie powiększasz przestrzeń funkcji do trzech funkcji, z których każda otrzyma własne wagi, więc funkcja decyzyjna jest teraz w [UK] x [UK] + w [FR] x [FR] + w [US] x [US] <b, gdzie wszystkie x są wartościami logicznymi. W tej przestrzeni taka funkcja liniowa może wyrazić dowolną sumę / dysjunkcję możliwości (np. „UK lub US”, które mogą być predyktorem dla kogoś mówiącego po angielsku).
Podobnie każdy uczeń oparty na standardowych metrykach odległości (takich jak k-najbliższych sąsiadów) między próbkami będzie zdezorientowany bez kodowania na gorąco. Przy kodowaniu naiwnym i odległości euklidesowej, odległość między francuskim a amerykańskim wynosi 1. Odległość między Stanami Zjednoczonymi a Wielką Brytanią wynosi 2. Ale przy kodowaniu jeden-gorący, odległości parami między [1, 0, 0], [0, 1 , 0] i [0, 0, 1] są równe √2.
Nie dotyczy to wszystkich algorytmów uczenia się; drzewa decyzyjne i modele pochodne, takie jak lasy losowe, jeśli są wystarczająco głębokie, mogą obsługiwać zmienne kategorialne bez kodowania typu one-hot.
Jeśli chodzi o zwiększenie funkcji poprzez wykonanie jednego kodowania na gorąco, można użyć mieszania funkcji. Podczas mieszania można określić liczbę segmentów, aby była znacznie mniejsza niż liczba nowo wprowadzonych funkcji.
źródło
Jeśli chcesz przewidzieć kategorie, chcesz przewidzieć elementy zestawu. Nieużywanie kodowania na gorąco jest podobne do pozwalania kategoriom na sąsiednie kategorie (np. Jeśli zamiast tego wykonano regresję z liczbami całkowitymi kategorii) zorganizowane w określony sposób i w określonej kolejności.
Co się stanie, jeśli przypiszesz kategorię 0 do 0, kategorię 1 do 1 i kategorię 2 do 2 bez kodowania na gorąco, a przewidywanie algorytmu nie jest pewne, czy powinien wybrać 0 czy 2: czy powinien przewidzieć 1 pomimo on myśli, że to 0 albo 2?
Widzisz, dokąd to zmierza. To samo dotyczy danych wejściowych: jeśli nie powinny być sąsiadami, nie pokazuj ich algorytmowi jako sąsiadów.
źródło