

# 附录 A：常见问题解答
<a name="appendix-a-faqs"></a>

 **问：如何开始使用 Amazon Forecast？** 

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

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

1.  最后，通过运行 [CreatePredictor](https://docs.aws.amazon.com/forecast/latest/dg/API_CreatePredictor.html) 来创建模型，然后通过运行 [CreateForecast](https://docs.aws.amazon.com/forecast/latest/dg/API_CreateForecast.html) 来生成结果。有关更多详细信息，请参阅[入门](https://docs.aws.amazon.com/forecast/latest/dg/getting-started.html)文档页面。 

 另请参阅 [GitHub 简介和最佳实践指南](https://github.com/aws-samples/amazon-forecast-samples/blob/master/ForecastCheatSheet.md)。 

 **问：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（仅限目标时间序列）。请参阅[空值填充语法文档](https://docs.aws.amazon.com/forecast/latest/dg/howitworks-missing-values.html)。 
+  “frontfill”–（仅限 TTS）指的是新项目或冷启动项目，以及您想在项目开始有任何历史记录之前如何处理空值 
+  “middlefill”– 指的是时间序列值中间的空值 
+  “backfill”– 指的是生命周期已终止的项目，以及您想在项目停止销售后如何处理空值 
+  “futurefill”–（仅限 RTS）指的是训练数据结束后出现的空值 

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

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

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

 有关权重如何取决于分位数的更多说明，请参阅[加权分位数损失（wQL）](https://docs.aws.amazon.com/forecast/latest/dg/metrics.html#metrics-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 上的这份最佳实践文档](https://github.com/aws-samples/amazon-forecast-samples/blob/master/ForecastCheatSheet.md#iteratebp)。 

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

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