Kodowanie etykiet lub kodowanie typu one-hot: jaka jest różnica?
Często w uczeniu maszynowym chcemy przekonwertować zmienne kategoryczne na jakiś format liczbowy, który może być łatwo wykorzystany przez algorytmy.
Istnieją dwa popularne sposoby konwertowania zmiennych kategorycznych na zmienne numeryczne:
1. Kodowanie etykiet: przypisz każdej wartości kategorycznej wartość całkowitą w oparciu o kolejność alfabetyczną.
2. Jedno gorące kodowanie: Utwórz nowe zmienne, które przyjmują wartości 0 i 1, aby reprezentować oryginalne wartości kategoryczne.
Załóżmy na przykład, że mamy następujący zbiór danych z dwiema zmiennymi i chcemy przekonwertować zmienną Team ze zmiennej kategorialnej na zmienną numeryczną:
Poniższe przykłady pokazują, jak używać w tym celu zarówno kodowania tagów , jak i kodowania one-hot .
Przykład: użycie kodowania etykiet
Używając kodowania etykiet , przekonwertujemy każdą unikalną wartość w kolumnie Zespół na wartość całkowitą w oparciu o kolejność alfabetyczną:
W tym przykładzie możemy zobaczyć:
- Każda wartość „A” została przekonwertowana na 0 .
- Każda wartość „B” została przekonwertowana na 1 .
- Każdą wartość „C” przeliczono na 2 .
Pomyślnie przekonwertowaliśmy kolumnę Zespół ze zmiennej jakościowej na zmienną numeryczną.
Przykład: użycie pojedynczego kodowania typu one-hot
Używając kodowania one-hot , przekonwertujemy kolumnę Team na nowe zmienne zawierające tylko wartości 0 i 1:
Stosując to podejście, tworzymy nową kolumnę dla każdej unikalnej wartości oryginalnej zmiennej kategorycznej.
Na przykład zmienna kategoryczna Zespół miała trzy unikalne wartości , dlatego utworzyliśmy trzy nowe kolumny w zbiorze danych, z których wszystkie zawierają wartości 0 lub 1.
Oto jak interpretować wartości w nowych kolumnach:
- Wartość nowej kolumny Team_A wynosi 1, jeśli pierwotna wartość kolumny Team to A. W przeciwnym razie wartość wynosi 0.
- Wartość nowej kolumny Team_B wynosi 1, jeśli pierwotna wartość kolumny Team wynosiła B. W przeciwnym razie wartość wynosi 0.
- Wartość nowej kolumny Team_C wynosi 1, jeśli pierwotna wartość kolumny Team to C. W przeciwnym razie wartość wynosi 0.
Pomyślnie przekonwertowaliśmy kolumnę Zespół z jednej zmiennej kategorialnej na trzy zmienne numeryczne – czasami nazywane zmiennymi „fikcyjnymi”.
Uwaga : używając tych „fikcyjnych” zmiennych w modelu regresji lub innym algorytmie uczenia maszynowego, należy zachować ostrożność, aby uniknąć pułapki na zmienną fikcyjną .
Kiedy używać kodowania tagów, a kiedy kodowania one-hot
W większości scenariuszy preferowanym sposobem konwersji zmiennej kategorycznej na zmienną numeryczną jest kodowanie typu one-hot, ponieważ kodowanie etykiet sprawia wrażenie, że istnieje ranking między wartościami.
Rozważmy na przykład przypadek, w którym użyliśmy kodowania etykiet do konwersji zespołu na zmienną numeryczną:
Dane zakodowane na etykiecie sprawiają wrażenie, że Zespół C jest w jakiś sposób większy lub wyższy niż Zespoły B i A, ponieważ ma wyższą wartość liczbową.
Nie stanowi to problemu, jeśli pierwotna zmienna kategoryczna jest w rzeczywistości zmienną porządkową o naturalnym porządku lub rankingu, ale w wielu scenariuszach tak nie jest.
Jednak jedną z wad kodowania one-hot jest to, że wymaga utworzenia tylu nowych zmiennych, ile jest unikalnych wartości w oryginalnej zmiennej kategorycznej.
Oznacza to, że jeśli zmienna kategorialna ma 100 unikalnych wartości, w przypadku korzystania z kodowania one-hot konieczne będzie utworzenie 100 nowych zmiennych.
W zależności od rozmiaru zestawu danych i rodzaju zmiennych, z którymi pracujesz, możesz preferować kodowanie jednokrotne lub kodowanie etykietowe.
Dodatkowe zasoby
Poniższe tutoriale wyjaśniają, jak w praktyce wykonać kodowanie etykiet :
Poniższe samouczki wyjaśniają, jak w praktyce wykonać kodowanie one-hot :