Jak zarządzać zmiennymi nominalnymi w modelach predykcyjnych ?

Wprowadzenie – Zmienne nominalne znane są z tego, że potrafią ukrywać sporo interesujących informacji w zbiorze danych.

Bardzo istotnym jest aby uczyć się nowych metod, które są w stanie nad nimi panować. Jeżeli nie chcesz, prawdopodobnie wielokrotnie przegapisz  istotny cel poszukiwań w swoim modelu. Mi także potrafiło się to przydarzyć. Początkowo starałem się skupiać na numerycznych zmiennych. Dlatego też miałem problem aby stworzyć optymalny model. Na szczęście nie dużo czasu zajęło mi aby odkryć źródło swoich problemów i opanowałem umiejętność zarządzania zmiennymi.

Jeśli jesteś kumatym badaczem, znajdziesz zmienne kategoryczne w swoim zbiorze danych, a następnie wyciągniesz tyle informacji ile będziesz potrzebował. Prawda ? Jeżeli jednak jesteś początkujący… Możesz nie znać sprytnych metod oraz narzędzi do pozyskania tego, czego byś chciał. Nie pękaj, jestem tu po to żeby ci pomóc.

Po otrzymaniu dużej ilości pytań pod tym tematem. Zdecydowałem żeby napisać wam kilka sposobów jak zapanować nad swoimi zmiennymi nominalnymi.

Uwaga: Ten artykuł napisany jest dla początkujących i świeżo upieczonych badaczy. Jeżeli jesteś profesjonalistą i chciałbyś podzielić się swoją wiedzą zapraszam do udzielania wskazówek w komentarzach.

Jakie są najistotniejsze kwestie przy zarządzaniu swoimi zmiennymi nominalnymi ? 

Zmarnowałem sporo czasu przy zarządzaniu swoimi zmiennymi kategorycznymi. Pamiętam przypadki kiedy potrzebowałem nawet dwóch dni na zrozumieniu ich idei. Męczyłem się, dostając co chwila po oczach ostrzeżeniami z aplikacji – nie pozwalało mi to iść do przodu. Moje wcześniej sprawdzone metody nie zdawały rezultatu.

W trakcie tych zmagań, nauczyłem się jak sobie radzić. Teraz chciałbym się nimi podzielić:

  • Zmienne kategoryczne mające zbyt wiele poziomów – powoduje to potworny spadek wydajności modelu. Przykładem może być zmienna kat. „kod pocztowy“.
  • Zmienne kategoryczne, które posiadają rzadko występujące poziomy. Wiele z tym poziomów ma minimalne prawdopodobieństwo wywarcia pasującego nam wpływu na model. Np. zmienna „choroba“ ma takie poziomy, które naprawdę rzadko występują.
  • Jest jeszcze jeden poziom, który zawsze wsytępuje, tzn w większości obserwacji w zbiorach danych występuje tylko jeden poziom. Takie zmienne mają negatywny wpływ na model z powodu zbyt małego odchylenia.
  • Jeżeli zmienna kat. jest ukryta. Będziemy mieli bardzo pracochłonne zadanie aby ją odszyfrować. Jest to popularna łamigłówka w konkursach naukowych.
  • Nie można dopasować zmiennych kategorycznych do równania regresji w ich surowej postaci. Muszą zostać poprawione.
  • Większość algorytmów daje lepsze wyniki przy używaniu numerycznych zmiennych. Spójrz na poniższe zrzuty ekranu. Zostosowałem przykładowy ciąg wierszy używając biblioteki „sklearn“ na ogromnym zbiorze danych (tylko dwie cechy „sex“ i „pclass“ były brane jako zmienne niezależne) Pokazał się błąd, ponieważ cecha „sex“ jest nominalna, więc nie mogła zostać zmieniona na numeryczną.

zmienne nominalne w analizie statystycznej predykcji i modelowaniu danych 1.

Sprawdzone metody radzenia sobie ze Zmiennymi Nominalnymi

 Podam Wam kilka metod w radzeniu sobie ze zmiennymi kategorycznymi. Esencją jest używanie pewnej iteracji tzn odpowiedniego sposobu na powtarzanie. Jednak musisz wiedzieć, że ta metoda nie będzie działała w każdej sytuacji, ale powinniśmy próbować powtarzać nasz model z użyciem innych technik. Następnie będziemy szacować wyniki modelu. Poniżej przedstawiam metody:

Konwertowanie do cyfr

 Konwersja – jak już omawialiśmy niektóre biblioteki ML nie akceptują kategorycznych zmiennych jako źródła, więc przkonwertujemy je do numerycznych. Poniżej przedstawiam kilka metod jak to zrobić:

  1. Dekoder etykiet: Jest używany do zmian nienumerycznych etykiet na etykiety numeryczne(a także na nominalne). Numeryczne etykiety cechują wartości od 0 do n_classes-1 .

 

 2

Popularnym problemem zmiennych kategorycznych jest ich wpływ na spadek wydajności modelu. Na przykład: mamy dwie cechy główne „wiek“ (0-80) oraz „miasto“ (81 różnych poziomów). Teraz gdy użyjemy dekodera etykiet dla zmiennej „miasto“ , otrzymamy „miasto” z wartościami liczbowymi od 0 do 80. Od teraz zmienna „miasto“ jest podobna do zmiennej „wiek“,  pod wzgędem charakterystyki  w bazie danych , co jednak z całą pewnością nie daje podstaw do możliwości porównawczej.

  • Konwertowanie zbiorów numerycznych do cyfr: Powiedzmy, że nasza zbiory zmiennych ciągłych są dostępne w bazie danych (patrz poniżej)

3

Powyżej możecie zobaczyć zmienną “age” , zawiera się ona w zbiorach (0-17, 17-25, 26-35 …).  Możemy przypisać te zbiory do określonych cyfr, używając do tego metod podanych poniżej:

  • Używając dekodera etykiet do konwersji. Jednak te zbiory numeryczne będą musiały być potraktowane tak samo jak te wielopoziomowe nienumeryczne cechy. Więc nie będziemy mogli włączyć żadnych dodatkowych informacji.
  • Stworzyć nową cechę przy pomocy średniej lub najistotniejszej wartości, przypisanej do każdego zbioru. Wpłynie to na wagę dodatkowych poziomów.

zmienne nominalne w analizie statystycznej predykcji i modelowaniu danych 1.2sfasdf

  • Stworzyć dwie nowe cechy, jeden dla dolnej granicy wieku, a drugi dla górnej. W tej metodzie uzyskamy więcej informacji w zbiorach numerycznych w porównaniu do wczesniejszych dwóch metod.

zmienne nominalne w analizie statystycznej predykcji i modelowaniu danych 1. afgedfhe

Połącz poziomy 

  • Połącz poziomy aby uniknąć zbędnych poziomów w zmiennej kategorycznej i poradzić sobie z rzadkimi poziomami – możemy połączyć oba. Istnieją na to różne sposoby, przedstawiam kilka z nich:
  1. Użyj logiki biznesowej: Jest to jedna z najbardziej efektywnych metod łączenia poziomów. Ta metoda ma także sens przy łączeniu w podobne podgrupy oparte na domenach lub doświadczeniu zawodowym. Dla przykładu możemy połączyć poziomy zmiennej „kodu pocztowego“ oraz poziom dzielnicy lub stanu. Zredukuje to ilość numerów oraz usprawni działanie.

6

Korzystanie z częstotliwości lub odsetek odpowiedzi: 

Przeprowadzanie łączenia poziomów opartego na logice biznesowej jest efektywne, ale nie zawsze posiadamy wiedzę z tego zakresu. Wyobraź sobie, że dostajesz bazę danych od Departamentu Lotnictwa.  W jaki sposób chciałbyś użyć tutaj użyć logii biznesowej ? W takich przypadkach, możemy łączyć poziomy na podstawie rozkładów częstości lub odstetków odpowiedzi.

  • Połączymy  poziomy na podstawie ich czestotliwości, jednak najpierw bierzemy pod uwagę rozkład częstości każdego poszczególnego poziomu. Następnie łączymy poziomy, które posiadają poniżej 5% całkowitej obserwacji (5% to standardowa wartość, ale możemy ją zmieniać na podstawie otrzymanych wyników rozkładu częstości). Jest to bardzo efektywna metoda w radzeniu sobie z rzadkimi poziomami.
  • Możemy także łączyć poziomy, biorąc pod uwagę wskaźnik odpowiedzi każdego z nich. W prosty sposób łączymy poziomy, które posiadają podobny wskaźnik odpowiedzio przydzielając je do tego samego zbioru.
  • Ostatecznie, możemy brać pod uwagę zarówno szybkość reakcji jak i czestotliwość aby połączyć poziomy. W pierwszej kolejności łącymy poziomy oparte na szybkości rekacji następnie łączymy rzadkie poziomy w istotne podgrupy.

7

Dummy Coding:

Dummy Coding to popularna metoda używana przy konwersji zmiennych wejściowych nominalnych do zmiennych ciągłych. “Dummy” sugeruje, ze jest to duplikat zmiennej, który jest reprezentacją poziomu zmiennej nominalnej. Wartość 1 wskazuje na jej występowanie, a 0 mówi o braku. Dla każdego poziomu, który się pojawi będzie utowrzona wartość “dummy”. Spójż na poniższy obrazek, który przedstawia jak zmienna nominalna konwertowana jest do zmiennej “dummy”.

8

Notatka podsumowująca: Jeżeli mamy 500 zmiennych nominálních to czy musimy stworzyć 500 „dummy“ zmiennych ? Jeżeli możemy to zautomatyzować to bardzo dobrze. Jednak moją sugestią jest abyście zmniejszyli ilość poziomów używając wcześniej przedstawionych metod, a metody „dummy coding“ użyli na samym końcu. Ograniczy to stracony czas. Ten typ działania zwany jest „One Hot Encoding“.

Podsumowanie:

W tym tekście opisywałem z jakimi przeciwnościami losu będziecie musieli sobie dać radę podczas tworzenia modelu. Przedyskutowaliśmy metody jak je przezwyciężać i podnosić wydajność. Przedstawiłem jak używać „Python’a“ skupiając się na wyjaśnieniach dla początkujących.

Starałem się żeby wszystko było jak najprościej przedstawiane i dostępne dla wszystkich. Nie opisywałem tak zaawansowanych metod jak „feature hashing“, jednak postaram się dokonać opisu tej metody w przyszłości. Musisz starać zrozumieć te metody, ponieważ są przydatne przy analizie danych. Widziałem, nawet bardzo zaawansowane metody, które przy złym użyciu powodowały negatywne efekty, a wystarczyło użyć tych podstawowych tylko w odpowiedni sposób.  Musisz starać nauczyć się używania ich w odpowiednich momentach, pasujących do kontekstu. Jeżeli będziesz miał problemy, śmiało pisz w komentarzach.

Autor: Sunil Ray

Simple Methods to deal with Categorical Variables in Predictive Modeling

przekształcania danych