随机森林时间序列的变量重要性在R中的应用

3
我在R中使用randomForest包和滚动窗口来预测金融时间序列(股票)的回报率。我为此开发了一组特征,我的目标是了解它们的相对预测能力。
我的挑战在于,我不能使用随机森林的变量重要性功能,因为我的大多数特征与它们的最近过去高度相关。例如,移动平均跨越几天的窗口,这意味着它包含数据集中几个观察值的信息。
这意味着由随机森林生成的out-of-bag样本将与随机森林用于训练模型的in-sample特征相关。因此,我从中得到的变量重要性将非常乐观和过度拟合。
我看到的解决方案是以某种方式计算测试集上的变量重要性,而不是使用OOB交叉验证。目标是确保与训练集绝对没有相关性。
我的问题是:是否存在一个可以从测试集中计算和提取变量重要性的R包,而不是标准的OOB交叉验证集?如果没有,您能否建议一种实现此目标的方法?谢谢您的帮助。
1个回答

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等等


谢谢您对此的看法。看起来我可能必须自己编写程序。我希望能够避免这一步骤。R包caret有一个名为RFE(递归特征消除)的功能,非常有趣,但是由于特征之间的时间相关性,似乎必须使用交叉验证,这是一个问题。下面提到的算法2听起来像是我的解决方案(外部重采样),但同样需要进行交叉验证。 http://topepo.github.io/caret/rfe.html 感谢您的见解! - Laplace Insights

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接