【问题标题】:Variable importance for Random Forests time series in RR中随机森林时间序列的可变重要性
【发布时间】:2016-09-12 16:49:00
【问题描述】:

我在 R 中使用带有滚动窗口的 randomForest 包来预测金融时间序列(股票)的回报。为此,我开发了一篮子功能,我的目标是了解它们的相对预测能力。

我的挑战是我不能使用随机森林的可变重要性特征,因为我的大多数特征都与它们最近的过去高度相关。例如,移动平均线跨越几天的窗口,这意味着它包含我数据集中多个观察值的信息。

这意味着随机森林生成的袋外样本将与随机森林用来训练我的模型的样本内特征相关联。因此,我从中得到的可变重要性将是高度乐观和过度拟合的。

我看到的解决方案是以某种方式计算样本外测试集上的变量重要性,而不是使用 OOB 交叉验证。目标是确保与训练集完全没有相关性。

我的问题:R 中是否存在用于从测试集而不是标准 OOB 交叉验证集计算和提取变量重要性的包?如果没有,您能否提出实现这一目标的方法?感谢您的帮助。

【问题讨论】:

    标签: r machine-learning time-series random-forest cross-validation


    【解决方案1】:

    哇,太好了,您想到了这些与样本内特征的相关性。

    确实,在测试集上运行变量重要性是一个更好的主意。我认为您可以轻松地自己编程。这是一些伪代码

    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 包插入符号有一个有趣的 RFE(递归特征消除)功能,但看起来您必须使用交叉验证,这是由于功能时间相关性的问题。下面提到的算法 2 听起来像我的解决方案(外部重采样),但同样,看起来我必须交叉验证。 topepo.github.io/caret/rfe.html 感谢您的洞察力!
    猜你喜欢
    • 2016-06-24
    • 1970-01-01
    • 2015-05-19
    • 2020-11-10
    • 2017-08-29
    • 2019-01-06
    • 2020-06-06
    • 2012-06-10
    • 2021-05-09
    相关资源
    最近更新 更多