時序預測算法在蔚來汽車的應用探索
一、業務背景
1、蔚來汽車簡介
蔚來汽車成立于2014年11月,是高端智能電動汽車市場的先驅及領跑者。蔚來的使命是創造愉悅的生活方式。蔚來旨在打造一個以智能電動汽車為起點的社區,與用戶分享歡樂、共同成長。
圍繞社區,蔚來汽車共有5大版塊業務,分別是:
- NIO House
- NIO Life
- NIO Power
- NIO Service
- NIO Certified
蔚來汽車旨在構建全球創新的智能能源服務體系,本文將重點介紹NIO Power這部分業務。NIO Power 是基于移動互聯網的加電解決方案,擁有廣泛布局的充換電設施網絡,依托蔚來云技術,搭建了“可充可換可升級”的能源服務體系,為車主提供全場景化的加電服務,主要包括家充樁2.0、家用快充樁、超充樁、換電站、一鍵加電等,用戶可通過蔚來APP充電地圖搜索加電資源。
蔚來擁有豐富的車型體系,包括六座智能電動旗艦SUV ES8、中大型五座智能電動SUV ES7(或EL7)、五座全場景智能電動SUV ES6、五座智能電動旗艦轎跑SUV EC7、五座智能電動轎跑SUV EC6、智能電動旗艦轎車ET7及中型智能電動轎車ET5。
2、時序預測背景
對于時序預測,首先要回答的一個問題是時序數據是什么。
時序數據,就是序列隨時間變化的數據。時間序列分析,一般有時域和頻域兩種分析方法。時序預測的本質是在時域和頻域層面探索時間序列變化的內在規律。
下圖描述的是時域(temporal domain),橫坐標是時間,縱坐標是某個測量信號的數值。時域能夠最直觀地反映序列隨時間的變化。
時域分析一般包括周期、季節和趨勢這三類規律:
- 周期性:重復的上升、下降過程,從哪來回哪去;
- 季節性:固定頻率的上升、下降,多為先驗因素;
- 趨勢性:長期保持增長或者下降。
另一種時序的分析方法是頻域分析,下圖展示的就是某個時間序列的頻域(frequency domain),反映的是序列頻率的變化,橫坐標是信號的頻率,縱坐標是信號的振幅或能量等物理量。
頻域分析有個重要的概念叫做譜密度,其核心思想是:信號是由少數主頻疊加而成的。
- 譜密度:信號由少數主頻疊加而成
上述這一思想在其他領域也會頻繁被使用,例如將時間序列進行主成分分解等。
3、換電站需求預測
(1)常見任務
時序預測的常見任務可以按照輸入變量數量、輸出序列長度、輸出序列時間跨度這3種維度進行劃分:
①按照輸入變量數量劃分,包括:
- 單變量:單個變量
- 多變量:至少兩個變量
②按照輸出序列長度劃分,包括:
- 單輸出:預測長度等于1
- 多輸出:預測長度大于1
③按照輸出序列時間跨度劃分,包括:
- 短期預測
- 中期預測
- 長期預測
此外,輸出變量也有單變量和多變量之分,這種方式可以拆解為多個不同的上述任務處理。
歡迎大家通過蔚來加電地圖 查看附近的補能資源,讓加電比加油更方便(鏈接如下):
https://chargermap.nio.com/pe/h5/static/mchargermap/?btn=rounded&channel=vxofficial&wv=lg
(2)應用場景
如上圖所示,需要對全國1000多個換電站進行預測,其預測的應用場景主要包括:
①新站選址
對于新建換電站,需要對不同地址的需求量進行預測,從而選出最佳換電站的建站地址。
②錯峰充電
換電站的目的是把低電量電池換進來,把滿電電池換出去;
由于電網每天24時段存在峰谷平電價差,如果將電盡可能多的充在“谷”時,這樣充電的電費成本也會降低;
③電池調度
由于電池是可分離的,因此電池需要根據換電站的實際需求進行調度以滿足用戶日常和節假日的出行換電需求。
(3)業務需求
基于上述應用場景,會產生以下的業務需求:
- 短期預測:預測未來24小時的單量
- 中期預測:預測未來30天的單量
- 長期預測:預測未來12個月的單量
(4)算法任務
基于上述3類業務需求,轉化成以下3類基于Seq-to-seq的算法任務:
- 多變量-多輸出的短期預測
- 多變量-多輸出的中期預測
- 多變量-多輸出的長期預測
二、關鍵挑戰
1、多序列的復雜季節性
(1)不同換電站的序列不同
如下圖所示,不同換電站對應序列的周期性是不相同的。
顯然,換電站A、換電站B和換電站C在每天的周期性變化不同。
(2)序列間的季節性不一致
除了周期性,不同換電站序列的季節性是不相同的;
顯然,換電站A、換電站B和換電站C在相同節假日的季節性不同。
2、時間特征的漂移
(1)節假日時間不固定
不同年份的春節等大型節假日的時間是不固定的。
(2)預測具有時間先驗
常規的監督學習是基于X變量來預測y,是一個f(X)問題;而對于時序預測,未來的時變變量t是已知的,因此會變成f(X,Xy)問題。
正如剛才所言,節假日時間是不固定的,所以常規的監督學習并不適用,而預測的時間先驗就顯得尤為重要。
3、增長與競爭
(1)電區房用戶增長
電區房一般建在換電站周邊3km范圍內,其覆蓋用戶是持續增長的。
(2)換電站間的競爭
換電站的新建與廢棄,都會對用戶造成影響,導致周邊單量的突變。因此,增長和競爭都是非常重要的因素。
三、算法實踐
1、系統架構
首先介紹算法系統架構的大概情況:
(1)數據
- 數據通過數據倉庫進行存儲。
- 采集的數據主要包括屬性數據、運營數據、訂單數據、用戶數據、車輛數據、天氣數據等常規數據。
(2)特征
- 特征引擎:主要包括分布性、周期性及相關變量
- Embedding引擎:主要包括常規的token、value、positional、temporal等embedding
(3)模型
- 特征引擎為機器學習模型服務,Embedding引擎為深度學習服務。
- 模型算法的演進路線為:ARIMA、Prophet、LGB、TCN、CRNN、Informer、DCN等。
(4)組合
- 為提升模型效果,基于原模型會進行一些模型融合。
- 包括max、avg、min等統計組件,以及LR、SVM、GBDT、DQN等模型組件這兩個部分。
(5)服務
- 通過算法部署平臺,將以上各個組件及服務進行生產和線上化。
2、機器學習模型
對于時間序列預測模型,常用的機器學習模型主要包括以下3類:ARIMA,Prophet,LGB。這3類模型的優缺點如下:
(1)ARIMA
①優點
- 簡單易行,可解釋性強。
- 數據量要求低。
- 計算速度較快,可以對每個站在線擬合推理。
②缺點
- 僅支持單變量。
- 無法特征工程。
- 準確率低。
③適用場景:項目初期冷啟動
(2)Prophet
①優點
- 簡單易行,可解釋性強。
- 數據量要求低。
- 計算速度更快,可以對每個站在線擬合推理。
②缺點
- 僅支持單變量。
- 無法特征工程。
- 準確率較低。
③適用場景:項目初期迭代
(3)LGB
①優點
- 準確率較高。
- 簡單易行,可解釋性強。
- 支持批量預測,計算速度更快。
②缺點
- 迭代模型等于迭代特征。
- 迭代特征存在瓶頸。
- 對類別特征利用不充分。
③適用場景:項目中期迭代
3、深度學習模型
前文提到,機器學習的可操作性以及模型效果都是有限的,會遇到瓶頸,因此引入深度學習模型:
① 深度學習模型架構
時序預測任務所涉及到的CNNs、RNNs和Transformers等模型都屬于生成模型,具有統一的架構(unified architecture),這樣的架構有兩個重點部分,一個是Embedding引擎部分,另一個是編碼器-解碼器部分,如下圖所示:
- TCN模型的編碼器和解碼器主要是1D卷積網絡
- CRNN模型的編碼器和解碼器主要是1D卷積網絡和RNN網絡
- Informer模型的編碼器和解碼器主要是Transformer網絡
- DCN模型的編碼器和解碼器主要是2D卷積網絡
② 架構Embedding引擎
系統架構中的Embedding引擎主要包括Token Embedding、Value Embedding 、Positional Embedding、Temporal Embedding這4個部分;這4個部分針對的數據或特征是不同的,其中Token Embedding針對屬性變量,Temporal Embedding針對時間相關變量,而Value Embedding和Positional Embedding則針對其他相關變量;最后將以上4類embedding進行疊加和融合,最終得到一個稠密的特征向量。
下面對這4類embedding進行詳細的介紹:
- Token Embedding
Token Embedding主要用來解決多序列的問題。
Token常見于自然語言處理,是“詞”的數字化表示;此處使用token用來表達屬性變量。
具體來說,對于監督學習的一組變量X和y,需要增加屬性變量來標明是來自A換電站還是B換電站,因此需要通過token embedding來解決此類問題。
我們所用到的屬性變量主要包括換電站本身表征、換電站所屬區域(位于城區還是城際)、換電站所屬位置(建在商場、服務區還是景點等)等這幾類和業務相關的、固有的屬性。
- Value Embedding
Value Embedding主要用來解決競爭與增長方面的問題。
在某個換電站附近新建一個站,或者下線一個站,該換電站的訂單往往會產生突變;而這樣的競爭與增長又是容易被忽視的相關變量,因此不能僅考慮單序列維度,而是要綜合考慮區域維度。從用戶角度,根據用戶車輛、電池的類型對用戶進行區分(標準續航或長續航),并對區域范圍內換電站的數量以及單量進行統計和聚合,形成Value Embedding。
- Positional Embedding
Positional Embedding主要用來解決復雜季節性問題。
例如,同樣是國慶節,不同換電站的序列變化差別很大。如何把握不同的變化位置,需要使用類似transformer的Positional Embedding方法,來標記不同序列在不同季節性下的變化位置。
- Temporal Embedding
Temporal Embedding主要用來解決兩個問題,一個是節假日時間不固定問題,另一個是時間先驗問題。
對于第一個節假日不固定問題,我們的節假日包括陽歷節日和農歷節日;根據序列的時間周期可以拆分成小時、天、周、月、年等常規周期;對于節假日時間的對齊方式,包括硬對齊和軟對齊兩種方式。硬對齊主要指序列按照周、月、年等方式進行序列對齊,而軟對齊主要是指將序列進行傅里葉變換,找到序列的主頻,借助序列的頻域信息進行對齊。
對于第二個時間先驗問題,如下圖所示,預測的時間數據已知,但是其它相關輸入變量未知,這就造成了輸入數據的維度不一致。
對于上述問題,通過填充未知的其他變量令輸入數據的維度一致,并根據位置的標記區分已知變量和未知變量,最終可以得到輸出的預測變量。
③ 卷積模塊設計
DCN部分中卷積層的設計,首先面臨如下的思考:假設輸入序列長度等于L,第i個卷積層的卷積核大小等于2i+1,步長等于1,需要多少卷積層?
這里涉及到兩個概念:
- 因果卷積。
- 時間序列本身存在因果關系,即在某一時間點t,只能獲取歷史信息,而無法獲取未來信息。
- 使用下圖所示的單邊卷積,用來保證序列的時間因果關系。
- 感受野。
- 感受野主要是指將一個特征點映射回到原始輸入,所覆蓋的范圍。
- 需要保證卷積神經網絡可以覆蓋到輸入時間序列的長度范圍。
- 感受野可以通過下圖的表格計算,得到的n就是需要設置的卷積層數
確定了卷積層的層數,將卷積層通過殘差層子模塊,像搭積木一樣連接成整體的網絡模塊。
4、模型融合
模型融合方面,有三個問題值得思考:
- 加法還是減法?
- 減法主要包括殘差、GBDT、Shortcut等。
- 加法主要包括stacking等方法。
- 分類還是回歸?
- 傳統的預測一般是回歸問題。
- 分類問題往往會涉及概率問題,通過投票選擇可以獲得一定的信息。
- 向上、向下還是躺平?
- 使用基模型進行預測,可通過強化學習對預測效果進行反饋。
5、實踐效果
模型效果評估,選擇絕對誤差(MAE)和百分比誤差(MAPE)來衡量。如下表所示,隨著模型的迭代,MAPE的提升相對有限且不夠理想(理想誤差在5%以內,實際調優后的結果在23%左右)。
下圖是對未來30個點的數據進行多步預測的結果,縱坐標是所有換電站疊加的總和,并進行了一個線性變換(不影響結果的趨勢):
對比上圖LGB結果、DCN結果和實際值,可以看出:
- LGB模型對節假日過擬合,且不利于處理節假日預測。
- Informer模型對長序列的季節性表現不佳,但DCN模型可以使用卷積通道對時變變量進行對齊,有利于處理節假日預測。
至于最終結果仍然停滯在23%左右遇到瓶頸,這里就引入了一個對生成模型的思考。近期大火的GPT也是一種生成模型,但是本質上這類模型并沒有標準答案,可以將其理解成一種“創造”;而時序預測也是一種生成模型,但是這個模型是有標準答案的,同時也會受到外界環境如疫情、出行等諸多不可預測的因素所影響,而模型的訓練也容易對過去的表現規律過擬合。
四、總結展望
未來計劃:
- 更快
實時化:數據和結果的更新響應更快。信息差很大程度決定了模型的預測效果,之前在實時特征上做了很多工作,接下來會將更多離線特征轉成實時特征,盡可能多地獲取實時化的數據,不斷更新模型的預測結果。
高效化:開發效率更快。將統一的架構提煉形成算法庫,實現算法的低代碼開發和迭代。
- 更好
縱向追求算法卓越。行業的發展很快,接下來會不斷關注其他優秀前沿專家的相關工作。
橫向追求功能完善。時序除了預測還包括其他任務,接下來會盡可能使用一種架構覆蓋全方面的業務需求。
- 更有價值
組織內實現高效賦能。將現有的工具推廣到更多有類似需求的其它部門,賦能其它業務的快速發展。
組織外實現開源共創。適當時機可能會通過開源相關工程技術,源源不斷地為預測算法注入新的思路和方法
五、Q&A
Q1:深度學習數據訓練集要達到怎樣的規模,其效果才會優于傳統的機器學習模型?
A1:現有模型使用的數據大概是3年的歷史數據。首先,換電站的建立是逐步累積的,不同的換電站,會存在“冷啟動”這樣的問題;而文中所展示的架構可以有效地實現這種“冷啟動”問題。至于深度學習訓練集的規模,這個主要還是憑借經驗,很難有明確的界限。對于新建換電站,深度學習模型的效果確實并不理想;對于已投產2-3年的換電站,其深度學習的效果要明顯優于機器學習。
Q2:自動駕駛普及之后,交通流的預測是否還有意義?
A2:預測的意義肯定是有的,對節假日、早晚高峰以及重要路段等車流量突增情況的提前預知,對車聯網的調度意義重大,而僅采用自動駕駛的“臨時調整”策略則是低效且滯后的。