徐 東,張 曾,周 迅,周伏虎
(中國水利水電第七工程局有限公司,成都,610213)
隨著信息技術(shù)的蓬勃發(fā)展,智慧城市理念的提出,智慧水務(wù)已成為智慧城市建設(shè)的重要一環(huán)[1],其要求建設(shè)精細(xì)化、動態(tài)化、高效化的水務(wù)系統(tǒng)。短期供水量的精準(zhǔn)預(yù)測可為科學(xué)供水提供指導(dǎo),提高資源利用率。在市政管網(wǎng)中不利點水壓達(dá)標(biāo)的前提下,通過模型預(yù)測的供水量數(shù)據(jù)對供水模式進(jìn)行優(yōu)化。使得泵組在總功率相對較小的工況下工作,實現(xiàn)節(jié)能降耗的目的。目前,已有不少學(xué)者在此領(lǐng)域引入人工智能模型。如高赫余等[2]基于時間、氣象、節(jié)假日等多種維度使用Adaboost技術(shù)來訓(xùn)練短期供水量預(yù)測模型;王盼等[3]考慮了產(chǎn)業(yè)結(jié)構(gòu)、人口、GDP等數(shù)據(jù),使用隨機(jī)森林相關(guān)技術(shù)來對城市需水量進(jìn)行預(yù)測;郭冠呈等[4]使用了BiLSTM神經(jīng)網(wǎng)絡(luò)進(jìn)行了常州市15分鐘粒度的供水量預(yù)測;王圃等[5]在BP神經(jīng)網(wǎng)絡(luò)的基礎(chǔ)上,提出了多分辨BP神經(jīng)網(wǎng)絡(luò)的建模新思路;鞠佳偉等[6]基于多元線性回歸法進(jìn)行日供水量預(yù)測模型的構(gòu)建。以上各種方案也取得了較好的預(yù)測效果。然而,由于氣象差異、地域用水習(xí)慣差異等客觀條件,上述解決方案無法直接推廣應(yīng)用。為更好地對時供水量進(jìn)行預(yù)測,本文嘗試使用ARIMA、隨機(jī)森林、XGBoost、LSTM等算法進(jìn)行建模,應(yīng)用四川省樂山市夾江縣城區(qū)小時粒度供水量數(shù)據(jù)對模型的推理能力進(jìn)行驗證。對物聯(lián)網(wǎng)采集到的數(shù)據(jù)進(jìn)行預(yù)處理,并從天氣、日期、統(tǒng)計等角度進(jìn)行人工特征的構(gòu)造,使得模型具備良好的泛化能力。
本文供水量數(shù)據(jù)來源于中電建夾江青衣水廠,自2020年07月25日-2021年08月21日共10160條時數(shù)據(jù)。其中,粒度為小時,每天從0時-23時共24條數(shù)據(jù)。青衣水廠的供水量日變化曲線如圖1所示。
圖1 日供水量曲線
城市供水主要是自來水廠為城市的正常運(yùn)轉(zhuǎn)提供必要的水資源。由圖1可見,水廠每日供水量有著明顯的變化。時供水量有明顯的周期性變化(早高峰、晚高峰),且與天氣狀況、節(jié)假日等諸多因素密切相關(guān)[7]。供水量的變化大致有周、季節(jié)、年的一些時序性規(guī)律。同時,由于一些極端天氣、大型活動、社會熱點事件等狀況的發(fā)生,供水量也有一些隨機(jī)的波動。
原始數(shù)據(jù)只包括供水總量及對應(yīng)的時間戳,特征比較單薄。本文對初始特征進(jìn)行了相應(yīng)的特征變換。對時間戳數(shù)據(jù)按照峰、平、谷、節(jié)假日等維度進(jìn)行特征擴(kuò)展。另外,使用網(wǎng)絡(luò)爬蟲爬取了對應(yīng)時間段的氣象數(shù)據(jù),并構(gòu)建特征作為補(bǔ)充。
由于網(wǎng)絡(luò)原因、在線儀表維護(hù)和檢修等原因,水廠生產(chǎn)數(shù)據(jù)或多或少都會存在一些異常,如果直接使用這些數(shù)據(jù)會嚴(yán)重干擾模型的預(yù)測結(jié)果,因此,有必要對相關(guān)數(shù)據(jù)進(jìn)行識別并處理。
1.2.1 異常數(shù)據(jù)識別
異常值檢測方法有很多,如周志華團(tuán)隊提出的孤立森林法、3倍標(biāo)準(zhǔn)差檢測法、箱線圖法等[8]。孤立森林屬于無監(jiān)督學(xué)習(xí)范疇,它將所有數(shù)據(jù)按照某個特征的隨機(jī)值劃分為兩部分,對于每棵子樹來說,針對數(shù)據(jù)集的不同特征值,會隨機(jī)挑選特征值取值范圍就可以逐漸將正常值和異常值分開。3倍標(biāo)準(zhǔn)差檢測法是假定數(shù)據(jù)服從高斯分布,通常將3倍標(biāo)準(zhǔn)差的誤差認(rèn)為是數(shù)據(jù)的極限誤差,因其理論簡單和可靠的校驗結(jié)果被廣泛應(yīng)用。本文主要采用3倍標(biāo)準(zhǔn)差的思路來對異常值進(jìn)行識別。
1.2.2 異常數(shù)據(jù)處理
分析水廠的供水歷史數(shù)據(jù)發(fā)現(xiàn),產(chǎn)生供水量數(shù)據(jù)共10160條,存在著73條缺失數(shù)據(jù),主要體現(xiàn)在2020年08月11日、19日、20日、10月15日、10月17日。對于異常數(shù)據(jù),采用如下處理方法:一是如果某一小時數(shù)據(jù)出現(xiàn)缺失或異常,使用該時間節(jié)點前后兩天所對應(yīng)小時的平均值來進(jìn)行填充;二是如果某小時前后兩天對應(yīng)小時水量差距很大,則使用滑動均值來對異常數(shù)據(jù)進(jìn)行替換。其處理邏輯是將滑動窗口大小設(shè)置為72h(周期為3d),使用最近3d數(shù)據(jù)的加權(quán)平均值來替換當(dāng)前時刻的異常值。
本文用ARIMA、隨機(jī)森林、XGBoost、LSTM長短期記憶神經(jīng)網(wǎng)絡(luò)四種預(yù)測模型來對夾江水廠供水量進(jìn)行預(yù)測并比較結(jié)果。
ARIMA(差分自回歸移動平均模型),它是一種時間序列模型[9]。該技術(shù)要求數(shù)據(jù)序列是平穩(wěn)的,且輸入的數(shù)據(jù)是單變量序列。
隨機(jī)森林是一種集成算法,它由多個弱學(xué)習(xí)器組成。歸功于隨機(jī)的數(shù)據(jù)抽取和特征抽取,該算法有很強(qiáng)的泛化能力。
它的主要步驟如下:
(1)使用自助抽樣法對原始數(shù)據(jù)集進(jìn)行數(shù)據(jù)的抽取。
(2)無放回地隨機(jī)抽取一定數(shù)量的特征,并在這些特征中選擇最佳的分割[10]。自上而下地生成決策樹并重復(fù)多次類似的操作。
(3)最終使用投票法決定決策結(jié)果。
(4)使用袋外理論來評估誤差[10]。
XGBoost是由陳天奇提出的一種分布式的算法框架。它是對傳統(tǒng)的梯度提升算法的一個改良,核心思想是基于殘差的訓(xùn)練[11]。
XGBoost有如下優(yōu)點:①對于缺失數(shù)據(jù)采用稀疏感知策略可以直接處理;②對訓(xùn)練的每個特征排序并且以塊的結(jié)構(gòu)存儲在內(nèi)存中,方便后面的重復(fù)利用;③算法自帶了L1和L2正則項,可以有效防止過擬合;④損失函數(shù)包括了一階導(dǎo)數(shù)和二階導(dǎo)數(shù);⑤在每次節(jié)點分裂前進(jìn)行列隨機(jī)采樣,降低過擬合風(fēng)險。
LSTM神經(jīng)網(wǎng)絡(luò)是RNN的一個變種,RNN與傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)相比,它最大的優(yōu)勢是帶有動態(tài)的記憶性。它的結(jié)構(gòu)如圖2所示。
圖2 RNN結(jié)構(gòu)示意
RNNs在訓(xùn)練時采用了反向傳播算法。在遇到長序列時,信息和殘差在RNN神經(jīng)元中傳遞會隨時間逐步損耗而造成梯度消失。為此,人們在RNN的基礎(chǔ)上提出了LSTM神經(jīng)網(wǎng)絡(luò)。該算法的結(jié)構(gòu)如圖3所示。
圖3 LSTM結(jié)構(gòu)示意
LSTM主要引入了三個經(jīng)典的門結(jié)構(gòu),分別為遺忘門、輸入門和輸出門[12]。相對于RNN它有如下優(yōu)點:具有長期記憶能力、改善RNN中的長時依賴問題,能夠緩解梯度消失的情況。
數(shù)據(jù)和特征對模型的預(yù)測能力有著直接的影響。如何將原始數(shù)據(jù)衍生出多種維度,進(jìn)而提高模型對未知數(shù)據(jù)的預(yù)測精度至關(guān)重要。
因此,對于時供水量預(yù)測問題,本文引入特征工程相關(guān)技術(shù),分別從日期、氣候、歷史數(shù)據(jù)統(tǒng)計這幾個維度進(jìn)行特征構(gòu)建。
3.1.1 挖掘日期信息
日期的變化、四季的更替都和供水量息息相關(guān)[13]。例如夏季氣溫普遍較高,生活用水激增,而冬季的用水量會相對較少;在春節(jié)、國慶等長假中,由于人們的出行習(xí)慣等因素的影響,也會對用水量產(chǎn)生較大的波動。因此,對日期信息做了進(jìn)一步細(xì)化,得出日期所屬的季節(jié)、月份、年內(nèi)第幾天、月內(nèi)第幾天、周內(nèi)第幾天等信息。
日期按照類型又可分為節(jié)假日、雙休日、調(diào)休日和工作日。日期的不同,居民的用水習(xí)慣會有所差異。為了使日期類型作為模型的輸入項,需要對這幾種不同的日期類型進(jìn)行處理并轉(zhuǎn)化為數(shù)值類型。由于春節(jié)、端午、中秋節(jié)等節(jié)假日的特殊性,會給傳統(tǒng)的時間序列算法預(yù)測精度造成很大影響。因此,本文采用將不同節(jié)假日打不同標(biāo)簽的方法,這樣的處理方法可以提高供水量預(yù)測的精度。
用水量峰、平、谷的變化和時間因素密切相關(guān)。通過分析數(shù)據(jù)發(fā)現(xiàn),可按時段分為早高峰、晚高峰、平谷、低谷時段。并且有較強(qiáng)的周期,與居民的活動有較強(qiáng)的相關(guān)性。在早晚時間段,用水量會出現(xiàn)用水高峰。而在午夜后,會出現(xiàn)低谷期?;诮5男枰?,本文對早高峰、晚高峰、平谷及低谷等時段進(jìn)行數(shù)據(jù)映射。
3.1.2 挖掘氣象數(shù)據(jù)
氣候因素也會在很大程度上影響用戶的用水行為。其中溫度的影響最為突出。如遇到持續(xù)的高溫天氣會導(dǎo)致用水量的加大[14]。另外,還要考慮天氣狀況,風(fēng)力大小也會影響到城市的生產(chǎn)生活。本文將天氣狀況按照晴天、陰天、降雨級別等維度進(jìn)行分解。將氣溫按照多個區(qū)間進(jìn)行分箱。
3.1.3 挖掘統(tǒng)計特征
由于城市供水是一個持續(xù)不斷的過程,過往一段時間的供水量會對當(dāng)前的供水量產(chǎn)生一定影響。為了深入挖掘時序變化所引起的供水量變化,筆者將上周同一天同一小時、昨天同一小時、最近一天平均供水量、最近三小時平均供水量等統(tǒng)計特征加入到模型之中。
綜上所述,本節(jié)主要目標(biāo)是建立時供水量預(yù)測模型,根據(jù)預(yù)測結(jié)果指導(dǎo)供水調(diào)度。所以有必要找出對供水量有影響的因素。本文考慮了季節(jié)、月份、星期、高峰、低谷、平谷、時間、平均氣溫、天氣狀況、風(fēng)力、節(jié)假日等因素。同時,對供水量數(shù)據(jù)進(jìn)行了統(tǒng)計特征的構(gòu)造,經(jīng)過對日期信息的特征擴(kuò)展,可以得出該日期所屬周的第幾天、月的第幾天、年的第幾天等信息。通過以上的特征擴(kuò)展,將原始數(shù)據(jù)構(gòu)造出多維特征。
模型構(gòu)建完成后,需要對它的推理能力做出評估。如果經(jīng)過評估后達(dá)不到預(yù)期效果,還需要對模型進(jìn)行不斷迭代優(yōu)化。對于本文中的時供水量預(yù)測模型,主要采用平均絕對百分比誤差(MAPE)和平均絕對誤差(MAE)作為評估依據(jù),數(shù)學(xué)定義如式(1)和(2)。
(1)
(2)
本文構(gòu)建出了如3.1所述的多維特征。但并不是需要將每個特征都要加入模型,大量的特征加入既會耗費(fèi)大量的資源、又會影響模型的最終效果。因此,在建模時需要對特征進(jìn)行篩選。
特征選擇的方法有多種多樣,如PCA、特征重要度排序、相關(guān)系數(shù)法、方差法。本文采用方差法結(jié)合Pearson相關(guān)系數(shù)來進(jìn)行特征的初步篩選。首先將方差接近于零的變量進(jìn)行過濾,在此基礎(chǔ)上使用相關(guān)系數(shù)進(jìn)行變量的二次過濾。如果變量之間相關(guān)系數(shù)的絕對值太小,則認(rèn)為它們之間相關(guān)性較弱,本文將閾值設(shè)定在0.15。圖4展示了各特征之間的相關(guān)性矩陣。
圖4 各指標(biāo)參數(shù)間的相關(guān)性矩陣
為了盡可能地讓機(jī)器學(xué)習(xí)模型有更好的效果,有必要對超參數(shù)進(jìn)行調(diào)優(yōu),不同的調(diào)參策略會使得模型的訓(xùn)練和預(yù)測效果不盡相同。常見的調(diào)參方式主要有手工調(diào)參、網(wǎng)格搜索、隨機(jī)搜索、貝葉斯優(yōu)化法[15]。
手動調(diào)參相對原始,需要人工大量的嘗試,進(jìn)而消耗寶貴的時間,且很難得到最佳的超參數(shù)。而網(wǎng)格搜索會窮舉每一種可能的超參數(shù)組合來尋找最優(yōu)值,調(diào)參過程也相對緩慢。隨機(jī)搜索是一種隨機(jī)采樣的調(diào)參方式,往往可以獲得近似最優(yōu)解。貝葉斯優(yōu)化可以用非常少的步數(shù)就能找到比較好的超參數(shù)組合。本文采用python結(jié)合相應(yīng)的bayes_opt包來完成超參數(shù)的調(diào)優(yōu)。
本文首先將歷史數(shù)據(jù)集進(jìn)行劃分。其中,2020年7月25日到2021年6月30日為訓(xùn)練集,2021年7月1日到2021年8月21日為測試集。分別使用傳統(tǒng)的ARIMA、基于樹的集成學(xué)習(xí)相關(guān)模型,以及神經(jīng)網(wǎng)絡(luò)技術(shù)進(jìn)行時供水量預(yù)測模型的構(gòu)建。表1為模型在測試集的預(yù)測效果。
表1 模型預(yù)測效果對比
如表1所示,在同樣的測試集上,使用XGBoost模型誤差評估值MAPE為4.7,MAE為82.1,遠(yuǎn)低于其他幾個模型,與其他模型相比預(yù)測效果有較大的提升。采用不同模型對時供水量的預(yù)測效果見圖5-圖8。
圖5 采用ARIMA對時供水量的預(yù)測效果
圖6 采用隨機(jī)森林對時供水量預(yù)測的效果
圖7 采用XGBoost對時供水量預(yù)測的效果
圖8 采用LSTM對時供水量預(yù)測的效果
供水量預(yù)測建模采用特征工程、相關(guān)性分析和模型訓(xùn)練三大步驟。其中,特征工程構(gòu)建了與天氣狀況、日期、時間等與供水量息息相關(guān)的因子。在此基礎(chǔ)上,描述了用時間序列模型ARIMA、隨機(jī)森林、XGBoost、長短期記憶神經(jīng)網(wǎng)絡(luò)LSTM四種算法對夾江城區(qū)供水量進(jìn)行一個小時的短期預(yù)測。模型具有自動、實時、準(zhǔn)確、方便等優(yōu)點,與其他模型對比后發(fā)現(xiàn)使用XGBoost模型進(jìn)行短時供水量預(yù)測有明顯優(yōu)勢。XGBoost模型在數(shù)據(jù)集上有最高的精度,而其他幾種模型的預(yù)測效果相對較差。
在對四種算法進(jìn)行比較之后選擇基于XGBoost算法建立水廠的短時供水量預(yù)測模型。將天氣、日期等數(shù)據(jù)傳入模型后,模型可以將數(shù)據(jù)進(jìn)行特征擴(kuò)充并快速、準(zhǔn)確推理未來一小時的供水量。依據(jù)模型的推理結(jié)果,再結(jié)合調(diào)度人員的歷史經(jīng)驗對城區(qū)的供水量進(jìn)行合理調(diào)度,達(dá)到用科學(xué)技術(shù)提高管理經(jīng)驗的目的,實現(xiàn)節(jié)能降耗、減少水量損失的效果。