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