Najlepszy sposób na klasyfikację zbiorów danych o mieszanych typach atrybutów

13

Chciałbym wiedzieć, jaki jest najlepszy sposób klasyfikacji zestawu danych złożonego z mieszanych typów atrybutów, na przykład tekstowych i liczbowych. Wiem, że mogę konwertować tekst na logiczne, ale słownictwo jest zróżnicowane, a dane stają się zbyt rzadkie. Próbowałem również klasyfikować typy atrybutów osobno i łączyć wyniki za pomocą technik meta-uczenia, ale nie działało to dobrze.

użytkownik900
źródło

Odpowiedzi:

11

Odpowiedzi Christophera wydają się bardzo rozsądne. W szczególności metody oparte na drzewach radzą sobie dobrze z tego rodzaju danymi, ponieważ rozgałęziają się na cechach dyskryminujących. Trochę trudno powiedzieć, nie znając konkretnej aplikacji, ale ogólnie, jeśli uważasz, że niektóre z twoich funkcji mogą być znacznie bardziej dyskryminujące niż inne, możesz wypróbować kilka technik redukcji wymiarów, aby to trochę oczyścić.

Również, jeśli użyjesz techniki zmniejszania wymiarów, ostatecznie uzyskasz nieco bardziej niezawodny format dla twojego wektora cech (zazwyczaj są to proste wektory numeryczne zamiast mieszanych typów danych), co może pozwolić ci wykorzystać różne metody. Możesz także przyjrzeć się funkcjom inżynierii ręcznej. Dzięki odpowiednio ręcznie zaprojektowanym funkcjom Random Forestbędziesz bardzo blisko najnowocześniejszych zadań w większości zadań.

indico
źródło
2
Kolejny głos za redukcją wymiarów. Tylko kilka dodatków: Principal Component Analysislub Non-Negative Matrix Factorizationzmniejszy liczbę zmiennych, wzbogaci rzadkie dane i przekształci wszystkie zmienne w ilościowe. Ponadto, oceniając jakość modelu redukcji wymiarowości, autor pytania może oszacować przydatność zmiennych tekstowych.
sobach
@indico świetna odpowiedź. Czy możesz podać nam odniesienie w książce lub artykule, że algorytmy drzewne działają lepiej z danymi mieszanymi (dane kategoryczne i ilościowe)?
ZelelB
6

Trudno jest odpowiedzieć na to pytanie, nie wiedząc więcej o danych. Powiedziałbym, że dam następującą radę:

Większość technik uczenia maszynowego może obsługiwać dane mieszane. Metody oparte na drzewach (takie jak AdaBoost i Random Forests) dobrze sobie radzą z tego typu danymi. Ważniejszą kwestią jest tak naprawdę wymiarowość, o którą słusznie się martw.

Sugerowałbym, abyś zrobił coś, aby zmniejszyć tę wymiarowość. Na przykład poszukaj słów lub fraz, które najlepiej oddzielają dane, i odrzuć inne słowa (uwaga: metody oparte na drzewach robią to automatycznie).

Christopher Louden
źródło
2

Mając niewiele podanych przez ciebie informacji dotyczących charakteru twoich danych, radziłbym ci zastosować następujące podejście:

  1. Konwertuj dane tekstowe na kategorie. Możesz wypróbować różne alternatywy dotyczące ilości informacji, które powinny zawierać kategorie, ale dla każdej zmiennej muszą istnieć określone kategorie. Jako przykład przyjmuję zmienną pochodzącą z pola tekstowego kwestionariusza ankiety dotyczącą preferowanego sposobu dotarcia do pracy.

    Najpierw musimy upewnić się, że odpowiedzi o podobnym znaczeniu są napisane w ten sam sposób i należą do tej samej kategorii (np. „Rowerem”, „rowerem”, „rowerem” mają takie samo znaczenie). Następnie możesz spróbować scalić w mniej szczegółowe kategorie (np. Połączyć „tramwaj”, „metro” i „autobus” w „Środki transportu publicznego”) lub nawet więcej (np. „Zwiedzanie”, „Jogging”, „Jazda na rowerze” w „ Aktywność fizyczna ”) w zależności od tego, czego próbujesz się dowiedzieć.

    Możesz nawet umieścić różne kombinacje w swoim zestawie danych, a następnie następne kroki określą, które zostaną użyte do analizy. W przypadkach, w których dane tekstowe można „przetłumaczyć” na zmienne uporządkowane, upewnij się, że to robisz (np. Jeśli masz „mały, średni, wysoki”, zamień go na „1,2,3”).

  2. Zamień swoje zmienne kategorialne (nie porządkowe) w zmienne obojętne (binarne). Większość algorytmów klasyfikacji / wyboru funkcji robi to automatycznie, ale upewnij się, że tak jest w przypadku wybranych. Zdaję sobie sprawę, że wymiarowość danych będzie w tym momencie dość duża, ale zostanie to rozwiązane w następnym kroku.

  3. Zastosuj technikę wyboru funkcji / redukcji wymiarów do swoich danych. Przydatny przegląd takich technik można znaleźć tutaj . Jeśli używasz Pythona, narzędzia sklearn dają wiele opcji (zobacz więcej szczegółów tutaj ). Upewnij się, że używasz techniki uwzględniającej również wielokoliniowość. Chciałbym wypróbować Principal Component Analysis lub algorytm oparty na drzewie.

  4. Do klasyfikacji danych wybrałbym Klasyfikator drzew decyzyjnych (dostępny również przez sklearn ). Dokonuje także wyboru ważenia funkcji, ustawiając wagi ważności dla funkcji. Możesz ustawić poziom szczegółowości generowanego drzewa w zależności od opcji (np. Max_depth, min_samples_split) Upewnij się, że dostosowałeś poziom szczegółowości na podstawie weryfikacji krzyżowej, aby uniknąć przeregulowania.

missrg
źródło