【时间序列竞赛方案】Baidu KDD Cup 2022 风电预测比赛总结 (含19个高分方案)

本 文将从以下五个方面进行分享:

一、任务定义

二、评估方法

三、数据详情

四、高分方案

五、参赛感想

一、 任务定义

2022年kdd cup提供了龙源电力集团有限公司独特的空间动态风力预测数据集:SDWPF,其中包括风力涡轮机的空间分布,以及时间、天气和涡轮机内部状态等动态背景因素。然而,大多数现有的数据集和竞赛将 WPF 视为时间序列预测问题,而不知道风力涡轮机的位置和上下文信息。预测目标是134个风机各自在未来288个时刻(共2天)下的输出功率。

e4a44c578c3db559830a3978484c4e00.png

图1:风电的空间分布

不同于以往的 WPF 竞赛设置,此竞赛任务有提供两个独特的数据:

1. 空间分布:本次竞赛将提供给定风电场的所有风力涡轮机的相对位置,用于建模风力涡轮机之间的空间相关性。

2. 动态上下文:提供由每个风力涡轮机监控的重要天气情况和涡轮机内部上下文,以促进预测任务。

58b55e0d53cea35b746b1c02c48ebc7e.png

图2:风电涡轮机

二、评估方法

2022 年百度KDD 杯需要在48 小时之前解决空间动态风力发电预测问题。例如,在今天上午6 : 00 给出,根据风电场和相关风力涡轮机的一系列历史记录,需要有效地预测从上午6 : 00 到后天上午5 : 50 的风力发电。需要每10 分钟输出一次预测值。具体而言,在一个时间点,需要预测未来的长度288(48小时*60分钟/10分钟)风力发电时间序列。**RMSE (均方根误差)和MAE (平均绝对误差)的平均值**用作主要评估分数。

6560d4c030eff4051064dbfe01bfa0fd.png

图3:数据概况:发布245天数据,134个风电机

在时间步长  下 ,需要预测风电场  的时间序列。在这个挑战中,我们评估每个风力涡轮机的预测结果,然后将预测分数相加作为模型的最终分数。  定义为风力涡轮机  在时间步长  下的评估分数:  在时间  下的总分  ,是所有风力涡轮机的预测分数之和,即 

在预测时,滑窗的步长为  ,窗口大小为  ,模型输入长度是  ,输出长度是288。最后,对所有滑窗预测的结果做平均。假设我们用K个数据实例做评估,每个数据实例k,会随机采样一个滑窗步数  (范围:[10分钟,100分钟]),最后分数为:  在样例代码里,计算分数的代码中有几点需要注意:

● 在评估中,将输入时间序列的最大长度  设置为14 天;

● 由于对所有风力涡轮机的误差求和,为了避免较大的值,使用百万瓦(而不是千瓦)作为单位来表示最终得分;

● 对于提交系统中的评估(从5月10日开始),组织方在几个月内使用195个随机采样(即K=195)的步幅时间步长(即公式3中  的来评估提交的模型。

未来的气象数据(风速,温度等)都未知,且我们不能使用外部数据。除了发布数据外,组织方仍然私下持有几个月的数据来评估参与者提交的模型。

三、数据详情

d8fcbf4196c6f1e56b37ec2ab9eac86c.png

图4:特征字段说明

官方指出在数据使用时,要注意:

1. 零值:有一些有功功率和无功功率小于零。我们会将小于0 的所有值视为0。

2. 缺失值:由于某些原因,某些时间的某些值不是从SCADA系统收集的。这些缺失值将不用于评估模型。例如:如果  是缺失值,则我们会设  ,而不管预测值是多少。

3. 未知值:在某些时候,风力涡轮机由于外部原因而停止发电,例如风力涡轮机翻新和/ 或主动调度动力以避免电网过载。在这些情况下,风力涡轮机的实际发电功率是未知的。这些未知值也将不用于评估模型。与缺失值类似,忽略它们。任意满足以下两种情况之一,便能判断出目标变量(Patv)是未知的:

● 如果时间t下,Patv≤0且Wspd>2.5;

● 如果时间t下,Prab1>89度或Prab2>89度或Prab3>89度;‍

4. 异常值:当某样本数据存在异常记录时,不用它于评估模型,即我们会设  ,判断异常值的规则有两种:

● Ndir的合理范围是[-720 °,720 °] ,因为涡轮机系统允许机舱在一个方向上最多旋转两轮,否则将强制机舱返回原始位置。因此,超出范围的记录可以看作是记录系统引起的异常值;

● Wdir的合理范围是[-180 °,180 °] 。超出此范围的记录可以看作是记录系统引起的异常值。

四、高分方案

我们先介绍前排队伍的高分方案,再介绍我们团队的方案。由于一共是19个方案,多图预警,如果看到中途有些疲劳了,建议收藏以便下次阅读,也希望大家后面能拉到文末看看我的参赛感想,给大家带来的思路上的总结和帮助。

1. HIK

● 分数:-44.91708

● 排名:常规赛道第一名

● 队员:Linsen Li, Qichen Sun, Dongdong Geng, Chunfei Jian, Dongen Wu; Advisor: Shiliang Pu

● 组织:海康威视研究院,浙江大学

他们提出如图5的模型FDSTT(Complementary Fusion of Deep Spatio-Temporal Network and Tree Model),是唯一一支队伍在3个测试阶段都排名前3。

ff2a9226c6d4333d5ecc8a06ef735c86.png

图5:FDSTT

FDSTT由4部分组成:

(1) Multi-relational Graph Constructor:该模块负责抽取多视角的图信息,用于后续的时空深度学习。主要有两个视角:空间图信息(以地理位置的欧式距离,找出top-K最近邻点构建空间图)和语义图信息(求风速一阶差分值,求每时刻两两风机之间的差分乘积,再求和作为两风机间的语义相似性,最后找出top-K最近邻点构建语义图)。

(2) DMST module:DMST: Deep Multi-relational Spatio-Temporal Network。它将当前风机i的近邻风机们的风速合并进来作为风机i的特征。另外,还用可学习的embedding matrix乘one-hot风机向量获取风机embedding。DMST是以GRU为核心单元的Seq2Seq模型,采用递归式预测。

(3) ST-Tree module:ST-Tree:Spatio-Partitioned Time-Phased Tree Model。它算每个风机之间的皮尔逊系数,再用K-means聚类,然后针对聚类的风机训练LightGBM,进行分段预测。

(4) Ensemble module:若当前风电功率多大或过小时,DMST预测线通常会很陡峭,这时直接使用ST-Tree负责短期预测,否则用ST-Tree和DMST的短期预测平均值。而中长期预测直接用DMST的结果。

实验结果如图6所示:

e92c6f8df56f10178c40b3d07d8c9aa0.png

图6:FDSTT的对比实验

答辩时,评委问为什么没用GNN,而是把图信息当特征引入,选手回复说是试过GNN,但效果不好,原因可能是这里的空间信息是时变的,比较复杂。

2. trymore

● 分数:-44.9234

● 排名:常规赛道第二名,Paddle赛道第一名

● 队员:Hanhan Liu

● 组织:思源电气

Liu基于风机位置,平均每日功率,对风电进行了聚类:

e0756b28ba730a717099ab4def80eca7.png

图7:基于每日平均功率的风机聚类

因此选手用了同时刻聚类组内的均值去替换异常特征值。另外,在特征工程,除了sin和cos时间特征、lag和diff特征,还对每日top n最高温度做平均得到Etmp_Max。

整个模型方案如下:

2c36fa182fc734eb4bc22c2a76efc15e.png

图8:LightGBM、GRU和本地集成模型

(1) GRU:每个风机训练一个多步预测的模型,比如如果step-size=144,那么输入144,126,108,输出就是288,252,216。每step-size对应一个模型,所以一个风机有多个模型,step-size有12,36,72,144,180等。

(2) LightGBM:所有风机统一建模。

(3) Local Ensemble:使用了线性回归, 多项式线性回归和local_Gru。选手发现为了避免温度不同对功率预测的不稳定,用Etemp_Max替换同时刻其它风机的温度。集成时,会用短期预测矫正长期预测,比如在使用step-size=36结果和step-size=72结果进行融合时,,最近的36步用两个预测值的平均值,然后第36-72步,则先算两者预测均值的差值,再基于step-size=36的预测值,加上差值。为了融合更精细化,用加权融合替换了平均融合。

实验结果如图9所示:

aa4ee6cc701f5bd46b94d72366cfe007.png

图9:Liu的对比实验

Scheme D做了一个有意思的后处理,选手认为同时刻功率越大,更偏向于理论值,而同时刻部分风机功率值相较低,可能是受风机调整或异常突发问题导致的,它们预测难度是能大的,所以Scheme D只用GRU预测了Top5的风机,然后用它们的预测均值替换其它风机。

答辩有提问为什么用Top5的风机,选手回答是试出来的,而且由于时间有限,这块参数也没去遍历尝试得到最优的TopN参数。

3. Teletraan

● 分数:-45.09478

● 排名:常规赛道第二名

● 队员:Longxing Tan, Hongying Yue

● 组织:Teletraan和人大

与其他方案不同的是,谭兄用了Bert做生成式预测,一把出288个预测值。相比于大家一众的集成方案,该方案真的简洁干练:

062d80a91de36ed41646d13b998d1072.png

图10:BERT生成式预测模型

但由于预测结果缺乏波动性,所以进行了后处理:对过去14天的每10分钟的MinuteofDay,统计功率均值作为周期波动值加到对应的预测值上。但加到对应预测值时,会根据不同波动值的值大小位置,去相应乘上一个系数进行放大。

实验结果如图11所示:

0bcdcc75465d2048b52b84109c6ca0a1.png

图11:Teletraan的对比实验

由于我们团队也使用过生成式模型一把出288个预测值,但效果不好,当时没考虑出比较好的后处理方案,所以答辩时我有问谭兄关于它后处理具体的提升有多大,谭兄回复说在第二阶段测试集是很显著的,由此可见,合适的后处理确实能带来很好的提升。

4. zhanshijin

● 分数:-45.13867

● 排名:常规赛道第四名,Paddle赛道第二名

● 队员:Xuefeng Liang, Qingshui Gu, Su Qiao, Zhuwang Lv, Xin Song

● 组织:清华大学、浙江工商大学、多伦多大学

梁兄所在的团队使用孤立森林检测出功率异常点,并用风速和功率训练LightGBM,修复异常值。异常检测结果如下:

b419217ead63f526604e60c4e0c353fe.png

图12:异常检测和修复结果

受AutoFormer和FEDformer的启发,选手提出WPFormer,主要有:序列分解、自相关机制、多头关注、图网络编码和前馈网络。如图13所示,在图网络表征上,选手是把与风机i有Top-K高相关性的风机们,确认连接边,构建图关系。

31e925700355315efca760771bc3b3d4.png

图13:WPFormer网络结构

同时,选手还提出如图14的POPtree(Point-by-point prediction based on tree model)。为了避免构建134个风机*288个点这么多个模型,选手做了以下工作:

● 附属风机:用k-shape算法将风机聚类成39类,每类风机用一个LightGBM预测。附属风机可被看做是一类风机们,它们之间有最相似的发电规律。通过平均附属风机的功率,当做特征加入模型,能缓解数据噪声。

● 时间维度的降采样:实际上,单个时刻周围邻近时间点下的功率变化都不大,所以它们可以用相同模型共享一个预测值,而且也能减少数据剧烈波动带来的影响,所以这里用了窗口大小为6,步长为3的滑窗移动平均。

图15展示了LightGBM的预测方法(这点做的还是很精细了,相当于模型个数=39类风机*降采样后的时间长度)

7bafb8d37ad1a70d0c181d989dfc2c43.png

图14:POPtree

最后在模型融合时,若某时刻多个模型的预测值差异超过某阈值,则用中位数,否则用均值融合。另外也尝试用ridgeCV去自动计算模型权重,并加入正则项,进行加权融合。

实验结果如图15所示:

0ea116cc4ddc9af4a0c1b0b29fa864f8.png

图15:zhanshijin阶段二和三的对比实验

5. EasyST

● 分数:-45.17326

● 排名:常规赛道第五名,Paddle赛道第三名

● 队员:Yiji Zhao, Haomin Wen, Junhong Lou, Jinji Fu, Jianbin Zheng; Advisor: Youfang Lin

● 组织:北京交通大学、菜鸟网络

数据预处理时,基于不同时序之间功率的欧式距离,用K-means聚类成6类风机,如图16所示。做类内平均和风场总平均,加入到特征集当中。此外,还以20或30分钟为窗口,聚合成更粗粒度的数据。

ca9795f6d809f4ca8b04a3e7065953a0.png

图16:风机聚类

模型侧,使用GRU捕捉短期关系,用TLinear(Temporal Linear Layer)捕捉长期关系。模型结构如图17所示:

0fbdbea119874a33e0ef52f04b6bb5eb.png

图17:EasyST的模型结构

其中,Temporal MLP是由TLinear→GLU(Linear)组成。损失用了带abnormal mask加权的MSE+MAE组合分数。另外,为了描述预测不确定性,引入了概率预测模型Deep Factor,即预测均值和标准差。由于数据很大的不确定性,功率波动规律复杂,选手针对短中长期的不同预测长度和不同预测粒度,分别建模预测,并且人工设置如下权重:

5e5b951bb6b147f7479bc707512fdc79.png

图18:模型集成方案

实验结果如图19所示:

c658ba20741cc723161c61b23bf73841.png

图19:EasyST的对比实验

6. didadida_hualahuala

● 分数:-45.18139

● 排名:常规赛道第六名

● 队员:Marcus Kalander, Zhongwen Rao, Chengzhi Zhang

● 组织:华为诺亚

取当前风机下同时刻Pab1/2/3最大值Pab_max作为特征。Patv<0当作0,Prtv在MDLinear时用Prtv绝对值,而XTGN内会根据Patv的正负来处理Prtv的值。选手先用MDLinear建模:

18a3d3b41c80f9e311eb13cd56c1b2e8.png

图20:MDLinear

需要注意,DLinear有两种,一种是中间两个参数时所有特征共享,一种是每个特征分别学习对应的权重,选手用的是前者,即DLinear-S。另外选手增加了一个线性层在后面以加深对信息探索,这构成了模型MDLinear。此外,选手还将原始TurbID分为cluster和ID,重新编号作为特征喂入模型,而且还做了聚类平均值特征。

b00572f04bbb24505463f9ef8ad3ca13.png

图21:将原始TurbID分为cluster和ID,并重新编号

MDLinear用来做多水平训练和预测:

401d366f7693ac2a6fbea60cd1dc21ab.png

图22:MDLinear的训练和预测策略

此外,收到模式识别任务的启发,选手使用了extreme Temporal Gated Network (XTGN)抽取隐含的表征模式,然后做预测,整体结构如下。通过堆叠空洞因果卷积层,使得TCN获取长时序接收域和缓解梯度消失问题。同时,基于风机位置的余弦距离,生成k最近邻图,再学习一个邻接矩阵A去体现信息扩散,使得最终预测时会依赖邻近风机预测值。

25fef5743a252ba03bff00d300add70c.png

图23:XTGN

最后平均融合,实验结果如图24所示:

a53bb586e8c449dbea3200e2f819a3e9.png

图24:didadida_hualahuala的对比实验

7. 88VIP

● 分数:-45.21301

● 排名:常规赛道第七名

● 队员:Fangquan Lin, Wei Jiang, Hanwei Zhang; Advisor: Cheng Yang

● 组织:阿里巴巴

选手使用了如图25的GRU和GBDT的模型集成方案。在风机聚类上,尝试基于空间位置和时序统计相关性两种基准进行聚类,最终实验表现用空间信息聚类更好,而且GRU用24类,GBDT用4类。训练时,针对每组风机,分别训练GRU和GBDT模型。对于GRU,先预训练模型(输入长度=72,输出长度=288),再微调fine-tune短期预测(输入长度=36,输出长度=36)。最后,为了减缓线下和线上分布不一致问题,后处理对每个预测值乘上调整常量a,若历史真实值均值高于预测值均值,则a>1,否则小于1。在第3阶段测试集上,a=1.1能提升0.237个点,还是十分显著有效的提升。

5d1a3803762973bd2ec02ce31e37419b.png

图25:88VIP的解决方案

实验结果如图26所示:

93a0e2d68e2dae53694e8d101d64225f.png

图26:88VIP的对比实验

8. dataZhi

● 分数:-45.23701

● 排名:常规赛道第八名

● 队员:Hongzhi Luan; Advisor: Junxiong Hou

● 组织:海康威视

选手使用了如图27的模型结构。在空间信息融合方面,用8个最近邻风机的数据,合并一起或用关注模块学习如何融合近邻风机的关系。在编码器上,可使用LSTM/GRU/TCN。在解码器上,核心组件是GRU,但为了提高建模能力,加入时间关注模块去探索编码器输入和解码器隐藏向量之间的关系,另外,上下文向量也会后续每轮反复增强十日,以提高模型准确性。

c8ab127bdb978678ec8f752a3df94af5.png

图27:dataZhi的网络结构

选手还分为小时级预测和10分钟预测,其中选择LightGBM和随机森林做小时级预测,参与后续的模型融合,实验结果如图28所示:

c3c3266741a9e66e8bdfe0f97e794e94.png

图28:dataZhi的对比实验

9. AIStudio2338769Team

● 分数:-45.23701

● 排名:常规赛道第九名

● 队员:Wenwei Wang

● 组织:阿里巴巴达摩院

选手只用了树模型,整个方案基于两个信息源:均值和惯性。预测2天,选手把前3个小时当做惯性阶段,把后面45小时当做均值阶段。通过LightGBM对每个阶段做预测,其中,均值阶段是每个风机一个模型,而惯性阶段是18*134个模型。在模型集成时,基于空间信息,使用了两个简单又便捷的空间集成方法:

c3daa4c2b1fcf75087705bfde3cda438.png

图29:空间集成方法

●:   分别是每个风机的预测值和他们最近和次近的风机预测值。

●   :求地理上近邻风机的均值,和给定风机预测值做平均融合。

由于不同月份功率变化挺不一样的,选手做了后处理,对18个近期预测值乘1.08,对中长期的270个点乘1.18。实验结果如图30所示:

c03d99906af720a8aee77a22652610c9.png

图30:AIStudio2338769Team的对比实验,a为固定参数,b为微调参数,c为短期模型,d为基于空间的模型集成,e为整体预测*1.18,f为开头18个预测成*1.08

10. SlienceGTeam

● 分数:-45.32777

● 排名:常规赛道第十名

● 队员:Chenxu Wang, Jinda Lu, Yuan Gao

● 组织:中科大

模型用了LightGBM和GRU,其中LightGBM的特征有加入邻近风机们特征的均值,特征主要是lag特征,预测目标是两个点Patv的均值。另外,选手使用了2个GRU模型,分别预测前半部分 (GRU-FH) 和总长度 (GRU-ALL) 。编码器输入序列长度为144。

827fd7938e8cf6c44533d1a7d302d10a.png

图31:GRU模型

模型融合方案如下,其中S为风机的邻接矩阵。  

实验结果如图32所示:

bb25866cacfa27972335f3da0c48f6ad.png

图32:SlienceGTeam的对比实验

11. BUAA_BIGSCity

● 分数:-45.36026

● 排名:常规赛道第十一名

● 队员:Jiawei Jiang, Chengkai Han; Advisor: Jingyuan Wang

● 组织:北航

选手用了AGCRN (Adaptive Graph Convolutional Recurrent Network) 和MTGNN (Multivariate Time Series Forecasting Graph Neural Networks),由于本人对图不是特别了解(还是太菜了),建议感兴趣的朋友直接阅读论文,模型结构如下:

9c4a8d405b46d8df1155b3c6d0108de4.png

图33:AGCRN和MTGNN

12. datateam-UCM

● 分数:-45.56335

● 排名:常规赛道第二十名

● 队员:Fernando Sebastián Huerta, Manuel Ángel Suárez Álvarez, Daniel Velez Serrano, Eugenio Neira Bustamante, Alejandro Carrasco Sanchez

● 组织:BCAM-Basque Center for Applied Mathematics Bilbao,UCM和Unspecified affiliation

分别对不同预测阶段 (6,18,60,288) 建模GRU,然后用5折最大值,和KNN一起做模型融合。GRU模型结构和实验记录如下:

f8b9201c0ef0ef097610fdcfe037ff74.png

图34:datateam-UCM的模型和对比实验

13. WindTeam CSU123

● 分数:-45.6186

● 排名:Paddle赛道第四名

● 队员:Zhi Liu, Min Li, He Wei, Baichuan Yang, Advisor: Min L

● 组织:中南大学、腾讯

使用KNN对异常值和缺失值做填补修复。针对每个风机训练各自的GRU模型。人工均匀选择了6个代表性风机用于参数优化 (格子搜索)。

14. Dynamo

● 分数:-45.64764

● 排名:Paddle赛道第五名‍

● 队员:Hongfeng Ai, Wenqi Wu, Chaodong Zhang

● 组织:OPPO研究院

终于介绍到我们团队的方案了,我们在异常处理上花了一些时间,具体异常处理方案如下:

4ba0ebfae4eeb2062f484bb995783ff8.png

图35:异常总览和预处理方法

基于稀疏核机拟合出风速-最大功率的包络曲线,这也是评委觉得是个创新点的地方,我们将曲线以上的点当做异常点进行处理,同时,把Patv_max和Patv的差值作为特征加入到模型当中。

a273233b853a589a5181d0e338006cfe.png

图36:风速-最大功率的曲线

另外,我们发现同时刻风向混乱无规律,我们猜测是不同风机的指北风向基准不一致,我们选择一段风速大的时期,假设风向会处于均值方向,从而计算得到每个风向的矫正量,通过矫正,风向明显具有聚集性:

7d41f8bdfe98dd1f2006572e6a4ef3fe.png

图37:风向纠正

我们使用了LightGB预测第288个点,负责长期预测。使用以多元LSTM为核心的seq2seq结果,递归式预测出功率,模型结果如下所示,我们单独预测风场的风速,并加入到decoder部分,decoder输出再接上风机维度的自关注模块和配平层。

b942fe8dc775afe9cdb82ef8bfbaab66.png

图38:带层次配平约束的多元LSTM

最后我们用MV-LSTM分不同预测水平长度建模预测,对于144-288时间段的预测,使用LightGBM和MV-LSTM做了加权平均。

15. yura

● 分数:-46.16117

● 排名:Paddle赛道第六名

● 队员‍:Chaoqun Su

● 组织:中科大

简单的使用了DLinear模型:

cd6b2e3f6e5ea27a075f8b0d00b6a948.png

图39:Dlinear模型

16. noritoshiTeam

● 分数:-46.17403

● 排名:Paddle赛道第七名

● 队员:TAMURA Noritoshi

● 组织:日本金融工程集团

基于Autoformer和图学习模型,提出STGT模型 (Spatial-Temporal Graph Transformer Model),该模型结合图使用了SMOTE回归,然后使用多头关注分解成趋势和季节项,最后预测值和合并预测的分解项。在构建图时,节点是134个风机,边是由Top 5功率相关的风机构成。数据增强中的空间扰乱是指以一定概率随机打乱风机编号。另外,作者还用了LSTM模型,用于后续的平均融合。

298328d7b8298c60fb418e00ba2d447f.png

图40:STGT模型

实验记录如下:

16620509f2881b66ffb692d2cb203b99.png

图41:noritoshiTeam的本地对比实验

17. QDU

● 分数:-46.26986

● 排名:Paddle赛道第八名

● 队员:Zhiruo Li, Jieqi Xing, Shunyao Wu; Advisor: Shunyao Wu

● 组织:青岛大学

在预处理时,由于滑窗组织数据带来的序列重叠问题,选手以0.01的采样比例,对每个风机随机采样。同时,为了保证尽可能利用上多的数据,采样了3个数据集。如图42所示。

b8cbb6ced15b83890902dff72eab0459.png

图42:预测流程框架

详细特征输入和模型结构如图43,其中Input=12*12*4,12*12=144是输入序列长度,4为特征数量。

7b8996f3e034e2e3d01d71d607499c53.png

图43:特征输入和模型结构

实验结果如下:

0e931d176fd6c495e8a2cd64e3e3f13e.png

图44:QDU的对比实验

18. 123123

● 分数:-46.33641

● 排名:Paddle赛道第九名

● 队员:Ruizhi Zhang, Zeyu Long, Yusu Mao; Advisor: Nengjun Zhu

● 组织:上海大学

做了异常值和缺失值的处理,使用了GRU模型。

19. IFBD

● 分数:-46.34794

● 排名:Paddle赛道第十名

● 队员:Xiaotian Yu

● 组织:Intellif

选手提出了GCN-Transformer模型去预测长期功率。短期关系喂入第一个transformer,长期关系喂入第二个transformer,结合两个Transformers进入MLP。由于使用了paddle的代码框架,选手还构建了带关注模块的图卷积网络。整体模型结构如下:

e9c8a929d67763e691c93d309a1b4971.png

图45:GCN-Transformer模型

实验结果如下:

768bed0d686dbf5282aff19bc6107fde.png

图46:IFBD的对比实验

五、参赛感想

总算是看完并总结完了前排19个团队的方案,建议有兴趣深入的朋友,可以直接阅读官方开源的论文和代码 [1]。这里谈下我个人的参赛感想。众所周知,时序比赛常因为不同测试集在时间上特征/标签的分布不一致,导致排行榜不稳定。但这次KDD Cup给我感觉反而还好,3个测试阶段,第1阶段切换到第2阶段确实有剧烈的排行榜抖动,但第3阶段其实跟第2阶段的数据分布,感觉差异不是很大,而且第3阶段给了3天(3次/天,总共9次提交机会)让选手提交结果,相对于给我们一个合适的机会去将模型适配到新的测试集上,所以个人觉得方案调整是在一定可控范围内的。在阅读前排方案和复盘所在团队方案的过程中,明显发现WPF数据的两个挑战:

1. 在风电功率波动规律性弱的情况下,如果做好长时序预测任务?

2. 如何将风场内各风机的空间信息加入到模型当中,提高模型表现?

这两个挑战也意味机遇,如果做好第1点,获奖便问题不大,做好第2点,会让你有在高分区挣得一丝优势(常规赛道TOP3便很焦灼,第一和第2差了0.006,第2跟第3差0.17)。其中,对于这两个问题,个人的具体想法如下:

1. 受限于气象的不稳定性,其实功率的预测难度很大,虽然组织方希望我们预测未来2天的功率,但实际上透过EDA和模型表现来看,功率短期预测还是没问题的,例如未来6小时。所以引发一个业务思考:“当别人告诉你要做长期预测时,我们是不是该提前做好可行性分析?如果非要长期预测,我们是不是争取把可预测性强的短期预测线争取预测好,再考虑如何提升模型的中长期预测能力?”。按照先验,一开始面临长时序问题,拍脑袋就是生成式预测,因为能一把出,而且不会像递归预测能带来误差累计,但实际上我们团队使用生成式预测,预测线近乎一条直线,反而用递归预测,效果更好,因为递归预测强调时序前后依赖,强迫模型在短期预测好,不然中长期的误差会更大,而直接生成预测中未来多步相对独立预测。当然不是说直接预测便不好,像谭兄就是用BERT一把出288个点取得高分,可能原因是BERT内部对时序前后依赖信息的学习更加充分,或者是后处理附加波动性的原因。对于大部分选手来说,做好短期预测最直接的办法就是分段建模预测并且模型融合,以争取到最大化短期预测带来的分数收益,阿里巴巴88VIP团队的方案就很典型。我们团队只在第3阶段才意识到这个问题,已经没时间过多尝试,着实有些可惜。

2. 时空信息是相对比较复杂的,我们团队也绘制过功率的时空变化图,发现风机间的空间关系具有时变性,而且没有特别明显的关系,对于前排顶端的团队,基本用了2种度量近邻风机的方法:空间距离和功率相关性。有团队试过空间距离不好,有团队说空间距离好,说明这块相对没有比短期预测的分那么好拿。前排有很多方案,例如求功率相关性/地理位置后Kmeans聚类/人工划分获取风机cluster,把近邻风机的特征们求均值加入特征,或者分cluster建模预测,我很喜欢华为诺亚和阿里达摩院使用近邻风机预测值,去做模型预测值的融合。

另外,关于异常值处理,它是很基础且重要的一步,是每个方案都必不可少的一环。特征工程都大同小异。模型反而各种各样,很多选手的方案图和论文都写的很好,像海康和清华等。最后,感谢百度举办这次比赛,个人还是有所收获,也感谢队友东哥的carry,希望以后大家都再接再厉。

参考资料

[1] Baidu KDD CUP 2022 风电预测高分论文和代码 - 飞浆AI Studio, 官网:https://aistudio.baidu.com/aistudio/competition/detail/152/0/introduction

推荐阅读:

我的2022届互联网校招分享

我的2021总结

浅谈算法岗和开发岗的区别

互联网校招研发薪资汇总
2022届互联网求职现状,金9银10快变成铜9铁10!!

公众号:AI蜗牛车

保持谦逊、保持自律、保持进步

发送【蜗牛】获取一份《手把手AI项目》(AI蜗牛车著)
发送【1222】获取一份不错的leetcode刷题笔记

发送【AI四大名著】获取四本经典AI电子书

猜你喜欢

转载自blog.csdn.net/qq_33431368/article/details/126564490