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