基于ARIMA、SVM、隨機(jī)森林銷售的時間序列預(yù)測|附代碼數(shù)據(jù)
原文鏈接??http://tecdat.cn/?p=1130
最近我們被客戶要求撰寫關(guān)于銷售時間序列預(yù)測的研究報(bào)告,包括一些圖形和統(tǒng)計(jì)輸出。
如今DT(數(shù)據(jù)技術(shù))時代,數(shù)據(jù)變得越來越重要,其核心應(yīng)用“預(yù)測”也成為互聯(lián)網(wǎng)行業(yè)以及產(chǎn)業(yè)變革的重要力量。
對于零售行業(yè)來說,預(yù)測幾乎是商業(yè)智能(BI)研究的終極問題,單純從機(jī)器學(xué)習(xí)的角度來說,做到精準(zhǔn)預(yù)測很容易,但是結(jié)合業(yè)務(wù)提高企業(yè)利潤卻很難。預(yù)測精確性是核心痛點(diǎn)。
?
業(yè)務(wù)挑戰(zhàn)
扎對?,將產(chǎn)品粗略分為:基本款和時裝。?對于基本款,每年都沒什么大變化,國際流行的影響也不大,那么可以進(jìn)行長計(jì)劃生產(chǎn)。對于時裝,決定潮流走向的決策權(quán)不在某個區(qū)域,一個地方的買手們也沒有成長到可以準(zhǔn)確預(yù)判國際流行趨勢,所以需要結(jié)合不同區(qū)域的各種因素,進(jìn)行預(yù)測。對應(yīng)的,在新貨構(gòu)成中,銷量預(yù)測策略為:基本款計(jì)劃生產(chǎn),時尚款機(jī)動調(diào)整。

解決方案
任務(wù)/目標(biāo)
根據(jù)服裝零售業(yè)務(wù)營銷要求,運(yùn)用多種數(shù)據(jù)源分析實(shí)現(xiàn)精準(zhǔn)銷量預(yù)測。
數(shù)據(jù)源準(zhǔn)備
沙子進(jìn)來沙子出,金子進(jìn)來金子出。無數(shù)據(jù)或數(shù)據(jù)質(zhì)量低,會影響模型預(yù)測效果。在建立的一個合理的模型之前,對數(shù)據(jù)要進(jìn)行收集,搜集除已有銷量數(shù)據(jù)之外的額外信息(比如天氣,地點(diǎn),節(jié)假日信息等),再在搜集的數(shù)據(jù)基礎(chǔ)上進(jìn)行預(yù)處理。
有了數(shù)據(jù),但是有一部分特征是算法不能直接處理的,還有一部分?jǐn)?shù)據(jù)是算法不能直接利用的。
特征轉(zhuǎn)換
把不能處理的特征做一些轉(zhuǎn)換,處理成算法容易處理的干凈特征舉例如下:
銷售日期。就時間屬性本身來說,對模型來說不具有任何意義,需要把日期轉(zhuǎn)變成到年份,月份,日,周偽變量。
產(chǎn)品特征。從產(chǎn)品信息表里面可以得到款式,顏色,質(zhì)地以及這款產(chǎn)品是否是限量版等。然而并沒有這些變量。這就需要我們從產(chǎn)品名字抽取這款產(chǎn)品的上述特征。
以上例舉的只是部分特征。
構(gòu)造
以上說明了如何抽取相關(guān)特征,我們大致有如下訓(xùn)練樣本(只列舉部分特征)。

劃分訓(xùn)練集和測試集
考慮到最終模型會預(yù)測將來的某時間段的銷量,為了更真實(shí)的測試模型效果,以時間來切分訓(xùn)練集和測試集。具體做法如下:假設(shè)我們有2014-02-012017-06- 17的銷量相關(guān)數(shù)據(jù)。以2014-02-012016-03-19的銷量數(shù)據(jù)作為訓(xùn)練,2016-03-20~2017-06-17的數(shù)據(jù)作為測試。
建模
ARIMA,?一般應(yīng)用在股票和電商銷量領(lǐng)域
ARIMA模型是指將非平穩(wěn)時間序列轉(zhuǎn)化為平穩(wěn)時間序列,然后將結(jié)果變量做自回歸(AR)和自平移(MA)。
隨機(jī)森林
用隨機(jī)的方式建立一個森林,森林由很多決策樹組成,隨機(jī)森林的每一棵決策樹之間是沒有關(guān)聯(lián)的。在得到森林之后,當(dāng)有一個新的輸入樣本進(jìn)入的時候,就讓森林中的每一棵決策樹分別進(jìn)行一下判斷,看看這個樣本應(yīng)該屬于哪一類(對于分類算法),然后看看哪一類被選擇最多,就預(yù)測這個樣本為那一類。
支持向量回歸(SVR)
SVR最本質(zhì)與SVM類似,都有一個緣,只不過SVM的保證金是把兩種類型分開,而SVR的保證金是指里面的數(shù)據(jù)會不會對回歸有幫助。
模型優(yōu)化
1.上線之前的優(yōu)化:特征提取,樣本抽樣,參數(shù)調(diào)參。

2.上線之后的迭代,根據(jù)實(shí)際的A / B測試和業(yè)務(wù)人員的建議改進(jìn)模型

點(diǎn)擊標(biāo)題查閱往期內(nèi)容

數(shù)據(jù)分享|R語言分析上??諝赓|(zhì)量指數(shù)數(shù)據(jù):kmean聚類、層次聚類、時間序列分析:arima模型、指數(shù)平滑法

左右滑動查看更多

01

02

03

04

從上圖可以看出,在此案例中,支持向量機(jī)和隨機(jī)森林算法模型的預(yù)測誤差最小,運(yùn)用3種方法預(yù)測某商品的銷量,其可視化圖形如下:



可以看出,銷量的預(yù)測值的趨勢已經(jīng)基本與真實(shí)銷量趨勢保持一致,但是在預(yù)測期較長的區(qū)間段,其預(yù)測值之間的差別較大。
評估效果不能只看銷量,要綜合考慮,需要參考業(yè)務(wù)對接,預(yù)測精度,模型可解釋性和產(chǎn)業(yè)鏈整體能力等因素綜合考慮;不能簡單作為企業(yè)利潤增加的唯一標(biāo)準(zhǔn)我們的經(jīng)驗(yàn)是,預(yù)測結(jié)果僅作為參考一個權(quán)重值,還需要專家意見,按照一定的權(quán)重來計(jì)算。
展望
除了以上列舉的一些方法,我們已經(jīng)在嘗試更復(fù)雜的銷售預(yù)測模型,如HMM,深度學(xué)習(xí)(Long Short-Term Memory網(wǎng)絡(luò),卷積神經(jīng)網(wǎng)絡(luò)(CNN))等;同時需要考慮到模型的可解釋性,可落地性和可擴(kuò)展性,避免“黑箱”預(yù)測?;還在嘗試采用混合的機(jī)器學(xué)習(xí)模型,比如GLM + SVR,ARIMA + NNET等。
銷售預(yù)測幾乎是商業(yè)智能研究的終極問題,即便通過機(jī)器學(xué)習(xí)算法模型能夠提高測試集的預(yù)測精度,但是對于未來數(shù)據(jù)集的預(yù)測,想做到精準(zhǔn)預(yù)測以使企業(yè)利潤最大化,還需要考慮機(jī)器學(xué)習(xí)模型之外的企業(yè)本身因素。比如,企業(yè)的整體供應(yīng)鏈能力等,如何將企業(yè)因素加入到機(jī)器學(xué)習(xí)模型之中,是未來預(yù)銷售預(yù)測的一個難點(diǎn)與方向。因此,要想解決銷售預(yù)測終極問題還有一段路要走。

點(diǎn)擊文末?“閱讀原文”
獲取全文完整資料。
本文選自《機(jī)器學(xué)習(xí)助推快時尚精準(zhǔn)銷售時間序列預(yù)測》。
點(diǎn)擊標(biāo)題查閱往期內(nèi)容
Python中利用長短期記憶模型LSTM進(jìn)行時間序列預(yù)測分析 - 預(yù)測電力負(fù)荷數(shù)據(jù)
RNN循環(huán)神經(jīng)網(wǎng)絡(luò) 、LSTM長短期記憶網(wǎng)絡(luò)實(shí)現(xiàn)時間序列長期利率預(yù)測
結(jié)合新冠疫情COVID-19股票價(jià)格預(yù)測:ARIMA,KNN和神經(jīng)網(wǎng)絡(luò)時間序列分析
深度學(xué)習(xí):Keras使用神經(jīng)網(wǎng)絡(luò)進(jìn)行簡單文本分類分析新聞組數(shù)據(jù)
用PyTorch機(jī)器學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)分類預(yù)測銀行客戶流失模型
PYTHON用LSTM長短期記憶神經(jīng)網(wǎng)絡(luò)的參數(shù)優(yōu)化方法預(yù)測時間序列洗發(fā)水銷售數(shù)據(jù)
Python用Keras神經(jīng)網(wǎng)絡(luò)序列模型回歸擬合預(yù)測、準(zhǔn)確度檢查和結(jié)果可視化
Python用LSTM長短期記憶神經(jīng)網(wǎng)絡(luò)對不穩(wěn)定降雨量時間序列進(jìn)行預(yù)測分析
R語言中的神經(jīng)網(wǎng)絡(luò)預(yù)測時間序列:多層感知器(MLP)和極限學(xué)習(xí)機(jī)(ELM)數(shù)據(jù)分析報(bào)告
R語言深度學(xué)習(xí):用keras神經(jīng)網(wǎng)絡(luò)回歸模型預(yù)測時間序列數(shù)據(jù)
Matlab用深度學(xué)習(xí)長短期記憶(LSTM)神經(jīng)網(wǎng)絡(luò)對文本數(shù)據(jù)進(jìn)行分類
R語言KERAS深度學(xué)習(xí)CNN卷積神經(jīng)網(wǎng)絡(luò)分類識別手寫數(shù)字圖像數(shù)據(jù)(MNIST)
MATLAB中用BP神經(jīng)網(wǎng)絡(luò)預(yù)測人體脂肪百分比數(shù)據(jù)
Python中用PyTorch機(jī)器學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)分類預(yù)測銀行客戶流失模型
R語言實(shí)現(xiàn)CNN(卷積神經(jīng)網(wǎng)絡(luò))模型進(jìn)行回歸數(shù)據(jù)分析
SAS使用鳶尾花(iris)數(shù)據(jù)集訓(xùn)練人工神經(jīng)網(wǎng)絡(luò)(ANN)模型
【視頻】R語言實(shí)現(xiàn)CNN(卷積神經(jīng)網(wǎng)絡(luò))模型進(jìn)行回歸數(shù)據(jù)分析
Python使用神經(jīng)網(wǎng)絡(luò)進(jìn)行簡單文本分類
R語言用神經(jīng)網(wǎng)絡(luò)改進(jìn)Nelson-Siegel模型擬合收益率曲線分析
R語言基于遞歸神經(jīng)網(wǎng)絡(luò)RNN的溫度時間序列預(yù)測
R語言神經(jīng)網(wǎng)絡(luò)模型預(yù)測車輛數(shù)量時間序列
R語言中的BP神經(jīng)網(wǎng)絡(luò)模型分析學(xué)生成績
matlab使用長短期記憶(LSTM)神經(jīng)網(wǎng)絡(luò)對序列數(shù)據(jù)進(jìn)行分類
R語言實(shí)現(xiàn)擬合神經(jīng)網(wǎng)絡(luò)預(yù)測和結(jié)果可視化
用R語言實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò)預(yù)測股票實(shí)例
使用PYTHON中KERAS的LSTM遞歸神經(jīng)網(wǎng)絡(luò)進(jìn)行時間序列預(yù)測
python用于NLP的seq2seq模型實(shí)例:用Keras實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò)機(jī)器翻譯
用于NLP的Python:使用Keras的多標(biāo)簽文本LSTM神經(jīng)網(wǎng)絡(luò)分類