Ich habe einen Datensatz mit ungefähr 70 Variablen, die ich reduzieren möchte. Ich möchte den Lebenslauf verwenden, um die nützlichsten Variablen auf folgende Weise zu finden.
1) Wählen Sie zufällig etwa 20 Variablen aus.
2) Verwenden Sie stepwise
/ LASSO
/ lars
/ etc, um die wichtigsten Variablen auszuwählen.
3) Wiederholen Sie ~ 50x und sehen Sie, welche Variablen am häufigsten ausgewählt (nicht eliminiert) werden.
Dies entspricht dem, was ein randomForest
tun würde, aber das rfVarSel
Paket scheint nur für Faktoren / Klassifizierung zu funktionieren, und ich muss eine kontinuierliche abhängige Variable vorhersagen.
Ich benutze R, damit alle Vorschläge dort idealerweise umgesetzt werden.
Antworten:
Ich glaube, was Sie beschreiben, ist bereits im
caret
Paket implementiert . Schauen Sie sich dierfe
Funktion oder die Vignette hier an: http://cran.r-project.org/web/packages/caret/vignettes/caretSelection.pdfWarum müssen Sie nun die Anzahl der Funktionen reduzieren? Von 70 auf 20 ist nicht wirklich eine Größenordnung Abnahme. Ich würde denken, dass Sie mehr als 70 Funktionen benötigen würden, bevor Sie fest davon überzeugt wären, dass einige der Funktionen wirklich und wirklich keine Rolle spielen. Aber hier kommt wohl ein subjektiver Prior ins Spiel.
quelle
Es gibt keinen Grund, warum die Häufigkeit der Variablenauswahl Informationen liefert, die Sie nicht bereits aus der offensichtlichen Bedeutung der Variablen im ursprünglichen Modell erhalten. Dies ist im Wesentlichen eine Wiederholung von anfänglicher statistischer Signifikanz. Sie fügen auch eine neue Ebene der Willkür hinzu, wenn Sie versuchen, einen Grenzwert für die Auswahlhäufigkeit festzulegen. Die Auswahl der Resampling-Variablen wird zusätzlich zu den anderen Problemen durch Kollinearität stark beschädigt.
quelle
Ich habe meine Antwort von heute früher überarbeitet. Ich habe jetzt einige Beispieldaten generiert, auf denen der Code ausgeführt werden soll. Andere haben zu Recht vorgeschlagen, dass Sie die Verwendung des Caret-Pakets prüfen, dem ich zustimme. In einigen Fällen kann es jedoch erforderlich sein, eigenen Code zu schreiben. Im Folgenden habe ich versucht zu demonstrieren, wie die sample () - Funktion in R verwendet wird, um Beobachtungen zufällig Kreuzvalidierungsfalten zuzuweisen. Ich verwende auch for-Schleifen, um eine variable Vorauswahl (unter Verwendung einer univariaten linearen Regression mit einem milden p-Wert-Cutoff von 0,1) und eine Modellbildung (unter Verwendung einer schrittweisen Regression) für die zehn Trainingssätze durchzuführen. Sie können dann Ihren eigenen Code schreiben, um die resultierenden Modelle auf die Validierungsfalten anzuwenden. Hoffe das hilft!
Bevor Sie eine Kreuzvalidierung durchführen, ist es wichtig, dass Sie sich über die ordnungsgemäße Verwendung informieren. Diese beiden Referenzen bieten hervorragende Diskussionen zur Kreuzvalidierung:
Diese Artikel richten sich an Biostatistiker, wären aber für jeden nützlich.
Denken Sie auch immer daran, dass die schrittweise Regression gefährlich ist (obwohl die Verwendung der Kreuzvalidierung zur Verringerung der Überanpassung beitragen sollte). Eine gute Diskussion der schrittweisen Regression finden Sie hier: http://www.stata.com/support/faqs/stat/stepwise.html .
Lassen Sie mich wissen, wenn Sie weitere Fragen haben!
quelle
Ich habe hier gerade etwas Schönes gefunden: http://cran.r-project.org/web/packages/Causata/vignettes/Causata-vignette.pdf
Versuchen Sie dies möglicherweise, wenn Sie das glmnet-Paket verwenden
quelle