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

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

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

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

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

左右滑動(dòng)查看更多

01

02

03

04

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



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

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