亚马逊AWS官方博客
Amazon Forecast 现在支持按您选择的分位数生成预测
我们很高兴地宣布,Amazon Forecast 现在可以按您选择的分位数生成预测。
Forecast 在 re:Invent 2018 大会上推出并从 2019 年 8 月起全面开放,是一项完全托管的服务,使用机器学习生成高度准确的预测,用户无需事先具备任何机器学习经验。Forecast 适用于十分广泛的用例,包括估算产品需求、供应链优化、能源需求预测、财务规划、劳动力规划、云基础设施使用量的计算以及流量需求预测等。
Forecast 是一项完全托管的服务,基于与 Amazon.com 使用的相同技术,无需预置任何服务器。此外,您只需按照使用量付费,没有最低费用或预先承诺。您只需提供所需预测的事项的历史数据即可开始使用 Forecast,或者您认为可能影响预测的任何额外数据。后者可能包括价格、事件、天气等会随时间推移变化的数据,以及颜色、类型或区域等分类数据。该服务会根据您的数据自动训练和部署机器学习模型,并且还将提供一个可用于下载预测的自定义 API。
与大多数其他生成点预测 (p50) 解决方案不同,Forecast 可以按三个默认分位数生成概率预测:10% (p10)、50% (p50) 和 90% (p90)。您可以根据业务对资金成本(预测过高)与错过客户需求(预测不足)的平衡,选择最适合自己业务需求的预测。对于 p10 预测,实际值预计会在 10% 的时间低于预测值。如果投资资本的成本很高(例如产品库存过多),p10 分位预测有利于减少订购货品的数量。同理,对于 p90 预测,实际值预计会在 90% 的时间低于预测值。如果错过客户需求将导致严重的收入损失或者客户体验不佳,则 p90 预测更有帮助。有关更多信息,请参阅评估预测器准确率。
尽管 Forecast 支持的三个现有分位数十分有用,但也存在局限性,原因有两个。首先,固定的分位数并不总是满足特定用例的要求。例如,如果必须不惜一切代价满足客户需求,则 p99 预测可能比 p90 预测更有用。
其次,由于 Forecast 始终会默认生成三个不同分位数的预测,因此您需要支付三个分位数的费用,即使只有一个分位数与您的决策过程相关。现在,Forecast 允许您覆盖默认分位数,并选择最多五个分位数(介于 1% 和 99% 之间的任何分位数,包括均值)。您可以通过在 CreateForecast API 中传递一个可选参数或者直接在 AWS 管理控制台中指定覆盖分位数,从而完成此操作。您可以继续通过控制台或 QueryForecast API 查询您的预测。
本文将介绍如何通过控制台使用此新功能。您也可以通过 CreateForecast API 使用此功能。
为了演示此功能,我们将使用之前博文 Amazon Forecast – 现已正式发布中相同的示例。该示例使用 UCI 机器学习库中的个人家庭用电数据集。有关如何在 Forecast 中创建预测器的更多信息,请参阅之前的博文。
在预测器激活后,打开控制台以生成预测或使用 CreateForecast API。在创建预测页面,有一个新的可选参数叫做预测类型,您可以在此覆盖默认的 .10、.50 和 .90 分位数。
在本文中,我们添加自定义的 .10、.35、均值、.75 和 .99 分位数。
可接受的值包括介于 .01 和 .99 之间的任何值(以 .01 为增量),包括均值。当分布为非对称分布(例如贝塔分布和负二项分布)时,均值预测不同于中位数 (.50)。在这种情况下,由于您指定了五个分位数,您将需要为所有五个分位数付费。例如,如果您为 5000 个时间序列生成了的预测,您将需要支付 25000 个不同预测的费用。由于服务的账单是以 1000 为单位,因此总费用为 25 x 0.60 USD= 15 USD。有关最新定价计划的更多信息,请参阅 Amazon Forecast 定价。
当预测激活后,您可以在控制台使用Forecast 查询工具来查询和可视化预测。
下图显示了特定时间序列(在此例中为“client_12”)的历史需求和预测。在 CreateForecast 过程中指定的所有分位数(在此例中为 .10、.35、均值、.75 和 .99)都在此处显示。
除了在控制台中查询预测外,您还可以将预测作为 .csv 文件导出至您选择的 Amazon S3 存储桶。导出的 .csv 文件包含所有时间序列以及所选分位数的预测。在我们的具体示例中,这是按所选五个分位数计算的每个客户的能源需求预测。要导出预测,您可以使用 CreateForecastExportJob API 或通过控制台中的“创建预测导出”按钮(如下图所示)。
单击“创建预测导出”后,您将进入下面的详细信息页面。您将此处指定导出作业的名称,指定预测、IAM 角色以及您要存储文件的 S3 存储桶。
导出作业完成后,您可以导航至 S3(通过控制台)并验证该文件已经在相关 S3 存储桶中创建。
下表显示了 csv 文件的内容,也就是对于整个预测区间内为每个客户端指定的所有分位数生成的预测。
item_id |
date | p10 | p35 | mean | p75 | p99 |
client_111 | 2015-01-01T01:00:00Z | 48.89389038 | 69.03968811 | 75.33065033 | 88.43639374 | 174.2510834 |
client_111 | 2015-01-01T02:00:00Z | 49.26203156 | 67.66025543 | 72.34096527 | 85.50863647 | 148.0922241 |
client_111 | 2015-01-01T03:00:00Z | 46.06879807 | 67.83860016 | 76.61499786 | 83.54689789 | 225.3299561 |
client_111 | 2015-01-01T04:00:00Z | 45.66434097 | 65.45301056 | 73.38169098 | 88.51142883 | 138.77005 |
client_111 | 2015-01-01T05:00:00Z | 43.5483017 | 66.55085754 | 70.6720047 | 88.17260742 | 144.4982605 |
client_111 | 2015-01-01T06:00:00Z | 50.08174133 | 67.60101318 | 75.05982971 | 83.4147644 | 206.5582886 |
client_111 | 2015-01-01T07:00:00Z | 50.79389954 | 66.47422791 | 78.7857666 | 90.23943329 | 222.6696167 |
client_111 | 2015-01-01T08:00:00Z | 58.11802673 | 67.99427795 | 76.23995209 | 88.22603607 | 185.4029236 |
client_111 | 2015-01-01T09:00:00Z | 42.96152878 | 74.78701019 | 80.14347839 | 96.66455841 | 142.397644 |
client_111 | 2015-01-01T10:00:00Z | 59.34168243 | 72.34555054 | 80.24354553 | 94.45916748 | 164.3058929 |
client_111 | 2015-01-01T11:00:00Z | 53.01160049 | 72.67097473 | 79.31721497 | 90.48171234 | 208.0553894 |
client_111 | 2015-01-01T12:00:00Z | 47.87768173 | 69.18990326 | 77.85028076 | 89.63658905 | 143.6833801 |
client_111 | 2015-01-01T13:00:00Z | 46.98330688 | 71.60288239 | 86.48907471 | 87.89906311 | 1185.726318 |
小结
您现在可以使用 Forecast 按照您选择的分位数生成概率预测,从而构建适合自己用例的预测,并通过选择并支付您使用的分位数,从而降低费用。您现在就可以在所有开放 Forecast 的区域开始使用此功能。请通过 AWS 论坛 或者AWS Support 渠道分享您的反馈。
关于作者
Rohit Menon 是AWS 的一名高级产品经理,目前主管 Amazon Forecast 产品。他目前关注通过使用机器学习实现时间序列预测的普及。闲暇时间,他喜欢阅读和观看纪录片。
Ammar Chinoy 是 AWS 负责 Amazon Forecast 的一名高级软件开发经理。