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 :

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *