Mam zestaw danych z około 70 zmiennymi, które chciałbym wyciąć. Chcę użyć CV, aby znaleźć najbardziej przydatne zmienne w następujący sposób.
1) Losowo wybierz powiedz 20 zmiennych.
2) Użyj stepwise
/ LASSO
/ lars
/ etc, aby wybrać najważniejsze zmienne.
3) Powtórz ~ 50x i zobacz, które zmienne są najczęściej wybierane (nie eliminowane).
Jest to zgodne z tym, co randomForest
zrobiłoby a, ale rfVarSel
wydaje się, że pakiet działa tylko dla czynników / klasyfikacji i muszę przewidzieć ciągłą zmienną zależną.
Używam R, więc wszelkie sugestie byłyby idealnie tam zaimplementowane.
Odpowiedzi:
Wierzę, że to, co opisujesz, jest już zaimplementowane w
caret
pakiecie. Spójrz narfe
funkcję lub winietę tutaj: http://cran.r-project.org/web/packages/caret/vignettes/caretSelection.pdfTeraz, powiedziawszy to, dlaczego musisz zmniejszyć liczbę funkcji? Od 70 do 20 nie jest tak naprawdę spadkiem rzędu wielkości. Sądzę, że potrzebujesz więcej niż 70 funkcji, zanim będziesz miał zdecydowane przekonanie, że niektóre funkcje naprawdę i naprawdę nie mają znaczenia. Ale z drugiej strony, przypuszczam, że tutaj pojawia się subiektywny przeor.
źródło
Nie ma powodu, dla którego częstotliwość wyboru zmiennych dostarcza jakichkolwiek informacji, których nie otrzymujesz z pozornego znaczenia zmiennych w modelu początkowym. Jest to zasadniczo powtórzenie początkowego znaczenia statystycznego. dodajesz także nowy poziom arbitralności, gdy próbujesz zdecydować o wartości granicznej dla częstotliwości wyboru. Wybór zmiennych ponownego próbkowania jest poważnie uszkodzony przez kolinearność oprócz innych problemów.
źródło
Poprawiłem swoją odpowiedź z dzisiejszego dnia wcześniej. Wygenerowałem teraz kilka przykładowych danych, na których można uruchomić kod. Inni słusznie zasugerowali, abyś zastanowił się nad użyciem pakietu Caret, z którym się zgadzam. Jednak w niektórych przypadkach może być konieczne napisanie własnego kodu. Poniżej próbowałem zademonstrować, jak używać funkcji sample () w R do losowego przypisywania obserwacji do fałdów walidacji krzyżowej. Używam również pętli do przeprowadzania wstępnej selekcji zmiennych (przy użyciu regresji liniowej jednowymiarowej z łagodnym odcięciem wartości p 0,1) i budowania modelu (przy użyciu regresji krokowej) na dziesięciu zestawach treningowych. Następnie możesz napisać własny kod, aby zastosować powstałe modele do fałdów sprawdzania poprawności. Mam nadzieję że to pomoże!
Przed przeprowadzeniem walidacji krzyżowej ważne jest, aby przeczytać o jej właściwym użyciu. Te dwa odniesienia oferują doskonałe dyskusje na temat walidacji krzyżowej:
Te artykuły są skierowane do biostatystów, ale przydałyby się każdemu.
Pamiętaj też, że stosowanie regresji krokowej jest niebezpieczne (chociaż stosowanie weryfikacji krzyżowej powinno pomóc w złagodzeniu nadmiernego dopasowania). Dobra dyskusja na temat regresji krokowej jest dostępna tutaj: http://www.stata.com/support/faqs/stat/stepwise.html .
Daj mi znać, jeśli masz dodatkowe pytania!
źródło
Właśnie znalazłem tutaj coś ładnego: http://cran.r-project.org/web/packages/Causata/vignettes/Causata-vignette.pdf
Spróbuj tego, może podczas korzystania z pakietu glmnet
źródło