Cześć, mam ramkę danych z dużymi wartościami kategorialnymi ponad 1600 kategorii. Czy mogę znaleźć alternatywy, aby nie mieć ponad 1600 kolumn.
Znalazłem to poniżej ciekawy link http://amunategui.github.io/feature-hashing/#sourcecode
Ale konwertują na klasę / obiekt, którego nie chcę. Czy chcę, aby końcowy wynik był ramką danych, aby móc testować za pomocą różnych modeli uczenia maszynowego? czy jest jakiś sposób, w jaki mogę wykorzystać genetyczną matrycę do szkolenia innych modeli uczenia maszynowego innych niż regresja logistyczna lub XGBoost?
Czy mogę coś zaimplementować?
Odpowiedzi:
Jedną z opcji jest odwzorowanie rzadkich wartości na „inne”. Zwykle odbywa się to np. W przetwarzaniu języka naturalnego - intuicja polega na tym, że bardzo rzadkie etykiety nie mają dużej mocy statystycznej.
Widziałem także ludzi, którzy odwzorowują 1-gorące wartości kategorialne na wektory o niższych wymiarach, gdzie każdy 1-gorący wektor jest ponownie reprezentowany jako remis z wielowymiarowego Gaussa. Zobacz np. Artykuł Deep Knowledge Tracing, który mówi, że takie podejście jest motywowane ideą kompresyjnego wykrywania:
BARANIUK, R. Wykrywanie kompresji. Magazyn przetwarzania sygnałów IEEE 24, 4 (2007).
W szczególności mapują każdy wektor o długości N na krótszy wektor o długości log2 (N). Nie zrobiłem tego sam, ale myślę, że warto spróbować.
źródło
Możesz odczytać dane i najpierw uzyskać listę wszystkich unikalnych wartości zmiennych jakościowych. Następnie możesz dopasować jeden gorący obiekt kodujący (taki jak sklearn.preprocessing.CategoricalEncoder) na liście unikalnych wartości.
Ta metoda może również pomóc w strukturze testu pociągu lub podczas odczytywania danych we fragmentach. Stworzyłem moduł python, który robi to wszystko sam. Możesz go znaleźć w tym repozytorium GitHub - dummyPy
Krótki samouczek na ten temat - Jak za jednym razem zakodować zmienne kategorialne w Pythonie?
źródło
Odwołaj się do tego linku (jest to również związane z funkcją kategorialną mającą kilka unikalnych wartości):
https://datascience.stackexchange.com/a/64021/67149
W celu umieszczenia możesz odwołać się do poniższego linku (nie napisane przeze mnie, ale warte przeczytania raz): https://medium.com/@satnalikamayank12/on-learning-embeddings-for-categorical-data-using-keras-165ff2773fc9
źródło
Możesz wykonywać grupowanie podobnych wartości, dzięki czemu wartości (lub kolumny), które zawierają najbliższy wzorzec (lub mają bardzo podobne) wzorzec, można zastąpić jedną wartością (lub kolumną), a zatem 1600 wartości może sprowadzić się do powiedzenia 400 (lub nawet mniej).
Dawny. dla wartości takich jak (chmura jak - chmury Nimbus, mżawka, lekki deszcz, deszcz, ulewny deszcz można przekształcić na (lekki deszcz, deszcz, ulewny deszcz).
źródło