Dlaczego one hot encoding poprawia wydajność uczenia maszynowego?

Zauważyłem, że gdy jedno gorące kodowanie jest używane na konkretnym zestawie danych (macierzy) i używane jako dane treningowe dla algorytmów uczenia się, daje to znacznie lepsze wyniki w odniesieniu do dokładności przewidywania, w porównaniu z wykorzystaniem samej oryginalnej matrycy jako danych treningowych. W jaki sposób zwiększa się wydajność?

Author: Jean-François Corbett, 2013-07-04

2 answers

Wiele algorytmów uczenia się albo uczy się jednej wagi na cechę, albo używa odległości między próbkami. Pierwszy z nich dotyczy modeli liniowych, takich jak regresja logistyczna, które są łatwe do wyjaśnienia.

Załóżmy, że masz zbiór danych mający tylko jedną kategoryczną cechę "narodowość", z wartościami" UK"," French "I"US". Załóżmy, bez utraty ogólności, że są one zakodowane jako 0, 1 i 2. Następnie masz wagę w dla tej funkcji w klasyfikatorze liniowym, który sprawi, że niektóre decyzje oparte na ograniczeniu w×x + b > 0 lub równoważnie w×x

Problem polega teraz na tym, że waga w nie może zakodować wyboru trójdrożnego. Trzy możliwe wartości w×X to 0, w i 2×w. albo te trzy wszystkie prowadzą do tej samej decyzji (wszystkie są

Przez kodowanie one-hot, efektywnie powiększasz przestrzeń funkcji do trzech funkcji, z których każda otrzyma swoją własną wagę, więc funkcja decyzyjna jest teraz w[UK]x[UK] + w [FR] x [FR] + w[US]x [US]

Podobnie każdy uczący się w oparciu o standardowe metryki odległości (takie jak K-najbliżsi sąsiedzi) między samplami będzie się mylić bez kodowania one-hot. Przy naiwnym kodowaniu i odległości euklidesowej odległość między Francuzem a nami wynosi 1. Odległość między USA a Wielką Brytanią wynosi 2. Ale przy kodowaniu one-hot, pary odległości między [1, 0, 0], [0, 1, 0] oraz [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 kategoryczne bez kodowanie one-hot.

 241
Author: Fred Foo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-07-03 18:35:13

Jeśli chodzi o zwiększenie funkcji poprzez wykonanie one-hot-encoding, można użyć hashowania funkcji. Podczas mieszania można określić liczbę łyżek, która będzie znacznie mniejsza niż liczba nowo wprowadzonych funkcji.

 3
Author: user3764384,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-07-16 21:08:55