亚马逊AWS官方博客
使用 Amazon Forecast 准确预测用电量
Amazon Forecast 是一种完全托管的服务,可使用机器学习 (ML) 生成高度准确的预测,而用户无需事先具备任何机器学习经验。Forecast 适用于各种使用案例,包括能源需求预测、产品需求估算、员工规划以及云基础设施使用量的计算。
使用 Forecast,无需预先配置服务器或手动构建机器学习模型。此外,您只需按照使用量付费,没有最低费用或预先承诺。您只需提供所需预测事项的历史数据即可开始使用 Forecast,当然您还可以输入您认为可能影响预测的任何额外数据。相关数据可能包括价格、事件、天气等会随时间推移变化的数据,以及颜色、流派或区域等相关的数据。此服务会根据您的数据自动训练和部署机器学习模型,并且还将提供一个用于检索预测的自定义 API。
电力与公用事业提供商具有多个预测使用案例,但其中最主要的是预测客户层面和总体层面的用电量。为防止客户面临任何服务中断,并在保持较低价格的同时提供稳定的电网系统,必须准确预测用电量。
本文探讨了如何使用 Forecast 将历史时间序列数据与关键的外生变量(例如天气)相结合来处理此使用案例。
使用案例背景
准确的电力预测对于确保公用事业高效地进行日常运营至关重要。电力预测尤其具有挑战性,因为需求是动态的,而且季节性天气变化可能会对此产生影响。以下是两个最常见的使用案例:
- 客户层面的用电量预测 – 在许多国家/地区,电力在竞争激烈的市场环境中提供。客户在购买电力时具有多种选择,如果他们的电费账单居高不下或者客户体验不佳,他们可能会选择更换提供商。作为公用事业提供商,您可以通过改善客户服务和主动发出未来账单支出提醒来减少客户流失。这些提醒建立在准确预测单个客户层面的用电量基础之上。
- 总体层面的用电量预测有助更好地管理供需 – 作为公用事业提供商,您必须平衡总体供需。您经常不得不购买能源来满足峰值需求,或者在现货市场出售过剩的产能。此外,出于以下原因,需求预测变得越来越具有挑战性:
- 引入可再生能源,例如风能和太阳能。这些能源归公用事业和最终用户所有,会受到天气变化的影响,而且不能保证一直产生稳定的电力。
- 电动汽车购买量的上升,以及车主希望何时在家充电的不确定性。改进的预测使您能够提前做出计划,以构建更具成本效益的期货合约。
本文重点关注第一个使用案例的解决方案(客户层面)。
首先是设置并准备数据。事实证明,数据湖对公用事业具有革命性意义。数据仓库是针对特定目的进行处理的结构化数据和过滤数据的存储库。而数据湖是以原生格式保存大量原始数据的存储库,在需要时才会更改格式。这对于电力或公用事业公司来说极具价值,可以收集、存储和处理数百万客户的电表读数。
解决方案架构
下图显示了您可以实施的、用以向客户提供账单提醒的解决方案架构。
该架构包含以下步骤:
- 住宅中的电表记录耗电量的频率通常为一小时或更短,并至少每天向公用事业公司报告一次。
- 您可以通过各种渠道提取数据。如果您在本地数据中心中收集数据,可以通过 AWS Direct Connect 将数据发送到 AWS。如果电表具有 IoT 功能,则可以通过 MQTT 主题将数据发送到 AWS IoT Core。MQTT 是一种机器对机器 (M2M)/IoT 连接协议,用于非常轻量级的发布和订阅消息传输。它适用于需要少量代码占用或网络带宽昂贵的远程位置的连接。
- 您使用 Amazon S3 存储原始电表数据。基于 Amazon S3 的数据湖解决方案使用 Amazon S3 作为其主要存储平台。由于 Amazon S3 具有无限的可扩展性,因此可以为数据湖提供最佳存储基础。您可以无缝地将存储空间从 GB 级增加到 PB 级,并仅按使用量付费。Amazon S3 可提供 99.999999999% 的持久性。您可以确定生命周期策略,以将数据存档到 Amazon S3 Glacier 中,这更具成本效益。有关更多信息,请参阅构建大数据存储解决方案(数据湖)以实现最大的灵活性。
- 将提取的数据放入 S3 存储桶中,称为原始区。当数据可用时,Amazon S3 触发器会调用一个 AWS Lambda 函数,该函数会对数据进行处理并将其迁移到另一个 S3 存储桶中,称为处理区。
- 您可以通过 Amazon Athena 查询 Amazon S3 中的数据。Athena 是一种交互式查询服务,可使用标准 SQL 直接轻松地分析 Amazon S3 中的数据。Athena 会为在查询结果位置(您可以在 Amazon S3 中指定)运行的每个查询自动存储查询结果和元数据信息。
- 您可以使用 Amazon QuickSight 访问查询结果存储桶。Amazon QuickSight 是一种业务分析服务,可用于构建可视化图形、执行临时分析并从数据中获取业务见解。它可以自动发现 AWS 数据源,也可以与您的数据源一起使用。
- 您可以使用 Amazon S3 中经过处理的数据,通过 Forecast 进行预测。住宅用户可以使用这些结果来预测未来的用电量,这让他们能够计算用电成本并转向更高效的定价计划或根据需要调整日后的使用情况。您可以使用 Query API 并将其与您的移动或 Web 应用程序集成,让客户了解未来需求状况并帮助增加消耗量。有关自动执行与 Forecast 相关的工作流的更多信息,请参阅 Automating your Amazon Forecast workflow with Lambda, Step Functions, and CloudWatch Events rule。
设置 Forecast
本文对预测个人客户层面用电量的两种不同方法进行了评估,一种没有相关时间序列信息,另一种有相关时间序列信息。
对于预测问题,相关时间序列信息是与目标值相关联的变量(例如天气或价格),并为目标值的预测提供统计优势(本文中是指能源需求)。更准确地说,Forecast 将相关时间序列视为外生变量。这些变量不属于模型规范,但是您可以使用它们来捕获相关时间序列的当前值与目标时间序列的相应值之间的相关性。
您可能无法一直通过合并相关时间序列来提高准确性。因此,您必须在回测的基础上添加任何相关时间序列,以检查添加相同的时间序列是否可以提高或保持总体准确性。Forecast 不需要相关时间序列,但需要目标时间序列。如果相关时间序列缺少值或具有其他质量问题,最好不要包含相同的时间序列,以免将噪声引入模型。本质上,决定哪个相关时间序列有用或如何有效使用它们是一个关键的特征工程任务。
有关更多信息,请参阅使用相关时间序列数据集。
使用 ARIMA 创建用电量预测模型
差分整合移动平均自回归模型 (ARIMA) 是经典的时间序列统计模型。它使用滞后值和预测误差的线性组合来表示时间序列值,用过去的值来解释未来的值。您可以将 ARIMA 与具有解释变量的差分整合移动平均自回归模型 (ARIMAX) 一起使用,也可以不使用相关时间序列或回归变量。当您应用 ARIMA 模型时,可能很难选择正确的模型顺序,这是一个主观手动过程。在 Forecast 中,您可以使用 auto.arima
自动找到最适合用于数据的 ARIMA 模型。
所使用的输入数据是单独的用电量数据。这是一个具有以下三个属性的 CSV 文件:<CustomerID>
、<Date>
和 <Energy consumption amount>
。用电量以 kWh(千瓦时)为单位。本文使用了 557 天的每日历史数据,但是您可以轻松使用每小时数据,此指标在行业中更常用。有关 Forecast 支持的频率的更多信息,请参阅 FeaturizationConfig。将数据文件上传到您选择的 S3 存储桶中。
以下屏幕截图为客户数据快照的示例。
下图形象显示了这些示例数据。
有关创建资源的更多信息,请参阅 Amazon Forecast – 现已正式发布。关键步骤如下:
- 在 Amazon Forecast 控制台上选择创建数据集组。
- 提供名称和预测域。
- 指定目标时间序列数据集:
Item_id
是公用事业<CustomerID>
。timestamp
是日期<YYYY-MM-DD>
,这是是每日消费数据。Target_value
是用电量。
- 创建一个导入作业,导入历史数据。确保 IAM 角色有权访问将 CSV 文件上传到的 S3 存储桶。
- 导入数据后,目标时间序列数据的状态显示为“活动”。
- 在控制面板上的训练预测工具下,选择开始。
- 对于算法,本文选择使用 ARIMA。
- 完成预测工具训练后,控制面板上的状态将显示为“活动”。
- 创建预测。
成功创建预测后,您可以查询特定客户 ID 的情况或运行导出作业,生成所有客户 ID 的结果。以下屏幕截图显示了 ID test
的预测用电量。
尽管此演练不包括温度等因素,但这是开始并使用目标时间序列数据建立基线模型的绝佳方法。此外,作为努力满足整体供需的公用事业提供商,您可以潜在地汇总所有客户数据并预测未来的用电量,以做出相应的供应计划。
使用 DeepAR+ 创建用电量预测模型
Forecast DeepAR+ 算法是一种使用循环神经网络 (RNN) 预测标量(一维)时间序列的监督式学习算法。ARIMA 或指数平滑法 (ETS) 等经典预测方法会将单个模型拟合到每个单独的时间序列中,而 DeepAR+ 会创建一个全局模型(所有时间序列共用一个模型),具有跨时间序列学习的潜在优势。
DeepAR+ 模型特别适用于处理大量(四位数以上)目标时间序列(其中某些时间序列信息量有限)。例如,为了预测每个家庭的用电量,DeepAR+ 等全局模型可以利用信息量更大的序列的统计优势更好地预测新家庭的用电量。此外,DeepAR+ 可以考虑相关时间序列,这有助于改善预测。
鉴于其与用电量的相关性,该使用案例添加了天气数据。关键步骤如下:
- 通过创建新的数据集导入作业,使用相关时间序列数据更新数据集组。此模型考虑了以下字段(
timestamp
和CustomerID
除外):dayofweek
dailyaveragedrybulbtemperature
dailycoolingdegreedays
dailydeparturefromnormalaveragetemperature
dailyaveragenormaltemp
dailyheatingdegreedays
dailymaximumdrybulbtemperature
dailyminimumdrybulbtemperature
length_of_day_hours
下表总结了来自公共天气来源的西雅图(假设此数据集的客户位于该城市)的这些数据。
dayofweek | dailyaveragedrybulbtemperature | dailycoolingdegreedays | dailydeparturefromnormalaveragetemperature | dailyaveragenormaltemp | dailyheatingdegreedays | dailymaximumdrybulbtemperature | dailyminimumdrybulbtemperature | Length_of_Day_Hours |
7 | 53 | 0 | -3.1 | 56.1 | 12 | 60 | 46 | 15.03 |
1 | 55 | 0 | -1.3 | 56.3 | 10 | 60 | 49 | 15.08 |
2 | 51 | 0 | -5.5 | 56.5 | 14 | 55 | 47 | 15.12 |
3 | 50 | 0 | -6.7 | 56.7 | 15 | 53 | 46 | 15.15 |
4 | 53 | 0 | -3.9 | 56.9 | 12 | 60 | 46 | 15.2 |
5 | 57 | 0 | -0.1 | 57.1 | 8 | 64 | 50 | 15.25 |
6 | 62 | 0 | 4.7 | 57.3 | 3 | 73 | 50 | 15.28 |
7 | 64 | 0 | 6.5 | 57.5 | 1 | 72 | 56 | 15.32 |
1 | 64 | 0 | 6.3 | 57.7 | 1 | 76 | 51 | 15.35 |
2 | 69 | 4 | 11.1 | 57.9 | 0 | 82 | 55 | 15.4 |
3 | 67 | 2 | 8.9 | 58.1 | 0 | 81 | 53 | 15.43 |
- 使用更新的数据集创建一个新的预测器。
- 生成新模型。
- 创建新预测。
以下屏幕截图显示了使用新模型时,相同 test
客户 ID 的预测用电量。
您可以借助预测范围超过 5 天的(本文为 2019 年 11 月 11 日至 2019 年 11 月 15 日)的实际用电量来评估这两个模型(ARIMA 和 DeepAR+ 及其相关时间序列)的结果。
要进行此评估,请使用 wQL[0.5]/MAPE 指标。使用 ARIMA 计算得出的 MAPE 指标为 0.25,而包含天气数据的 DeepAR+ 模型的 MAPE 为 0.04。您可以在此处了解有关评估模型的更多信息。包含天气数据的 DeepAR+ 模型帮助将模型准确性提高了 84%。下表总结了此对比的详细信息。
日期 | ARIMA(单位:kWh) | DeepAR+(单位:kWh) | 实际用电量(单位:kWh) |
2019 年 11 月 11 日 | 43.5 | 44.1 | 46 |
2019 年 11 月 12 日 | 49.1 | 59 | 59.6 |
2019 年 11 月 13 日 | 49.5 | 69 | 70 |
2019 年 11 月 14 日 | 48.8 | 73.5 | 75 |
2019 年 11 月 15 日 | 48.4 | 68.1 | 67 |
小结
本文讨论了如何通过 Forecast 及其基础系统架构使用智能电表数据预测单个客户的用电需求。您可以使用 DeepAR+ 和天气数据提高模型的准确性,达到约 96% 的预测准确性(由 MAPE 确定)。
© 2020, Amazon Web Services, Inc. 或其附属公司。保留所有权利。