Mam zestaw danych z około 2000 zmiennymi binarnymi / 200 000 wierszy i próbuję przewidzieć pojedynczą zmienną zależną binarnie. Moim głównym celem na tym etapie nie jest uzyskanie dokładności prognoz, ale raczej określenie, które z tych zmiennych są ważnymi predyktorami. Chciałbym zmniejszyć liczbę zmiennych w moim ostatecznym modelu do około 100.
Czy istnieje względnie szybki sposób uzyskania najważniejszych zmiennych? Wydaje się, że randomForest zajmuje dużo czasu.
Nie muszę używać wszystkich 200 000 obserwacji, więc próbkowanie jest opcją na stole.
Odpowiedzi:
Możesz zacząć od prostego filtra Univariate i użyć weryfikacji krzyżowej, aby zdecydować, które zmienne zachować.
sbf
Funkcja wcaret
pakiecie dla R jest naprawdę przydatna. Możesz przeczytać więcej na ten temat tutaj , od strony 19.źródło
Brzmi to jak odpowiedni problem dla lasso i przyjaciół, którzy dokonują skurczu i wyboru zmiennych. Elementy uczenia statystycznego opisują lasso i elastyczną sieć do regresji, a co bardziej istotne dla tego problemu, regresję logistyczną.
Autorzy książki udostępnili wydajną implementację lasso i elastycznej siatki jako pakiet R o nazwie glmnet . Wcześniej używałem tego pakietu do analizy danych binarnych z macierzami danych zawierającymi około 250 000 wierszy, choć nieco mniej kolumn, ale w rzeczywistości przeprowadzam regresję wszystkich kolumn względem wszystkich innych kolumn. Jeśli macierz danych jest również rzadka, implementacja również może z tego skorzystać i uważam, że metoda może faktycznie działać dla pełnego zestawu danych PO. Oto kilka komentarzy na temat lasso:
W Pythonie istnieje implementacja scikit-learn takich metod, jak lasso i elastyczna sieć.
źródło
glmnet
R). Inną opcją jest Próg Lasso, który jest również dość prosty do wdrożenia. Zobacz rozdział 2.9 springer.com/gp/book/9783642201912 .Możesz wykonać regresję logistyczną / test asocjacji chi-kwadrat dla każdej zmiennej i zachować tylko te, które mają wartość p mniejszą niż pewna wartość, powiedzmy .2.
źródło