【发布时间】:2019-03-23 09:58:54
【问题描述】:
我的随机森林模型性能在测试数据和新数据之间存在巨大差异。
我的模型的目标是根据同一股票的时间序列数据预测未来期间的股票收益。我在 Python 中使用 scikit-learn 应用随机森林分类器来预测回报十分位数,而不是实际的价格变化。我使用了截至 2017 年 6 月的数据,并在 80% 的数据上训练了模型,并在 20% 上进行了测试。结果很好。大于或小于 1 个十分位数的错误分类概率为 3%。这意味着,如果模型预测回报率将下降到十分位 5,则实际回报率将低于十分位 4 或高于十分位 6 的情况下只有 3%。我对此非常满意。
但是,当我将模型应用于“新数据”时,从 2017 年 7 月 1 日至今,我得到了可怕的结果。错误分类的概率 >+/-1 十分位跃升至 60%!!!
我认为问题是由于树的深度而过度拟合。但事实并非如此。我将 min_samples_leaf 设置为 20 甚至 40,实际上它使对新数据的预测变得更糟。
还能是什么?如果模型在历史测试数据上表现如此出色,为什么它在新数据上表现如此不同。新数据的性质不可能如此不同。
【问题讨论】:
-
很难说不确切知道你在看什么股票,但断言:“新数据的性质不可能有那么不同”通常是错误的股票,市场随着时间的推移而动态变化在个股水平上,很难从过去推断出很多关于未来的信息。出于某种原因,大多数金融产品的招股说明书都贴满了“过去的表现并不能成为未来的指南”。
-
我听到了,但在没有进入有效市场假设讨论的情况下,该模型确实在测试 20% 的训练中保留的历史数据时显示出巨大的希望。测试数据和新数据之间的差异不应该是导致史诗失败的重要原因???这里还缺少其他东西......
-
在不知道你在看什么股票的情况下很难说(如果你分享一些会有所帮助),但是有很多股票价格分布,其中训练数据集表现良好,未来预测完全可怕:1920 年前的马车公司、1930 年前的湖冰出口商、1960 年代前的打卡电脑制造商等等。
标签: python scikit-learn random-forest