时间序列论文1——Forecasting at Scale

时间:2024-10-27 09:04:49

目录

  • 0. AI总结
    • 0.1 文章概述
    • 0.2 研究背景
    • 0.3 研究思路
    • 0.4 研究结论与讨论
  • 1. Introduction
  • 2 Features of Business Time Series
  • 3 The Prophet Forecasting Model
    • 3.1 The Trend Model
    • 3.2 Seasonality
    • 3.3 Holidays and Events
    • 3.4 Model Fitting
    • 3.5 Analyst-in-the-Loop Modeling
  • 4 Automating Evaluation of Forecasts
    • 4.1 Use of Baseline Forecasts
    • 4.2 Modeling Forecast Accuracy
    • 4.3 Simulated Historical Forecasts
    • 4.4 Identifying Large Forecast Errors
  • 5 Conclusion
  • 6 Acknowledgements
  • python复现
      • 代码解释:

0. AI总结

0.1 文章概述

本文介绍了一种在大规模情况下进行预测的实用方法,结合了可配置的模型和分析师参与的性能分析。作者提出了一种模块化回归模型,具有可解释的参数,分析师可以根据对时间序列的领域知识直观地调整模型。作者还描述了用于比较和评估预测过程的性能分析,并自动标记需要人工审查和调整的预测。这种方法可以帮助分析师充分利用他们的专业知识,从而可靠地进行业务时间序列的预测。

0.2 研究背景

本篇文章的研究背景是关于大规模预测的方法和技术。作者指出,传统的预测方法包括统计预测和判断性预测,但它们各自存在一些局限性。统计预测需要较少的领域知识和人力投入,但在应对变化条件时可能不够灵活。判断性预测可以包含更多信息并对变化条件做出更好的响应,但需要分析师进行大量的工作。因此,作者提出了一种“分析师参与建模”的方法,旨在将统计预测和判断性预测的优势结合起来。该方法允许分析师通过调整模型参数来改进模型,从而提高预测准确性。此外,文章还介绍了自动评估预测质量和良好的可视化工具的重要性。总之,本篇文章的研究背景是探索如何在大规模预测中充分利用统计预测和判断性预测的优势,并提供相应的方法和工具。

0.3 研究思路

本研究的研究思路是解决大规模预测问题的挑战,其中包括可配置的模型和分析师参与的性能分析。我们提出了一种模块化回归模型,具有可解释的参数,可以由具有时间序列领域知识缺乏时间序列建模经验的分析师直观地调整。我们描述了用于比较和评估预测过程的性能分析,并自动标记需要手动检查和调整的预测。通过帮助分析师有效地利用他们的专业知识,我们能够可靠地进行实际的业务时间序列预测

0.4 研究结论与讨论

1、研究结论:本文的研究结论是,在大规模预测中,使用简单的模型和基准方法可以得到较好的预测结果。同时,通过人工干预和调整模型,可以进一步提高预测准确性。

2、研究的创新性:本研究的创新之处在于提出了一种基于分析师参与的大规模预测方法。该方法结合了简单的模型和基准方法,并通过人工干预和调整模型来提高预测准确性。

3、研究的不足之处:本研究的不足之处在于没有详细讨论模型的具体参数选择和调整方法。此外,对于大规模预测的计算和存储问题,本文没有进行深入探讨。

4、研究展望:根据本研究,后续可能的研究方向包括进一步改进和优化预测模型,探索更有效的参数选择和调整方法。此外,可以研究如何更好地解决大规模预测的计算和存储问题。

5、研究意义:本研究的理论意义在于提供了一种基于分析师参与的大规模预测方法,为业务预测提供了一种可行的解决方案。实践意义在于帮助分析师在大规模预测中更有效地利用有限的时间和资源,提高预测准确性,并及时发现和纠正可能存在的问题。

1. Introduction

在这里插入图片描述
这张图片展示了一种称为"analyst-in-the-loop"(分析员在环)的预测方法的示意图。这个方法结合了人类和自动化任务,以在规模上进行预测。流程包括以下几个步骤:

  1. 建模(Modeling):建立预测模型。
  2. 预测评估(Forecast Evaluation):对模型的预测结果进行评估。
  3. 问题显现(Surface Problems):识别和呈现出预测中出现的问题。
  4. 视觉检查预测(Visually Inspect Forecasts):分析员对预测结果进行视觉检查,以发现潜在的错误或改进的机会。

整个过程是一个循环,确保不断改进预测的准确性。图片中的虚线将自动化部分和分析员介入的部分分开,展示了两者如何在不同环节中发挥作用。这种方法通过人类和机器的协同作用,力求在预测任务中取得最佳效果。
在这里插入图片描述

2 Features of Business Time Series

3 The Prophet Forecasting Model

3.1 The Trend Model

3.2 Seasonality

3.3 Holidays and Events

3.4 Model Fitting

3.5 Analyst-in-the-Loop Modeling

4 Automating Evaluation of Forecasts

4.1 Use of Baseline Forecasts

4.2 Modeling Forecast Accuracy

4.3 Simulated Historical Forecasts

4.4 Identifying Large Forecast Errors

5 Conclusion

6 Acknowledgements

python复现

下面是一个基于论文中描述的方法的Python代码示例,使用Facebook开源的Prophet库来实现时间序列预测。这个示例包括了数据准备、模型配置和预测过程。

首先,确保已经安装了prophet库,可以使用以下命令进行安装:

pip install prophet
  • 1

然后,可以使用以下代码来复现论文中的核心方法:

import pandas as pd
from prophet import Prophet
import matplotlib.pyplot as plt

# 示例数据准备
# 创建一个包含日期和随机生成数值的DataFrame
# 实际使用时,替换成你的实际数据
date_rng = pd.date_range(start='1/1/2020', end='1/01/2023', freq='D')
df = pd.DataFrame(date_rng, columns=['ds'])
df['y'] = np.random.randn(len(date_rng))  # 使用实际的时间序列数据替换这行

# 初始化Prophet模型
model = Prophet()

# 添加季节性和假期信息(可选)
# 如果有具体的假期数据,可以像下面这样添加
# holidays = ({
#   'holiday': 'example_holiday',
#   'ds': pd.to_datetime(['2020-01-01', '2021-01-01', '2022-01-01']),
#   'lower_window': 0,
#   'upper_window': 1,
# })
# model = Prophet(holidays=holidays)

# 训练模型
model.fit(df)

# 创建未来数据框
future = model.make_future_dataframe(periods=365)

# 进行预测
forecast = model.predict(future)

# 绘制预测结果
fig = model.plot(forecast)
plt.show()

# 如果需要,还可以绘制预测组件
fig2 = model.plot_components(forecast)
plt.show()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40

代码解释:

  1. 数据准备

    • date_rng:生成从2020年1月1日到2023年1月1日的日期范围。
    • df:创建一个包含日期和随机生成数值的DataFrame,实际使用时应替换为实际时间序列数据。
  2. 初始化Prophet模型

    • 使用Prophet()初始化模型。如果有假期数据,可以通过holidays参数添加。
  3. 训练模型

    • 使用(df)来训练模型。
  4. 创建未来数据框

    • 使用make_future_dataframe创建一个包含未来日期的数据框。
  5. 进行预测

    • 使用进行预测,并将结果存储在forecast中。
  6. 绘制预测结果和组件

    • 使用model.plot_components分别绘制预测结果和预测组件。

这个示例展示了如何使用Prophet库来进行时间序列预测。