1

我使用R中的randomForest包和滾動窗口來預測財務時間序列(股票)的收益。爲此我開發了一籃子功能,我的目標是瞭解他們的相對預測能力。隨機森林時間序列在R中的變量重要性

我的挑戰是我不能使用隨機森林的變量重要性特徵,因爲我的大多數特徵與他們最近的過去都有很高的相關性。例如,移動平均值跨越幾天的窗口,這意味着它包含我的數據集中多個觀察值的信息。

這意味着由隨機森林生成的袋外樣本將與隨機森林用於訓練我的模型的樣本內特徵相關聯。因此,我從中得到的重要性會非常樂觀和過度。

我看到的解決方案是以某種方式計算樣本外測試集的變量重要性,而不是使用OOB交叉驗證。目標是確保絕對不與訓練集相關。

我的問題:在R中是否存在一個包來計算和提取測試集中的變量重要性,而不是標準的OOB交叉驗證集?如果不是,你能提出一種實現這一目標的方法嗎?感謝您的幫助。

回答

0

哇,你很好的想到了這些與樣本內特徵的相關性。

事實上,在測試集上運行您的變量重要性是一個更好的主意。我想你可以很容易地自己編程。下面是一些僞代碼

check baseline performance metric 
for variable in variables: 
    random shuffle variable 
    check performance metric 
    save performance metric to disk 
barplot(performance metrics) 

你的性能指標可以是任何東西:交叉熵,準確性,ROC-AUC等

+0

感謝這個您的想法。事實上,看起來我可能不得不自己編程。我希望爲自己省下那一步。 R包插入符有一個有趣的RFE(遞歸功能消除)功能,但它看起來像您必須使用交叉驗證,這是由於功能的時間相關性所導致的一個問題。下面提到的算法2聽起來像我的解決方案(外部重採樣),但再次,看起來像我必須交叉驗證。 http://topepo.github.io/caret/rfe.html 感謝您的洞察! –