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