ML: kategorie nominalne – Dummy Variable Trap

Tak jak obiecałem wcześniej

w poście mówiącym o danych kategoryzujących, napiszę kilka słów o problemie związanym z przetwarzaniem danych nominalnych, zwanym Dummy Variable Trap.

Dummy variable jest to kolumna przechowująca wartość binarną (oznaczającą przynależność próbki do danej kategorii), utworzona w procesie kodowania jeden do wielu, o którym pisałem we wspomnianym poście. Spójrzmy zresztą na poniższy kod.

Na potrzeby przykładu utworzyłem obiekt DataFrame przechowujący 5 wierszy z produktami spożywczymi i informacjami o ich podstawowych wartościach odżywczych. O kolumnie z nazwą nie będziemy rozmawiali bo nie jest nam do niczego potrzebna. Kolumna ‘Kategoria’ zawiera dane kategoryczne nominalne, natomiast pozostałe kolumny przechowują wartości numeryczne. Począwszy od linijki 11 przetwarzamy kolumnę ‘Rodzaj’. Efekt możemy zobaczyć poniżej:

Dummy variables

Każda z kolumn, która rozpoczyna się od ‘Rodzaj_’, to właśnie dummy variable. Na pierwszy rzut oka nie widać tu żadnego problemu. Takowy zresztą pojawia się dopiero wówczas gdy chcemy uczyć nasz model przy wykorzystaniu algorytmu opartego na regresji liniowej, wymaga ona bowiem założenia że w modelu bezwzględnie nie występuje współliniowość.

Czym jest współliniowość?

O współliniowości mówimy wówczas, gdy między zmiennymi występuje zależność liniowa. Regresja liniowa natomiast wymaga by, co oczywista, istniała zależność między zmienną przewidywaną a poszczególnymi cechami, ale nie istniała między samymi zmiennymi na podstawie których się przewiduje. Rozwiązując problem zmiennych kategoryzujących nominalnych, możemy mieć pewność, że tworzymy problem współliniowości.

Jak można rozwiązać ten problem?

Rozwiązanie nie jest trudne. Przy wyborze cech do modelu, wystarczy pomijać jedną z utworzonych kolumn. Ilość dummy variable utworzonych z jednej kolumny powinna wynosić N – 1, gdzie N to ilość kategorii. Nie musimy się obawiać, że w ten sposób stracimy jakąś cenną informację – ta zostanie zachowana bo w momencie gdy wszystkie dummy variables będą miały wartość zero, to będzie znaczyło o przynależności próbki do pominiętej kategorii.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *