喬顯棟 史賀龍
關鍵詞: Autoformer 氣溫預測 模型評估 研究
中圖分類號: X52 文獻標識碼: A 文章編號: 1672-3791(2023)15-0054-04
近年來,我國的天氣預報準確率大幅度提升。對氣溫預報的再提升仍然是一個大的課題,隨著機器學習的日益發展,利用機器學習的數學統計模型進行氣溫預測也成為天氣預報的一個方向。目前,基于深度學習神經網絡的氣溫預測日盛,例如:花凡、李莉的基于長短期記憶網絡(LSTM)對氣溫預測進行了研究;朱國棟等人基于隨機森林的方法對機場溫度進行了初步預測;馬司周基于GCN、RNN 等模型對氣溫時間序列預測進行了探究;還有許多研究者基于BP 神經網絡、XGBoost、LightGBM 等模型為區域氣溫預測提供了多種方法。這些模型方法的應用大大豐富了氣溫預測的方法,為提高氣溫預測的準確率提升進行深入探討。
2017 年,谷歌發表了一篇“Attention is All YouNeed”的論文,本文提出了一個基于Self Attention(自注意力機制)結構來處理序列相關問題的Transformer 模型,并且在時間序列數據處理上如機器翻譯、閱讀理解等方面獲得了成功。而后很多技術團隊對Transfomer模型進行了很大改進,并衍生出Informer、Reformer、Payformer 等變體模型。清華大學的吳海旭機器學習團隊的Autofomer 模型在Transformer 基礎上進行了革新,并為2022 年北京冬奧會的氣象監控和預測提供了有效支撐,補齊了氣象實時預報的短板。本文利用該模型對昔陽縣2021 年小時氣溫數據進行訓練,最后生成預測模型,從而為昔陽縣本地實時氣溫預報提供重要的科技支撐手段。
1 數據處理
模型采集的數據主要是昔陽縣國家氣象觀測站2021 年逐小時氣溫數據,運用Python 語言中requests 庫通過“天擎”系統提供的數據接口獲取氣溫數據并以CSV 文件的格式進行存儲。獲取的氣溫數據主要是DateTime(日期時間)/ TEM(平均氣溫)、TEM_Max(小時最高氣溫)、TEM_Min(小時最低氣溫)等4 列數據,同時用Pandas 庫對對其中缺測、異常的數據進行清洗剔除,同時對DateTime 列數據進行時間格式化處理,便于模型后續的讀取訓練操作,保證數據使用的質量,增強模型訓練的正確性,最后對獲取的數據進行分割(70% 的數據進行訓練,20% 的數據用于驗證,10% 的數據用于測試)。
2 模型原理
Autoformer 模型全面革新Transformer 為深度分解架構,其內部包括序列分解單元、自相關機制以及對應的編-解碼器等,如圖1 所示。
2.1 深度分解架構
Autoformer 模型將時間序列分解作為Autoformer的一個內部單元,嵌入到編-解碼器中。在預測工程中,模型可以交替進行預測結果優化和序列分解,從隱變量中逐步分離出趨勢項(trend-cylical)和周期項(seasonal),大大提升了分解效果,使預測結果更準確,并且將未來各個趨勢項和周期項有效組合起來。
通過研究對比分析,Autoformer 模型的自注意力機制(Auto-Correlation Machanism)比Transformer 模型的自注意力機制(self-attention)及其變體模型注意力機制更好地實現了序列級的高效連接,從而可以更好的進行信息聚合,打破了信息利用的瓶頸[4-5]。
3 模型應用
Autoformer 模型基于PyTorch 機器學習框架進行實現,SeriesDecomp(序列分解單單元)、編碼器、解碼器、自相關機制等模塊都繼承torch.nn.module 神經網絡模塊進行實現,在Linux 主機預安裝Python 運行環境,在此基礎上安裝pandas、sklearn、torch、torchvision、numpy、matplotlib 等必需的運行模塊,將運行訓練的數據weather.csv 存放在dataset 文件夾下,編寫運行腳本文件Autoformer.sh,其內容如下:
python -u run.py \
--is_training 1 \
--root_path ./dataset/predata/ \
--data_path weather.csv \
--model_id weather_24_24 \
--model Autoformer \
--data custom \
--features M \
--seq_len 24 \
--label_len 12 \
--pred_len 24 \
--d_model 128 \
--e_layers 2 \
--d_layers 1 \
--factor 3 \
--enc_in 3 \
--dec_in 3 \
--c_out 3 \
--des 'Exp' \
--itr 1 \
--train_epoch 2
在運行環境中運行bash./Autoformer.sh 進行運行,在運行過程中,以12 h 數據為標記組,在此基礎上要不斷改變pred_len 參數進行預測組時長,分別改24 h、48h、72 h、240 h 進行模型訓練,最終測試結果存放在result.txt 文件中[6]。
4 模型對比分析
模型在訓練過程中,在相同的輸入-輸出設置下,對比了自相關機制與其他自注意力機制,如Trans-former中Full Attention,Informer 的ProbSparse Attention?Attention。其運行對比結果如表1 所示。
從表1 中可以看出24 h、48 h、72 h、240 h 的MAE、MSE 誤差系數Autoformer 基本上是小于其他模型的,取得了最優的結果,所以Autoformer 模型與其他模型相比在臨近、短期預報、長期預報中有很大的優勢。
5 結論與討論
(1)基于Autoformer 模型訓練氣溫數據進行預報,與其他Transformer 模型相比,誤差率較低,運行效率高,該模型的使用極大地豐富了基層氣象預報的手段,非常具有實用性,在將來可以將數值預報與Autoformer模型預報相結合,提高基層臺站的氣溫預報準確率。
(2)與其他Transformer 模型對比來看,Autoformer模型有準確率較高,但區域氣溫受外部因素(如地區地形、氣壓、日照)等影響較大,模型缺少內在的大氣動力條件,將來可以考慮把氣壓、日照、變壓、變溫等因子加入到模型中氣溫預測,進一步提高模型預報的準確率。
(3)在模型訓練中只對2021 年的逐小時數據進行訓練,今后將把30 年或者50 年的氣象數據資料加入到模型中進行訓練,從而提高模型的預報準確率,充分提高基層預報員的預報分析能力。