此次赛题是基于空间的风电动态预测挑战任务。风力发电预测是为了更精准地预估风力,帮助风力发电厂安排不同时间的供应。由于风力具有不稳定性,导致风电的发电功率变化也很大,这种不稳定性对将风电并入电网系统带来了巨大挑战。为了保障电力生产及消耗的平衡,当风力发电波动时,需要使用其他能源来平抑风电的波动性对电网造成的冲击。然而,这种替代的电力并不能短时间获取(例如,通常至少需要 6 个小时才能启动一个燃煤电厂),因此风电预测非常重要,同时也极具挑战性。首先让我们来了解一下本次赛事的一些关键信息。
数据集
空间分布:提供了不同风力发电机在发电场的相对位置,如下图所示。每台风力发电机可以单独产生风力,风电场的输出功率是所有风力发电机的总和。此项信息有利于选手进行空间相关性建模。
动态环境:包括天气状况、发电机内部状态等多种信号,方便选手设计多源输入模型,增加预测增益。如下图所示:
任务
通过历史输入数据,对每个发电机的未来48小时的发电功率进行预测。每个数据之间间隔10分钟,所以选手需预测未来288步的发电功率。
评价指标
⭐️点击阅读原文即可访问⭐
赛题解读及
开源Baseline
有大量的研究致力于通过数据挖掘技术来解决风能预测问题,相比于传统的时序预测数据,本届 Baidu KDD Cup 2022 提供的风力发电数据额外提供了各个发电机的空间位置信息,使得选手可以结合时间、空间等多个维度,对未来结果进行预测。而图神经网络技术能够高效建立时间和空间的关系图,并充分利用两者之间的关联关系提升预测效果。为了方便选手实现基于图神经网络的时空预测模型,飞桨图学习框架(PGL)提供了一版基于时序分解的时空图神经网络模型,助力选手获得更好成绩,以下是模型的详情:
数据预处理
数据划分:SDWPF数据集中提供了134个发电机对应的245天数据作为训练集,未来采样数据作为隐藏测试集。每个数据之间间隔10分钟。为保证训练预测的一致性,需要对训练数据按照时间切分出训练、验证、测试集。
异常值处理:数据对nan数据进行补0处理,并对数据进行归一化处理,降低异常值对模型的影响。
特征扩展:针对时序预测任务和时间周期强相关的特点,在原始的输入数据基础上,增加了小时、星期等特征,强化模型的时间特征。
数据增强:为提升模型的鲁棒性,利用Spatial Shuffle技术对训练数据进行了扩展。具体可参考:
https://github.com/PaddlePaddle/PGL/blob/main/examples/kddcup2022/wpf_baseline/wpf_dataset.py
时空图构造
利用发电机的时序相关性构建它们之间的边关系。通过统计各个发电机的历史数据,计算不同发电机之间历史发电功率的相关性,以获取发电机的相关性。
基于时空图聚合的GNN模型
针对每个路口输入的时序信息,进行时序分解,获得历史的功率趋势特征和周期特征。
利用SaptialTemporalGATconv 对相关性邻居进行信息聚合,从而提升模型效果。
利用Transformer Encoder-Decoder 对分解后的特征进行编码,并进行多步解码。
开源Baseline
代码地址:
https://github.com/PaddlePaddle/PGL/tree/main/examples/kddcup2022/wpf_baseline
预测结果示例:
经验与建议优化
本次任务,需对未来2天风力发电情况进行预测。而风能随时间变化快,致预测真值方差过大,这加大了模型预测难度。
进一步了解飞桨PGL
关注【飞桨PaddlePaddle】公众号
获取更多技术内容~