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 感谢您的洞察! –