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.
źródło
Principal Component Analysis
lubNon-Negative Matrix Factorization
zmniejszy 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.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).
źródło
Mając niewiele podanych przez ciebie informacji dotyczących charakteru twoich danych, radziłbym ci zastosować następujące podejście:
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”).
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.
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.
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.
źródło