Ich verwende das randomForest-Paket in R mit einem rollenden Fenster, um Renditen für eine finanzielle Zeitreihe (eine Aktie) vorherzusagen. Ich habe zu diesem Zweck einen Korb von Features entwickelt und mein Ziel ist es, ihre relative Vorhersagekraft zu verstehen.Variable Wichtigkeit für die Zeitreihen von Random Forests in R
Meine Herausforderung ist, dass ich die variable Wichtigkeitsfunktion von Random Forest nicht verwenden kann, da die meisten meiner Features einen hohen Grad an Korrelation mit ihrer jüngsten Vergangenheit haben. Zum Beispiel erstreckt sich ein gleitender Durchschnitt über ein Fenster von mehreren Tagen, was bedeutet, dass er Informationen über mehrere Beobachtungen in meinem Datensatz enthält.
Dies bedeutet, dass die Out-of-Bag-Stichproben, die durch zufällige Gesamtstruktur generiert werden, mit den In-Sample-Features korreliert werden, die zufällige Fortsätze zum Trainieren meines Modells verwenden. Daher wäre die variable Bedeutung, die ich daraus ziehen würde, sehr optimistisch und übersteuert.
Die Lösung, die ich sehe, besteht darin, eine variable Bedeutung für eine Testgruppe außerhalb der Stichprobe zu berechnen, anstatt die OOB-Kreuzvalidierung zu verwenden. Ziel ist es, absolut keine Korrelation mit dem Trainingssatz zu gewährleisten.
Meine Frage: Existiert ein Paket in R, um Variablenbedeutung aus einem Testsatz zu berechnen und zu extrahieren, anstatt aus dem Standard-OOB-Kreuzvalidierungssatz? Wenn nicht, können Sie einen Ansatz vorschlagen, um dieses Ziel zu erreichen? Danke für Ihre Hilfe.
Vielen Dank für Ihre Gedanken zu diesem Thema. In der Tat sieht es so aus, als müsste ich es vielleicht selbst programmieren. Ich hatte gehofft, diesen Schritt zu retten. Das R-Paket Caret hat eine Funktion für RFE (Rekursive Feature Elimination), die interessant ist, aber es sieht aus wie Sie Cross-Validierung verwenden müssen, die ein Problem aufgrund der zeitlichen Korrelation der Features ist. Der Algorithmus 2, der unten erwähnt wird, klang wie meine Lösung (externes Resampling), aber wieder sieht es so aus, als müsste ich eine Kreuzvalidierung durchführen. http://topepo.github.io/caret/rfe.html Danke für die Einsicht! –