1
本文作者: 汪思穎 | 2018-03-19 09:53 |
雷鋒網(wǎng) AI 研習(xí)社消息,Kaggle 上 Corporación Favorita 主辦的商品銷量預(yù)測比賽于兩個月前落下帷幕,此次比賽的獎金池共計三萬美元,吸引到 1675 支隊伍參賽。
近日,Private Leaderboard 上的亞軍 SoLucky 團(tuán)隊在 arxiv 上發(fā)表了一篇論文,闡述了其獲勝方案,雷鋒網(wǎng) AI 研習(xí)社對論文內(nèi)容進(jìn)行編譯整理如下:
作者參加了在 Kaggle 上舉辦的 Corporacion Favorita Grocery Sales Forecasting 銷量預(yù)測比賽,并取得了第二名的成績。
這場比賽是基于時間序列數(shù)據(jù)的基礎(chǔ)機(jī)器學(xué)習(xí)問題,論文中闡明了總體分析和解決方案。
作者的方法基于空洞卷積神經(jīng)網(wǎng)絡(luò)(dilated convolutional neural network)并進(jìn)行了改善,來對時間序列進(jìn)行預(yù)測。利用這種技術(shù),在 n 個示例批次中不斷迭代,能夠快速和準(zhǔn)確地對大量時間序列數(shù)據(jù)進(jìn)行處理。
比賽背景
Kaggle 等競賽平臺舉辦的時間序列比賽目前已經(jīng)成為機(jī)器學(xué)習(xí)流行賽事,這些競賽有助于推進(jìn)機(jī)器學(xué)習(xí)頂尖技術(shù)的發(fā)展,將其用于實際領(lǐng)域。
時間序列是不太為人所知的分析領(lǐng)域。由于數(shù)據(jù)存在著季節(jié)性、動態(tài)性和周期性的特征,數(shù)據(jù)序列是非線性的,并存在噪聲,因此很難準(zhǔn)確進(jìn)行識別和預(yù)測。
神經(jīng)網(wǎng)絡(luò)在近幾年的熱度急劇增長,這使人們對預(yù)測有了截然不同的理解。硬件的進(jìn)步使得我們能夠在一定時間內(nèi)利用深度神經(jīng)網(wǎng)絡(luò)解決問題。目前,深度學(xué)習(xí)是一個可行的解決方案,利用這項技術(shù),近年來研究者們在基準(zhǔn)數(shù)據(jù)集的分類精度上打破了很多記錄。
作者在本文中討論了解決 Corporacion Favorita Grocery Sales Forecasting 商品銷量預(yù)測問題的方法,描述并分析了將卷積神經(jīng)網(wǎng)絡(luò)應(yīng)用于時間序列數(shù)據(jù)。
數(shù)據(jù)集描述
數(shù)據(jù)被分為兩部分——訓(xùn)練數(shù)據(jù)和測試數(shù)據(jù)。訓(xùn)練數(shù)據(jù)用于模型訓(xùn)練,測試數(shù)據(jù)被分為幾部分,分別用于在公共和私人的排行榜上進(jìn)行模型的準(zhǔn)確性評估。這場比賽中,Corporacion Favorita 提供 125,497,040 個訓(xùn)練觀察值和 3370,464 個測試觀察值。
數(shù)據(jù)集由按日銷售額、商店編號、商品編號和促銷信息組成。此外,主辦方還提供交易信息、石油價格、商店信息和假期。
該競賽使用 NWRMSLE(標(biāo)準(zhǔn)化加權(quán)均方根對數(shù)誤差)作為評價指標(biāo)。
問題定義
實體店中的采購和銷售需要保持平衡。稍微將銷售預(yù)測過量,店里就會積存許多貨物,要是積壓了不易儲存的商品會更加糟糕。而要是將銷量預(yù)測過低,設(shè)想一下,當(dāng)顧客把錢都付了,卻發(fā)現(xiàn)沒貨,那這家店的口碑將會急劇下降。
此外,隨著零售商增加新的門店,那里的顧客又可能存在獨特的需求,比如他們想要新的產(chǎn)品,口味隨季節(jié)而變化,那問題將變得更加復(fù)雜,產(chǎn)品市場如何真的很難預(yù)知。
在這次比賽中,主辦方希望參賽者建立一個更準(zhǔn)確的預(yù)測產(chǎn)品銷量的模型。作者的目標(biāo)是建立一個可能應(yīng)用于實際,并具有最高準(zhǔn)確度的銷量預(yù)測模型。
主要存在如下三種挑戰(zhàn):
噪聲數(shù)據(jù):盡管組織者盡力準(zhǔn)備并提供了大量數(shù)據(jù),但其中存在有噪聲標(biāo)簽的數(shù)據(jù)。有些數(shù)據(jù)(石油價格、假期、交易)與目標(biāo)沒有關(guān)聯(lián),在之后根本不會使用。
不可見數(shù)據(jù):有這樣一種情況,在測試集中出現(xiàn)了不可見的數(shù)據(jù)。由于存在這類不可見的商店/商品數(shù)據(jù),模型的行為將不可預(yù)測。原因如下:訓(xùn)練集中不包括銷售額為 0 的記錄,但是測試集包含所有的商店/商品組合(不管商店此前是否銷售該商品)。最后,作者假設(shè)這些不可見的組合只是零銷售額數(shù)據(jù),用 0 來進(jìn)行替換。
準(zhǔn)確度:因為這個實驗是嚴(yán)格按照比賽規(guī)則進(jìn)行的,作者嘗試了所有可能用來提高預(yù)測準(zhǔn)確度的方法。
可選方案
下面的這些架構(gòu)基于神經(jīng)網(wǎng)絡(luò),但在這個比賽中,最終結(jié)果不如作者最后使用的 WaveNet 模型,但他們相信這種架構(gòu)可以提供一種完全不同的方法來解決問題,產(chǎn)生出一些有趣的洞見,甚至在其他比賽中超越 WaveNet。
循環(huán)神經(jīng)網(wǎng)絡(luò)
循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)可以將當(dāng)前節(jié)點的輸出作為下一個節(jié)點的輸入,可以如下描述:相較于其他深度學(xué)習(xí)算法,RNN 已經(jīng)被廣泛用于預(yù)測時間序列問題,并被定位為預(yù)測此類數(shù)據(jù)數(shù)組問題的最先進(jìn)的方法。
這些網(wǎng)絡(luò)的效率可以通過重復(fù)的連接來解釋,這些連接允許網(wǎng)絡(luò)訪問以前的時間序列值的整個歷史。
可以將 RNN 看成同一個網(wǎng)絡(luò)的多個副本,每個副本會傳遞消息給后續(xù)副本。由于自身屬性,RNN 與序列和列表密切相關(guān)。在過去的幾年中,將 RNN 應(yīng)用于時間序列預(yù)測問題上已經(jīng)取得了驚人的成果。
其中具有象征意義的是 LSTMs,這是一種非常特殊的 RNN,在許多任務(wù)上,它比標(biāo)準(zhǔn) RNN 的表現(xiàn)要好得多。
GRU 架構(gòu)也可以作為解決當(dāng)前問題的方法,它們與 LSTMs 相似,結(jié)構(gòu)更簡。
作者的方法
基于 WaveNet CNN 網(wǎng)絡(luò)并做了一些額外的擴(kuò)展和修改。
近年來,深度學(xué)習(xí)技術(shù)的發(fā)展促使研究人員探索出各種時間序列預(yù)測方法,其中就有 WaveNet。WaveNet 是一個生成模型,這意味著模型可以針對一些條件輸入生成實值數(shù)據(jù)(real-valued data)序列。
該架構(gòu)背后的核心思想是空洞因果卷積(dilated causal convolutions)。由于沒有循環(huán)連接和跳躍步驟,空洞卷積訓(xùn)練起來比 RNN 要快。
目前,因果卷積存在的問題之一是:為了增大感受野,需要用到多層卷積或者或很多大濾波器。
空洞卷積不存在這些問題,它使用上采樣濾波器代替特征映射(feature maps)。換句話說,空洞卷積允許只增加核的視野在層間維持特征映射的大小,另外,可以用更少的參數(shù)捕獲輸入的全局視圖。
為了能夠產(chǎn)生 16 天的預(yù)測值,作者對模型進(jìn)行了修改。因為訓(xùn)練使用的是下一步預(yù)測值,錯誤會持續(xù)累積。為了解決這個問題,他們使用 sequence to sequence 方法,編碼器和解碼器不會共享參數(shù)。解碼器將會在產(chǎn)生長序列時處理累積的噪聲。這里還用了亞當(dāng)優(yōu)化器更新網(wǎng)絡(luò)權(quán)重。數(shù)據(jù)是通過小批次產(chǎn)生的,隨機(jī)采樣 128 個序列。
由于整個數(shù)據(jù)集大約包含 17 萬序列 x 365 天,所以在每次訓(xùn)練迭代中都能向模型輸入不同的數(shù)據(jù)。考慮到這一點,該模型能很好地處理過擬合問題。
在訓(xùn)練過程中,學(xué)習(xí)率衰減系數(shù)設(shè)置為 0.0005。作者將過去 16 天的訓(xùn)練數(shù)據(jù)做成一個集合,并將其用于驗證。銷售量的變化和促銷信息可以用來生成的季度和年度模型。
在最后若干個上千或上萬的的小批次中,模型會稍微出現(xiàn)過擬合,所以結(jié)果會有一點波動。
為了解決過擬合問題,平滑短期波動,著重于長期的動態(tài)性和周期性趨勢,作者用到移動平均法(Moving average)。在 5000 次小批量迭代之后,模型開始預(yù)測,之后每過 2000 次迭代產(chǎn)生預(yù)測。在特定的迭代之后,如下圖所示,5 個模型的平均性能優(yōu)于單個模型。為了將模型準(zhǔn)確性進(jìn)一步提高,最終,作者使用指數(shù)移動平均法(exponential moving average),利用局部交叉驗證(local cross-validation)計算出平滑因子(smooth factor)。
該模型有很好的捕獲時間序列數(shù)據(jù)規(guī)律的能力,因此很多特性都沒有被使用。其中一些是單位產(chǎn)品銷售額和促銷信息。
總結(jié)
企業(yè)面臨一個明顯的問題——市場是不可預(yù)測的。任何銷售預(yù)測,無論你的分析條件多么嚴(yán)謹(jǐn),都可能是完全錯誤的。如果市場狀況保持相對不變,一種可靠的預(yù)測方法就是使用歷史數(shù)據(jù)。作者的經(jīng)驗表明,卷積神經(jīng)網(wǎng)絡(luò)非常善于處理歷史數(shù)據(jù),捕捉季節(jié)性的趨勢、周期和無規(guī)律的趨勢,如下圖所示。
他們描述了一種使用 CNN WaveNet 的方法,這是一個 sequence to sequence 架構(gòu),在銷售預(yù)測方面,它是解決時間序列預(yù)測問題的有效方法(如下圖)。
在未來,需要對層數(shù)更多的 CNN 進(jìn)行更深入的研究,以完成更復(fù)雜的任務(wù)。為了訓(xùn)練更深的網(wǎng)絡(luò),需要大量的數(shù)據(jù)。在未來,對不同類型和領(lǐng)域的數(shù)據(jù)進(jìn)行分析可能是另一個有趣的方向。此外,將不同技術(shù)融合起來也能獲得相當(dāng)?shù)臏?zhǔn)確性。
比賽地址:https://www.kaggle.com/c/favorita-grocery-sales-forecasting
論文地址:https://arxiv.org/pdf/1803.04037.pdf
雷鋒網(wǎng) AI 研習(xí)社編譯整理。
雷峰網(wǎng)版權(quán)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。