View a markdown version of this page

附录 A:常见问题解答 - 使用 Amazon Forecast 的时间序列预测原理

附录 A:常见问题解答

问:如何开始使用 Amazon Forecast?

  1. 首先,您需要一个 AWS 账户。

  2. 接下来,在 AWS Management Console 中打开 Forecast 服务,创建一个数据集组,然后将 .csv 文件导入到目标时间序列数据集(必需)。开始所需的最低数据是您想要预测的数量的历史数据,例如每个家庭每个时间戳的用电量。

  3. 最后,通过运行 CreatePredictor 来创建模型,然后通过运行 CreateForecast 来生成结果。有关更多详细信息,请参阅入门文档页面。

另请参阅 GitHub 简介和最佳实践指南

问:Amazon Forecast 适合我吗?

并非所有的机器学习问题都是预测问题。要问的第一个问题是:“我的业务问题是否在陈述中包含时间序列?” 例如,您是否只需要未来某个特定时间和日期的特定值? 预测不适合于一般的静态(特定日期/时间无关紧要)问题,例如欺诈检测或向用户推荐电影片名。对于静态问题,有更快的解决方案。

除了具有时间序列数据外,数据本身应该是“密集的”,并且具有较长的历史。下表对此进行了总结:

表 2 – 标准和 Amazon Forecast 算法类

标准 Amazon Forecast 算法类
包含多达 500 万个时间序列的大型数据集,具有相似的基础模式 + 季节效应 + 相关数据。每个时间序列都应该有很长的历史,如果试图捕捉年度事件,则最好超过两年,并且每个时间序列都应超过 300 个,理想情况下至少有 1000 个数据点。 Amazon Forecast 专有深度学习 DeepAR+、CNN-QR
包含 1-100 个时间序列的小型数据集,其中大多数时间序列有 300 多个数据点 + 季节效应 + 相关数据。 Prophet
包含 1-10 个时间序列的小型数据集,其中大多数时间序列有 300 多个数据点 + 季节效应。 ETS、ARIMA
包含 1-10 个时间序列的间歇数据集(稀疏,包含许多 0),其中大多数时间序列有 300 多个数据点。 Amazon Forecast 专有 NPTS
包含 1-10 个时间序列的小型数据集(常规或稀疏数据集),其中大多数时间序列的数据点少于 300 个。 对于 Amazon Forecast 来说,数据太小了。改用 Excel 中的 ETS 或传统的统计模型 ARIMA 和 Prophet。

最佳做法是第一次在预测器中使用 AutoML 模式训练数据。AutoML 将自动运行所有算法(DL 算法在 HPO 开启时运行),以了解哪种算法对您的数据最有效。

问:缺失的数据是什么情况? 什么时候才能产生合理的预测?

可能是数据记录存在问题,或者数据的聚合水平过低或过高。一般规则是,预测长度不能超过训练数据的 1/3。

除了缺失的数据量外,另一个考虑因素是插补缺失的数据。您可以将所有 0 转换为空值,然后让 Amazon Forecast 完成自动插补缺失值的繁重工作。Amazon Forecast 将自动检测缺失值是由于新产品推出(冷启动)还是产品报废所致。您可以使用多个缺失值逻辑,包括值、中值、最小值、最大值、零、平均值和 nan(仅限目标时间序列)。请参阅空值填充语法文档

  • “frontfill”–(仅限 TTS)指的是新项目或冷启动项目,以及您想在项目开始有任何历史记录之前如何处理空值

  • “middlefill”– 指的是时间序列值中间的空值

  • “backfill”– 指的是生命周期已终止的项目,以及您想在项目停止销售后如何处理空值

  • “futurefill”–(仅限 RTS)指的是训练数据结束后出现的空值

问:我的输入历史数据没有负值,但是我在需求预测中看到负值? 为什么会发生这种情况? 如何避免出现这种情况?

对于除 NPTS(基于非负数据训练)和 DeepAR(具有负二项式似然函数)之外的所有模型,不能保证会生成正数。解决方案是更改为上述模型之一,或者将预测值截断为非负值。

问:为什么准确度指标在分位数上有所不同? 既然模型相同,错误不应该一样吗?

有关权重如何取决于分位数的更多说明,请参阅加权分位数损失(wQL)

想象一下,所有预测都位于三个不同的分位数:p10、p50、p90。这三个预测本身都是随机变量。准确度是在每个分位数级别的实际值和预测值之间分别计算的。您可能会看到一个“wQL”表,即加权分位数损失,如下所示。wQL 值彼此之间没有确定性关系。(召回损失意味着错误,因此是无序的;然而,分位数预测是有序的)。因此,例如,p90 wQL 没有理由必须大于 p50 wQL。 

表 3 – 预测分位数示例

A B, C
1 P10 wQL P50 wQL P90 wQL
2 0.18647 0.50879 0.30428

问:如何提高预测准确性?

预测的准确性取决于在数量和质量上是否有正确的数据。如果准确性不令人满意,那么了解问题的可预测性(或数据的随机性/噪声/平稳程度)可能是有意义的。其他需要考虑的因素包括,评估不同的模型、超参数设置,以及使用相关的时间序列和项目元数据集整合其他特征。有关具体建议,请参阅 GitHub 上的这份最佳实践文档

问:我有一个非常适合我的使用案例的算法,但 Amazon Forecast 中没有提供该算法。我应该怎么办?

Amazon Forecast 团队很乐意帮助您处理这个使用案例。通过电子邮件 联系 Amazon Forecast 的服务团队。