伪先知:将回归模型与Meta的先知进行比较

还原真相:回归模型与元模型的对比

我的弗兰肯斯坦式时间序列回归模型——受先知的启发——能与真正的模型相竞争吗?

Photo by Piret Ilver on Unsplash

这将是我在利用Meta出色的预测软件Prophet进行建模的旅程中最后一篇文章,我将对比一下我自己编写的版本与原版的差异。

这将是个简短的过程:首先我们会查看数据,然后可视化这两种方法对于预测未来数据的表现。然后我们将根据一些指标来确定哪一个是更好的预测模型,最后我们会讨论这是否是一个公平的比较。

让我们开始吧。

附注:我提到了其他文章——确切地说有另外两篇文章。第一篇文章介绍了时间序列的特征工程,基于Prophet的方法,你可以在这里找到:

虚幻先知:自制时间序列回归的特征工程

在Meta的Prophet软件的基础上构建强大的时间序列机器学习特征

towardsdatascience.com

续集中,我通过使用我们新设计的特征来构建模型。它在这里:

虚幻先知:自制时间序列回归模型

借鉴Meta的Prophet构建强大的时间序列回归模型

towardsdatascience.com

今天讨论的很多主题在链接的文章中都有更详细的内容——如果你对细节感兴趣,不妨读一读。

数据

我们使用的是英国道路交通事故数据¹,以每月计数的形式进行统计。

Image by author

时间序列中存在一些特征:

  • 整个序列呈现强烈的下降趋势
  • 在2012年和2014年之间出现下降速度的变化
  • 序列的早期部分呈现明显的季节性
  • 可能存在变化的季节效应,尤其是在序列结束时。

游戏目标

我们有两个模型——我们将把自制的弗兰肯斯坦模型称为LASSO模型,而Meta的Prophet则是…先知。

对于每个模型,我们将生成针对未来时间的预测。这基本上是指使用我们的每月计数数据的子集进行拟合,然后向未来预测12个月。

每个预测将与观测到的实际数据进行比较;平均而言,最接近的模型获胜。

附注:这本质上是一个交叉验证测试。如果你对标准的交叉验证方法很熟悉,但在时间序列分析中没有使用过,你可能会发现下面的(2)对你非常有用。

以图片形式呈现

我们可以将每个模型的预测结果以图片的形式展示出来 — LASSO模型用红色表示,Prophet用蓝色表示 — 并将它们与实际结果进行对比。

我们应该记住,每个预测都是使用预测期之前的所有数据进行构建的。例如,2010年的预测是使用截至2009年的数据构建的。

Image by author

那是一幅相当清晰的图片:除了2013年外,先知似乎在某种程度上偏离了标记。

有趣的是,两种方法所创建的预测模式的相似之处:

  • 两种模型都产生较低的预测结果 – 即它们反映出整体的普遍下降趋势。
  • 两种模型都有年内增长和中年高峰 – 即预测产生相似的季节性模式。

这两种模型与现实相差多远?我们需要查看一些绩效指标来找出答案。

数字上

我们将使用通常的性能衡量指标 – 平均绝对误差(MAE)、平均绝对百分比误差(MAPE)和均方根误差(RMSE) – 以及一个新手(对我至少来说是新手):MASE。

均值绝对缩放误差

均值绝对缩放误差(MASE)是一种“通用的适用于预测准确性的测量方法,不会出现其他测量中的问题”,并且“可以用于比较单个序列上的预测方法,也可以用于比较序列间的预测准确性”。

从数学上讲,MASE是一个无需时间预测错误与样本内预测错误之比,由简单的预测方法产生。由于我们使用的是月度数据,我将天真的预测预测定义为前一年同一时间点的值 – 例如,2012年5月的预测值就是2011年5月的值。非常天真。

在比较预测方法时,最低的MASE方法是首选的方法。

值得注意的是,MASE>1意味着与天真预测相比,预测方法表现不佳。

此外,我使用了链接文章中描述的实现 – 即“错误”是平均绝对误差。我相信我们可以在缩放误差计算中使用其他性能指标,例如MAPE,只要错误度量在缩放误差计算中保持一致。

结果

让我们用我们描述的指标总结离线和整体平均模型性能:

作者照片

LASSO模型在整体上取得了相当全面的胜利,先知只在某些地方稍稍超越。

刀枪之战?

正如我们所见,如果你是先知的粉丝,这并不是什么好消息:元工具设法窃取了一些(取决于度量)以避免完全失败。公正的评论人士可能会建议返回会所重新评估策略。

虽然对先知来说结果并不好,但有几个原因可以解释为什么会出现这样的表现。

特征

LASSO模型使用专门针对这个特定时间序列设计的特征。它可用的输入特征集合基本上是先知可用特征的超集,并且额外增加一些特征。

此外,LASSO模型中的某些特征与先知模型中的特征略有不同。例如,描述潜在变化点的特征在LASSO中的约束条件不如在先知中严格。

想象一下,试图超越别人,却知道比他们少 —— 或者略微不同。并不容易。

建模

离线数据并不像我所说的那样“未被见过”。

在之前的一篇文章中,我们讨论了LASSO模型参数化:我们如何使用离线数据来选择正则化强度,从而优化模型的预测能力。在这个意义上,LASSO模型已经调整到能够在每一次数据划分上有良好的预测能力,而先知模型则直接使用原始数据进行预测。

在“正常”的超参数优化练习中,我们通常可以预期性能提高约1%-2%;在时间序列环境中,性能提高可能更大,因为“离线”确实是“超出时间”的范围。

是时候结束与Prophet的合作了吗?

不那么快……这一系列的文章当然突出了一些问题 – 让我们一起讨论一下。

默认情况下,Prophet的工作效果非常好。虽然它确实可以被击败,但需要一些工作来做到这一点 – 远远超过你需要用10行代码来启动和预测Prophet。

LASSO模型的可解释性远远优于Prophet可提供的。是的,Prophet为我们提供了预测的不确定性估计,但我们不能确定实际驱动预测的因素。我甚至不确定我们能否对Prophet进行SHAP测试。

我还发现Prophet调参并不那么直观。也许是因为我不是该包的高级用户,也许是因为你必须通过迂回的方式来调整参数。而这在LASSO模型中显然不是这种情况。

虽然LASSO方法在性能和可解释性方面都有所改进,但也许我们真正需要的是同时使用这两种方法:一种作为另一种的试金石。例如,如果一个“天真”的Prophet模型产生合理的预测结果,复制LASSO方法(“伪先知”)来最大化性能可能是合理的。

就这些。希望您享受阅读这一系列文章,就像我写它们一样。

一如既往,请让我知道您的想法 – 我真的很想了解您使用Prophet或以不同方式建模时间序列的经验。

下次见。

参考和有用资源

  1. https://roadtraffic.dft.gov.uk/downloads根据Open Government Licence(nationalarchives.gov.uk)使用
  2. Let’s Do: Time Series Cross-Validation | Python in Plain English
  3. Mean absolute scaled error – 维基百科