我在R中使用带有滚动窗口的randomForest包来预测金融时间序列(股票)的回报。为此目的,我已经开发了一系列功能,我的目标是了解它们的相对预测能力。
我的挑战是我无法使用随机森林的变量重要性功能,因为我的大部分功能都与他们最近的过去有很高的相关性。例如,移动平均值跨越几天的窗口,这意味着它包含我数据集中多个观察的信息。
这意味着随机森林生成的袋外样本将与随机森林用于训练模型的样本内特征相关联。因此,我从中获得的变量重要性将非常乐观并且过度拟合。
我看到的解决方案是以某种方式计算样本外测试集的变量重要性,而不是使用OOB交叉验证。目标是确保与训练集完全无关。
我的问题:R中是否存在一个包来计算并从测试集中提取变量重要性而不是标准的OOB交叉验证集?如果没有,您能否提出实现这一目标的方法?谢谢你的帮助。
答案 0 :(得分: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等等