報(bào)名僅剩十天!又一開發(fā)者公布高分方案源代碼,助力軟件杯選手高效解題

本文作者:艾宏峰?
算法工程師?
M6 Global賽道總排名4th
KDD Cup 2022風(fēng)電功率預(yù)測(cè)飛槳賽道5th“中國軟件杯”大學(xué)生軟件設(shè)計(jì)大賽——龍?jiān)达L(fēng)電賽道,5月31日預(yù)選賽截止,80%選手將晉級(jí)區(qū)域賽,歡迎大家抓緊報(bào)名!
賽題背景
隨著清潔能源的快速發(fā)展,風(fēng)力發(fā)電已經(jīng)成為可再生能源的重要組成部分,然而風(fēng)具有隨機(jī)性特點(diǎn),常規(guī)天氣預(yù)報(bào)無法準(zhǔn)確反映出風(fēng)電場(chǎng)所在區(qū)域的真實(shí)風(fēng)速,從而造成發(fā)電功率預(yù)測(cè)準(zhǔn)確率低下,影響電力供需平衡。因此,提高風(fēng)電功率預(yù)測(cè)的準(zhǔn)確性,為電網(wǎng)調(diào)度提供科學(xué)支撐,對(duì)我國能源產(chǎn)業(yè)有十分重要的價(jià)值。

此次賽題由百度飛槳和龍?jiān)措娏υO(shè)置,數(shù)據(jù)集由全球最大風(fēng)電運(yùn)營企業(yè)龍?jiān)措娏μ峁杉哉鎸?shí)風(fēng)力發(fā)電數(shù)據(jù),要求選手基于百度飛槳 PaddlePaddle 設(shè)計(jì)一個(gè)可以通過深度學(xué)習(xí)技術(shù)實(shí)現(xiàn)對(duì)風(fēng)力發(fā)電進(jìn)行功率預(yù)測(cè)及管理的軟件系統(tǒng)。
時(shí)序預(yù)測(cè)技術(shù)介紹
2時(shí)間序列預(yù)測(cè)技術(shù)是指基于歷史數(shù)據(jù)和時(shí)間變化規(guī)律,通過數(shù)學(xué)模型和算法對(duì)未來發(fā)展趨勢(shì)進(jìn)行預(yù)測(cè)的一種技術(shù)。時(shí)間序列預(yù)測(cè)技術(shù)廣泛應(yīng)用于經(jīng)濟(jì)、金融、交通、氣象等領(lǐng)域,以幫助人們做出更加準(zhǔn)確的決策。 時(shí)序預(yù)測(cè)從不同角度看有不同分類:
從實(shí)現(xiàn)原理的角度,可以分為:傳統(tǒng)統(tǒng)計(jì)學(xué),機(jī)器學(xué)習(xí)(又分非深度學(xué)習(xí)和深度學(xué)習(xí));
按預(yù)測(cè)步長區(qū)分,可以分為單步預(yù)測(cè)和多步預(yù)測(cè);
按輸入變量區(qū)分,可以分為自回歸預(yù)測(cè)和使用協(xié)變量進(jìn)行預(yù)測(cè);
按輸出結(jié)果區(qū)分,可以分為點(diǎn)預(yù)測(cè)和概率預(yù)測(cè);
按目標(biāo)個(gè)數(shù)區(qū)分,可以分為一元、多元、多重時(shí)間序列預(yù)測(cè)

這些分類是不同角度下的分類,同一種算法往往只能是分類中的一種,例如傳統(tǒng)的統(tǒng)計(jì)學(xué)算法只適合做自回歸預(yù)測(cè)而不適合協(xié)變量預(yù)測(cè)。?
時(shí)間序列預(yù)測(cè)技術(shù)的研究歷史可以追溯到20世紀(jì)初期。最早的時(shí)間序列預(yù)測(cè)方法是基于時(shí)間平均法和線性趨勢(shì)法,后來發(fā)展出了指數(shù)平滑法、ARIMA 模型、神經(jīng)網(wǎng)絡(luò)模型等預(yù)測(cè)方法。隨著機(jī)器學(xué)習(xí)和深度學(xué)習(xí)的發(fā)展,時(shí)間序列預(yù)測(cè)技術(shù)也得到了不斷的拓展和創(chuàng)新,比如 Transformer 與時(shí)序的結(jié)合。

風(fēng)電功率預(yù)測(cè)研究意義與價(jià)值
時(shí)間序列預(yù)測(cè)技術(shù)有著廣泛的應(yīng)用場(chǎng)景。例如,
在經(jīng)濟(jì)領(lǐng)域,時(shí)間序列預(yù)測(cè)技術(shù)可以用于股票市場(chǎng)預(yù)測(cè)、經(jīng)濟(jì)增長預(yù)測(cè)、通貨膨脹預(yù)測(cè)等。
在交通領(lǐng)域,時(shí)間序列預(yù)測(cè)技術(shù)可以用于公交車到站時(shí)間預(yù)測(cè)、交通擁堵預(yù)測(cè)等。
在氣象領(lǐng)域,時(shí)間序列預(yù)測(cè)技術(shù)可以用于氣象災(zāi)害預(yù)警、天氣變化預(yù)測(cè)等。
而在風(fēng)電功率預(yù)測(cè)上,其研究意義和價(jià)值更不容忽視,它們包括:
提高風(fēng)電發(fā)電效率:通過精準(zhǔn)預(yù)測(cè)風(fēng)電功率,可以合理安排風(fēng)電機(jī)組的運(yùn)行,提高風(fēng)電發(fā)電效率,減少能源浪費(fèi)。
保障電網(wǎng)穩(wěn)定運(yùn)行:風(fēng)電功率預(yù)測(cè)可以幫助電網(wǎng)運(yùn)營商及時(shí)調(diào)整電網(wǎng)負(fù)荷,避免電網(wǎng)過載或供電不足等問題,保障電網(wǎng)穩(wěn)定運(yùn)行。
促進(jìn)可再生能源發(fā)展:風(fēng)電功率預(yù)測(cè)可以提高風(fēng)電發(fā)電的可靠性和經(jīng)濟(jì)性,促進(jìn)可再生能源發(fā)展,降低對(duì)傳統(tǒng)能源的依賴。
降低能源成本:通過精準(zhǔn)預(yù)測(cè)風(fēng)電功率,可以有效避免風(fēng)電機(jī)組的過剩和不足,降低能源成本,提高能源利用率。
推動(dòng)智能電網(wǎng)建設(shè):風(fēng)電功率預(yù)測(cè)是智能電網(wǎng)建設(shè)的重要組成部分,可以實(shí)現(xiàn)對(duì)風(fēng)電發(fā)電的精準(zhǔn)監(jiān)控和管理,推動(dòng)智能電網(wǎng)建設(shè)。
賽制賽段
預(yù)選賽5月31日截止,算法賽,80%選手晉級(jí)區(qū)域賽;
區(qū)域賽6-7月,算法賽60%+軟件賽40%,頒發(fā)省級(jí)獎(jiǎng)項(xiàng);
總決賽8月,軟件賽,頒發(fā)國賽獎(jiǎng)項(xiàng)。
賽題數(shù)據(jù)
本賽題數(shù)據(jù)集由全球最大風(fēng)電運(yùn)營企業(yè)龍?jiān)措娏μ峁?,采集自真?shí)風(fēng)力發(fā)電數(shù)據(jù)。預(yù)選賽訓(xùn)練數(shù)據(jù)和區(qū)域賽訓(xùn)練數(shù)據(jù)分別為不同10個(gè)風(fēng)電場(chǎng)近一年的運(yùn)行數(shù)據(jù)共30萬余條,每15分鐘采集一次,包括風(fēng)速、風(fēng)向、溫度、濕度、氣壓和真實(shí)功率等,具體的數(shù)據(jù)字段中英文對(duì)應(yīng)如下:
WINDSPEED 預(yù)測(cè)風(fēng)速
WINDDIRECTION 風(fēng)向
TEMPERATURE 溫度
HUMIDITY 濕度
PRESSURE 氣壓
PREPOWER 預(yù)測(cè)功率(系統(tǒng)生成)
ROUND(A.WS,1)實(shí)際風(fēng)速
ROUND(A.POWER,0) 實(shí)際功率(計(jì)量口徑一)
YD15 實(shí)際功率(預(yù)測(cè)目標(biāo),計(jì)量口徑二)

注:“預(yù)測(cè)風(fēng)速”字段,指的是由權(quán)威的氣象機(jī)構(gòu),像是中央氣象臺(tái)、歐洲國家氣象中心等發(fā)布的商業(yè)氣象數(shù)據(jù)源。從時(shí)間線來說,實(shí)際功率預(yù)測(cè)需要提前 36 個(gè)小時(shí)、72 個(gè)小時(shí)、240 的小時(shí)等獲得數(shù)值天氣預(yù)報(bào),從而進(jìn)行功率的預(yù)測(cè)。

01 數(shù)據(jù)注意事項(xiàng)
原始數(shù)據(jù)集存在不同格式的風(fēng)機(jī)數(shù)據(jù),需要額外的數(shù)據(jù)拼接處理工作;
每個(gè)風(fēng)機(jī)的最后一天的 ROUND(A.POWER,0)和 YD15 兩個(gè)字段數(shù)據(jù)基本為空,這是出題方希望我們預(yù)測(cè)填空的數(shù)據(jù);
csv 內(nèi)的時(shí)間戳未必有序,需要自行排序;
數(shù)據(jù)存在缺失和離群值;
數(shù)據(jù)存在重復(fù)樣本(即同一時(shí)間戳有多條樣本)。以風(fēng)機(jī)04為例,重復(fù)樣本數(shù)量: 34764, 占比: 38.68340232340766%。
02? 以風(fēng)機(jī)4為例的EDA結(jié)果展示




03 官方對(duì)數(shù)據(jù)的一些回復(fù)
由于測(cè)量設(shè)備和網(wǎng)絡(luò)傳輸問題,YD15 可能出現(xiàn)數(shù)據(jù)異常(包括用于評(píng)測(cè)的輸入數(shù)據(jù))。
實(shí)際上由于一些臟數(shù)據(jù)的存在,YD15 有時(shí)候會(huì)缺失或異常,這個(gè)時(shí)候 ROUND(A.POWER,0)如果有正常值的話,可以被視為YD15的替代。
YD15 的異常值處理規(guī)則是,當(dāng) YD15 為空時(shí),按照邏輯依次用 ROUND(A.POWER,0)、PREPOWER 進(jìn)行替換。
如何定義 YD15 存在異常?在本賽題中,YD15 異常包括兩種情況:(1) 空值,(2) 在一段時(shí)間內(nèi)、其它字段正常變化時(shí),YD15 持續(xù)完全不變。除以上兩種情況之外,YD15 的數(shù)值變化都可認(rèn)為是正?,F(xiàn)象,如為 0 或負(fù)值。
04 個(gè)人補(bǔ)充
當(dāng)實(shí)際風(fēng)速為 0 時(shí),存在功率>0 有些異常,然后有些風(fēng)速過大>12.5,存在功率為 0 的異常。
目標(biāo)列 ROUND(A.POWER,0)和 YD15,與風(fēng)速 WINDSPEED、PREPOWER、PRESSURE 和 ROUND(A.WS,1)強(qiáng)相關(guān);
目標(biāo)列 ROUND(A.POWER,0)和 YD15 之間就有很強(qiáng)的相關(guān)性;
評(píng)測(cè)說明
01 算法部分
本次比賽要求選手將算法模型提交至人工智能學(xué)習(xí)與實(shí)訓(xùn)社區(qū) AI Studio 進(jìn)行自動(dòng)評(píng)測(cè),預(yù)選賽開放10個(gè)風(fēng)場(chǎng)數(shù)據(jù),區(qū)域賽開放新的10個(gè)風(fēng)場(chǎng)數(shù)據(jù),預(yù)選賽和區(qū)域賽算法成績各占30%。 要求選手基于飛槳 PaddlePaddle 根據(jù)官方提供的數(shù)據(jù)集,設(shè)計(jì)一種利用當(dāng)日05:00之前的數(shù)據(jù),預(yù)測(cè)次日00:00至23:45實(shí)際功率的方法。準(zhǔn)確率按日統(tǒng)計(jì),根據(jù)10個(gè)風(fēng)電場(chǎng)平均準(zhǔn)確率進(jìn)行排名;準(zhǔn)確率相同的情形下,根據(jù)每日單點(diǎn)的平均最大偏差絕對(duì)值排名。

02 軟件部分
本次比賽要求選手基于 Web 技術(shù)實(shí)現(xiàn):
數(shù)據(jù)可視化:將預(yù)測(cè)結(jié)果以圖表等形式展示出來,便于用戶進(jìn)行觀察和分析;
實(shí)時(shí)更新與滾動(dòng)預(yù)測(cè):能夠基于提供的數(shù)據(jù)實(shí)時(shí)模擬真實(shí)功率、預(yù)測(cè)功率及其之間的差異,通過調(diào)節(jié)過去不同長度的時(shí)間段,以更新未來預(yù)測(cè)結(jié)果,且預(yù)測(cè)的時(shí)間段可調(diào)節(jié);
響應(yīng)式設(shè)計(jì):支持多種終端,包括 PC 端、移動(dòng)端等,以適應(yīng)不同設(shè)備的屏幕尺寸和分辨率;
其他創(chuàng)新附加功能
提交說明
測(cè)評(píng)數(shù)據(jù)的格式如下:
參賽選手需要提交一個(gè)命名為 submission.zip 的壓縮包,并且壓縮包內(nèi)應(yīng)包含:
參賽選手在代碼提交頁面提交壓縮包后,測(cè)評(píng)系統(tǒng)會(huì)解壓選手提交的壓縮包,并執(zhí)行如下命令:
測(cè)評(píng)文件 predict.py 應(yīng)該完成的功能是:讀取 infile 文件夾下的測(cè)評(píng)數(shù)據(jù),并將預(yù)測(cè)結(jié)果保存到 pred 文件夾中。
基線模型流程
基于飛槳 PaddlePaddle 的多任務(wù) LSTM 時(shí)序預(yù)測(cè)基線模型 pipeline 如下:

以時(shí)間序列舉例,因?yàn)橐话銣y(cè)試集也會(huì)是未來數(shù)據(jù),所以我們也要保證訓(xùn)練集是歷史數(shù)據(jù),而劃分出的驗(yàn)證集是未來數(shù)據(jù),不然會(huì)發(fā)生“時(shí)間穿越”的數(shù)據(jù)泄露問題,導(dǎo)致模型過擬合(例如用未來預(yù)測(cè)歷史數(shù)據(jù)),這個(gè)時(shí)候就有兩種驗(yàn)證劃分方式可參考使用:
TimeSeriesSplit:Sklearn 提供的 TimeSeriesSplit;
固定窗口滑動(dòng)劃分法:固定時(shí)間窗口,不斷在數(shù)據(jù)集上滑動(dòng),獲得訓(xùn)練集和驗(yàn)證集。(個(gè)人推薦這種)

在時(shí)序任務(wù)中,有2類數(shù)據(jù)源,如下圖所示:

(1)靜態(tài)變量(Static Covariates):不會(huì)隨時(shí)間變化的變量,例如風(fēng)機(jī)id、風(fēng)機(jī)位置;
(2)時(shí)變變量(Time-dependent Inputs):隨時(shí)間變化的變量;
過去觀測(cè)的時(shí)變變量(Past-observed Inputs):過去可知,但未來不可知,例如歷史風(fēng)速、溫度、氣壓等
先驗(yàn)已知未來的時(shí)變變量(Apriori-known Future Inputs):過去和未來都可知,例如天氣預(yù)報(bào)未來風(fēng)速、溫度、氣壓等;
數(shù)據(jù)加載器的代碼如下:

模型代碼如下:
模型訓(xùn)練、驗(yàn)證和測(cè)試代碼:
更多代碼,詳見:
https://aistudio.baidu.com/aistudio/projectdetail/5911966?contributionType=1&sUid=397884&shared=1&ts=1683175097635
提分技巧
01 ?挖掘風(fēng)機(jī)間關(guān)聯(lián)信息
雖然賽方?jīng)]給出不同風(fēng)機(jī)的地理位置,且不同風(fēng)機(jī)的數(shù)據(jù)分布時(shí)間段不完全不一致,但可以從風(fēng)場(chǎng)維度,聯(lián)合多個(gè)風(fēng)機(jī)開展數(shù)據(jù)分析,看是否能挖掘出風(fēng)機(jī)之間的關(guān)聯(lián)信息,以減少單風(fēng)機(jī)的數(shù)據(jù)噪聲、幫助填補(bǔ)缺失或處理異常等。
還有例如求功率/溫度相關(guān)性,Kmeans 聚類獲取風(fēng)機(jī) cluster,把近鄰風(fēng)機(jī)的特征們求均值加入特征,或者分 cluster 建模預(yù)測(cè)。

ST-Tree module:ST-Tree:Spatio-Partitioned Time-Phased Tree Model。它算每個(gè)風(fēng)機(jī)之間的皮爾遜系數(shù),再用 K-means 聚類,然后針對(duì)聚類的風(fēng)機(jī)訓(xùn)練 LightGBM。 ? ? --KDD 第1名方案(海康)

在圖網(wǎng)絡(luò)表征上,選手是把與風(fēng)機(jī)有 Top-K 高相關(guān)性的風(fēng)機(jī)們,確認(rèn)連接邊,構(gòu)建圖關(guān)系。
用 k-shape 算法將風(fēng)機(jī)聚類成39類,每類風(fēng)機(jī)用一個(gè) LightGBM 預(yù)測(cè)。
附屬風(fēng)機(jī)可被看做是一類風(fēng)機(jī)們,它們之間有最相似的發(fā)電規(guī)律。通過平均附屬風(fēng)機(jī)的功率,當(dāng)做特征加入模型,能緩解數(shù)據(jù)噪聲。 ? ? --KDD 第4名方案(清華、浙江工商、多倫多大學(xué))
02 分段建模預(yù)測(cè)
風(fēng)機(jī)的發(fā)電功率預(yù)測(cè)難度是挺大的,模型一般偏好均值預(yù)測(cè),所以我們要爭取把可預(yù)測(cè)性強(qiáng)的短期預(yù)測(cè)部分預(yù)測(cè)好,再考慮如何提升模型的中長期預(yù)測(cè)能力。其實(shí)短期預(yù)測(cè)可以考慮遞歸預(yù)測(cè),因?yàn)樗鼜?qiáng)調(diào)時(shí)序前后依賴,對(duì)短期信息依賴程度會(huì)更高些,不足在于中后期會(huì)誤差累積。所以在中長期則可以考慮多步生成式預(yù)測(cè)。
論文《DeepSpatio-TemporalWind Power Forecasting》反應(yīng)到:
隨著時(shí)間滯后項(xiàng)的增加,自相關(guān)系數(shù)迅速衰減,說明短期預(yù)測(cè)可能性更大,中長期就比較困難了。
隨機(jī)抽取幾個(gè)不同的風(fēng)速時(shí)序,結(jié)果顯示風(fēng)速時(shí)序沒有展示出極端的長期依賴。而且 GRU 用更少的參數(shù)反而避免了過擬合問題。


下圖展示了頭幾個(gè)小時(shí)下的 MAE,也反映出相同的結(jié)論。所以風(fēng)電功率預(yù)測(cè)時(shí)大多用戶選擇了分段建模預(yù)測(cè)。

03 其他
異常值處理,尤其是標(biāo)簽矯正: 例如風(fēng)速過大但功率為0的異常,在特定風(fēng)速下的離群功率等;
標(biāo)簽融合: 融合兩個(gè)標(biāo)簽,以 YD15 為主,A.Power 為輔;
利用天氣預(yù)報(bào)的數(shù)據(jù): 加 decoder 部分加入即可;
挖掘更多特征: 差分序列、同時(shí)刻風(fēng)場(chǎng)/鄰近風(fēng)機(jī)的特征均值/標(biāo)準(zhǔn)差等;
嘗試樹模型: XGB、LGB 等;
模型參數(shù)調(diào)優(yōu): optuna;
模型融合: 人工加權(quán)或配合尋參算法。