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