测试数据和新数据之间的随机森林精度差异

时间:2018-10-18 14:42:51

标签: python scikit-learn random-forest

我是机器学习的新手,当我的随机森林模型性能在测试数据和新数据之间出现巨大差异时,我感到非常沮丧。任何见解将不胜感激。

我的模型的目标是根据同一股票的时间序列数据预测未来时期的股票收益。我在Python中使用scikit-learn应用了Random Forest Classifier来预测收益十分位数,而不是实际的价格变化。我使用了截至2017年6月的数据,并对80%的数据进行了模型训练,并对20%的数据进行了测试。结果很棒。大于或小于1十分位数的错误分类概率为3%。这意味着,如果模型预测收益率将在十分位数5中下降,那么实际收益率仅在3%的情况下会下降至十分位数4以下或高于十分位数6。我对此感到非常高兴。

但是,当我将模型应用于“新数据”时,从2017年7月1日到现在,我得到了可怕的结果。错误分类的可能性> +/- 1十分位数跃升至60%!!!

我认为由于树木的深度,问题过于适合。但事实并非如此。我将min_samples_leaf设置为20甚至40,实际上它使对新数据的预测更糟。

还有什么呢?如果该模型在历史测试数据上表现出色,那么为什么在新数据上却表现不同。新数据的性质不能有太大的不同。

谢谢大家。

1 个答案:

答案 0 :(得分:2)

这是一个广泛的问题,可能有许多原因导致新数据的性能较差,但我会尽力为您提供帮助:

  1. 过度拟合-分别检查训练数据和测试数据的RF得分->如果差异很大,并且训练集的误差很小,而测试数据的误差很大,那么您的模型可能存在过度拟合的问题。 / li>
  2. 尝试将一些新数据添加到模型中(例如,接下来的6个月,其余6个月需要验证)。如果该模型的性能好得多,那么价格可能存在潜在的基本因素,即导致价格在2017年7月之后改变其行为的因素。
  3. 特征和特征工程-与上一点有关,但是可能缺少某些内容,历史数据中并未真正考虑到这些内容。例如,在一段时间内,欧洲的能源价格上涨,原因之一似乎是碳价上涨。这是以前没有考虑到的,并在2018年“出现”,我相信直到最近,它才成为分析师的模型功能。对于您来说也可能是这样->可能发生了大事,或者必须添加一项功能才能使其在2018年工作。