Dlaczego jedno kodowanie na gorąco poprawia wydajność uczenia maszynowego?

129

Zauważyłem, że gdy kodowanie One Hot jest używane na określonym zestawie danych (macierzy) i używane jako dane uczące do uczenia algorytmów, daje znacznie lepsze wyniki w odniesieniu do dokładności przewidywania, w porównaniu z użyciem samej oryginalnej macierzy jako danych uczących. Jak następuje ten wzrost wydajności?

maheshakya
źródło

Odpowiedzi:

261

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.

Fred Foo
źródło
5
Dzięki za to Lars, ale kiedy robimy OneHotEncoding, które skutecznie zwiększa liczbę funkcji, nie musimy też zwiększać próbek, aby upewnić się, że nie jest przesadzony.
Manoj,
@Manoj W porównaniu z oczywistą alternatywną reprezentacją zmiennych kategorialnych, kodującym każdy poziom jako odrębną liczbę całkowitą, nie sądzę, że ma to znaczenie: tak czy inaczej potrzebujesz wystarczających statystyk.
Fred Foo
8
Czy jest jakaś literatura, na którą mógłbyś wskazać, abym mógł przeczytać dalej? Dzięki.
Dr Knowitall
1
Czy jest korzyść z używania macierzy rang poniżej pełnej (czego nie zrobiłbyś podczas budowania zwykłego modelu statystycznego) przy stosowaniu technik uczenia maszynowego, takich jak przyspieszanie?
Steve S
3
Wygląda to dla mnie tak, jak to, co statystycy nazwałby „zmiennymi fikcyjnymi”. Ale może jest oszczędność miejsca.
Soldalma
3

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.

user3764384
źródło
-1

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.

Guillaume Chevalier
źródło