【基于Prophet-LSTM模型的W企業(yè)供應(yīng)鏈需求預(yù)測探究19000字(論文)】_第1頁
【基于Prophet-LSTM模型的W企業(yè)供應(yīng)鏈需求預(yù)測探究19000字(論文)】_第2頁
【基于Prophet-LSTM模型的W企業(yè)供應(yīng)鏈需求預(yù)測探究19000字(論文)】_第3頁
【基于Prophet-LSTM模型的W企業(yè)供應(yīng)鏈需求預(yù)測探究19000字(論文)】_第4頁
【基于Prophet-LSTM模型的W企業(yè)供應(yīng)鏈需求預(yù)測探究19000字(論文)】_第5頁
已閱讀5頁,還剩41頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

基于Prophet-LSTM模型的W企業(yè)供應(yīng)鏈需求預(yù)測研究1 緒論 61.1研究背景和意義 61.2國內(nèi)外研究現(xiàn)狀 71.3研究內(nèi)容與方法 82 理論與方法 112.1LSTM模型 112.2Prophet模型 152.3Prophet和LSTM模型的特點 183 W企業(yè)現(xiàn)有預(yù)測方法與問題 203.1現(xiàn)有預(yù)測模式與方法 203.2存在的問題 234 基于Prophet-LSTM模型的供應(yīng)鏈需求分析與預(yù)測 244.1數(shù)據(jù)準(zhǔn)備 244.2探索性數(shù)據(jù)分析(EDA) 244.3設(shè)計組合預(yù)測模型 304.4基于LSTM模型的季度需求預(yù)測 314.5基于Prophet模型的年度預(yù)測 394.6Prophet-LSTM模型在W企業(yè)的應(yīng)用前景 435 結(jié)論 45參考文獻 46附錄 47第PAGE緒論本章主要介紹了輪胎制造行業(yè)的總體發(fā)展情況,并指出現(xiàn)階段其面臨的困境與基于供應(yīng)鏈角度的管理思想能夠帶來的新的突破角度與方向;同時,對國內(nèi)外有關(guān)的需求預(yù)測方面的研究進行了對比與分析,并總結(jié)出這些研究的主要成果與在當(dāng)前時代背景下運用的不足之處;此外本章對本文的研究具體模型方法與研究思路進行了簡單概括與梳理。研究背景和意義研究背景W企業(yè)是世界上最大的全渠道零售商之一。2020年收入,同比增長34%,2020年每月平均用戶數(shù)同比增長19%,活躍買家的核心市場收益增加了66%同比增長25%,第三季度同比增長25%。由于商家發(fā)貨速度快,物流收入同比增長193%。以上統(tǒng)計數(shù)據(jù)中可以看出,全渠道零售行業(yè)中,零售電商行業(yè)整體經(jīng)濟的良好發(fā)展形勢。W企業(yè)為代表的零售電商企業(yè),可靠的需求預(yù)測是零售業(yè)務(wù)健康不可或缺的組成部分,因為可以減少不確定性。通過準(zhǔn)確計算在任何給定時間將售出多少個物品,零售商可以相應(yīng)地訂購,分配和補充這些物品。全渠道雜貨零售有多種形式。可以在配送中心,黑暗商店或常規(guī)實體商店中挑選在線訂單,以交付給客戶。零售商甚至利用第三方快遞公司來處理貨物的提取并運送到客戶的家中,以減少擁有卡車的成本。執(zhí)行全渠道策略的零售商必須在每個渠道,即商店內(nèi)在線或通過單擊并收集等混合渠道提供良好的客戶體驗。從產(chǎn)品可用性到實現(xiàn)速度,客戶體驗在很大程度上取決于零售商的供應(yīng)鏈效率和可見性。在線訂單傾向于遵循與實體銷售不同的銷售模式。造成這種差異的原因很多,例如,與在實體店購物相比,在線進行價格比較要容易得多。假期是變化的另一個例子。零售商通常會看到提前下達在線訂單,隨后一波拖延癥患者涌向?qū)嶓w店以進行最后一刻的購買。當(dāng)然,這種模式可能會隨著消費者期望更快的在線履行而改變,即使在繁忙的假期也是如此。需求預(yù)測可促進關(guān)鍵業(yè)務(wù)活動,例如預(yù)算,財務(wù)計劃,銷售和營銷計劃,原材料計劃,生產(chǎn)計劃,風(fēng)險評估以及制定緩解計劃。以下概述了需求預(yù)測對供應(yīng)鏈管理的影響:基于以上背景,本文為以W為代表的零售型企業(yè)的供應(yīng)鏈需求預(yù)測提出了科學(xué)的模型設(shè)計,從而優(yōu)化實際企業(yè)的供應(yīng)鏈環(huán)節(jié)。研究意義本文以W企業(yè)的實際預(yù)測方式與預(yù)測數(shù)據(jù)為例,既理論研究上符合數(shù)據(jù)特征,又能在符合預(yù)測理論的條件上達到很高精度,同時針對企業(yè)實際數(shù)據(jù),給出EDA可視化方案,因此具有理論研究和實際應(yīng)用價值的意義。本文擬在機器學(xué)習(xí)等理論基礎(chǔ)上,對W企業(yè)的銷售量進行需求預(yù)測,由于機器學(xué)習(xí)不僅可以提高需求預(yù)測的準(zhǔn)確性,還可以使大量計劃人員的工作自動化,并且可以處理大量數(shù)據(jù)集,這遠遠超出任何人類計劃人員的能力。為了生成準(zhǔn)確的需求預(yù)測,系統(tǒng)必須能夠處理可能影響需求的各種變量上的大量數(shù)據(jù)。隨著大規(guī)模數(shù)據(jù)處理和內(nèi)存計算的進步,現(xiàn)代需求計劃系統(tǒng)可以在一分鐘的時間內(nèi)進行數(shù)百萬次的預(yù)測計算,并且比以往任何時候都可以考慮更多的變量。國內(nèi)外研究現(xiàn)狀Web2.0的出現(xiàn),以及工業(yè)4.0、物聯(lián)網(wǎng)(IoT)和其他數(shù)字技術(shù)的出現(xiàn),使得大數(shù)據(jù)及其分析受到了廣泛關(guān)注。這一研究課題在全球范圍內(nèi)越來越受歡迎,既能推動性能改進,又能從新的見解中獲益。目前企業(yè)來自每天的數(shù)據(jù)巨大,并且以各種形式存在。如果分類不當(dāng)或來源不當(dāng),最終可能會浪費寶貴的時間和資源。為了在大數(shù)據(jù)上取得成功,重要的是,公司必須具有在各種可用數(shù)據(jù)源之間進行篩選并相應(yīng)地對其可用性和相關(guān)性進行分類的專業(yè)知識。最近在大數(shù)據(jù)分析領(lǐng)域的研究提出了以數(shù)據(jù)驅(qū)動的供應(yīng)鏈決策的工具和技術(shù)。實時分析和解釋結(jié)果可以幫助企業(yè)做出更好、更快的決策,以滿足客戶的需求。它還將幫助機構(gòu)通過降低成本和減輕風(fēng)險來改善其供應(yīng)鏈的設(shè)計和管理。[[][]KannanGovindan,T.C.E.Cheng,NishikantMishra,NageshShukla.Bigdataanalyticsandapplicationforlogisticsandsupplychainmanagement[J].TransportationResearchPartE,2018,114.最近,各種研究表明了在物流和供應(yīng)鏈管理中使用大數(shù)據(jù)方法的好處。Tan等人(2015)[[]WantaoYu,RobertoChavez,MarkA.Jacobs,MengyingFeng.Data-drivensupplychaincapabilitiesandperformance:Aresource-basedview[J].TransportationResearchPartE,2018,114.]提出基于演繹圖論的大數(shù)據(jù)分析基礎(chǔ)設(shè)施,提升供應(yīng)鏈創(chuàng)新能力。Cakici等人(2011)[[]JieXu,EdwardHuang,Chun-HungChen,LooHayLee.SimulationOptimization:AReviewandExplorationintheNewEraofCloudComputingandBigData[J].Asia-PacificJournalofOperationalResearch,2015,32(3).]使用RFID數(shù)據(jù)重新設(shè)計最佳庫存政策。Mishra和Singh(2016)[[]RayY.Zhong,GeorgeQ.Huang,ShulinLan,Q.Y.Dai,XuChen,T.Zhang.AbigdataapproachforlogisticstrajectorydiscoveryfromRFID-enabledproductiondata[J].InternationalJournalofProductionEconomics,2015,165.][]WantaoYu,RobertoChavez,MarkA.Jacobs,MengyingFeng.Data-drivensupplychaincapabilitiesandperformance:Aresource-basedview[J].TransportationResearchPartE,2018,114.[]JieXu,EdwardHuang,Chun-HungChen,LooHayLee.SimulationOptimization:AReviewandExplorationintheNewEraofCloudComputingandBigData[J].Asia-PacificJournalofOperationalResearch,2015,32(3).[]RayY.Zhong,GeorgeQ.Huang,ShulinLan,Q.Y.Dai,XuChen,T.Zhang.AbigdataapproachforlogisticstrajectorydiscoveryfromRFID-enabledproductiondata[J].InternationalJournalofProductionEconomics,2015,165.[]JieXu,EdwardHuang,Chun-HungChen,LooHayLee.SimulationOptimization:AReviewandExplorationintheNewEraofCloudComputingandBigData[J].Asia-PacificJournalofOperationalResearch,2015,32(3).用于時間序列的需求預(yù)測有著很多統(tǒng)計模型的方法如自回歸(AR)模型、移動平均(MA)模型、自動回歸移動平均(ARMA)模型和差分自回歸綜合移動平均(ARIMA)模型被廣泛應(yīng)用于各個領(lǐng)域的預(yù)測擬合,[[][]GilbertK.AnARIMAsupplychainmodel[J].ManagementScience,2005,51(2):305–310Prophet[[]TaylorSJ,LethamB.Forecastingatscale[J].TheAmericanStatistician,2018,72(1):37-45.]模型是Facebook的CoreDataScience團隊在2017年公布的開源算法。[]TaylorSJ,LethamB.Forecastingatscale[J].TheAmericanStatistician,2018,72(1):37-45.機器學(xué)習(xí)算法可以快速分析龐大的規(guī)模數(shù)據(jù)集。機器學(xué)習(xí)驅(qū)動的預(yù)測可以包含比任何規(guī)劃團隊都可以人工管理的更多有關(guān)需求影響因素的數(shù)據(jù)。該數(shù)據(jù)包括周期性需求模式,例如季節(jié)性和工作日變化;天氣變化或競爭對手活動等外部影響;以及企業(yè)商業(yè)決策,包括促銷活動。周化等(2016)[[]周化,丁度業(yè),黎毅麟,吳夢潔.基于BP神經(jīng)網(wǎng)絡(luò)模型的庫存需求預(yù)測應(yīng)用研究[J].信息技術(shù),2016(11):38-41.][]周化,丁度業(yè),黎毅麟,吳夢潔.基于BP神經(jīng)網(wǎng)絡(luò)模型的庫存需求預(yù)測應(yīng)用研究[J].信息技術(shù),2016(11):38-41.而戴超杰和劉媛華[[]戴超杰,劉媛華.基于改進的BP神經(jīng)網(wǎng)絡(luò)庫存預(yù)測模型研究[J].物流科技,2015,38(11):26-30.]采用主成分分析法預(yù)處理輸入數(shù)據(jù)的BPneuralnetwork解決傳統(tǒng)庫存管理面臨的問題。楊靜雅和孫林夫(2015)[[]楊靜雅,孫林夫.基于QPSO-SVR的售后配件庫存需求預(yù)測[J].計算機工程與設(shè)計,2015,36(09):2539-2543+2571.]對售后配件庫存需求量的準(zhǔn)確預(yù)測采用量子粒子群算法和后優(yōu)化的SVR參數(shù)進行試驗。萬鵬和馬蓮欣(2018)[[]萬鵬,馬蓮欣.關(guān)于庫存易變質(zhì)物品供應(yīng)周期預(yù)測仿真[J].計算機仿真,2018,35(11):462-465.]建立了一種組合模型是先用ARIMA對數(shù)據(jù)預(yù)處理之后將預(yù)測值剩余影響因素添加到回顧模型中預(yù)測。KARIM(2017)[[]KARIM,FAZLE,MAJUMDAR,SOMSHUBRA,DARABI,HOUSHANG,etal.MultivariateLSTM-FCNsfortimeseriesclassification[J].NeuralNetworks:TheOfficialJournaloftheInternationalNeuralNetworkSociety,2019,116237-245.][]戴超杰,劉媛華.基于改進的BP神經(jīng)網(wǎng)絡(luò)庫存預(yù)測模型研究[J].物流科技,2015,38(11):26-30.[]楊靜雅,孫林夫.基于QPSO-SVR的售后配件庫存需求預(yù)測[J].計算機工程與設(shè)計,2015,36(09):2539-2543+2571.[]萬鵬,馬蓮欣.關(guān)于庫存易變質(zhì)物品供應(yīng)周期預(yù)測仿真[J].計算機仿真,2018,35(11):462-465.[]KARIM,FAZLE,MAJUMDAR,SOMSHUBRA,DARABI,HOUSHANG,etal.MultivariateLSTM-FCNsfortimeseriesclassification[J].NeuralNetworks:TheOfficialJournaloftheInternationalNeuralNetworkSociety,2019,116237-245.雖然現(xiàn)在的時間序列模型需求預(yù)測的研究越來越多,但是每種組合的模式和方法需要和實際情況結(jié)合起來運用,只有在企業(yè)實際需求的基礎(chǔ)上選擇適合的模型根據(jù)進行需求預(yù)測,并根據(jù)預(yù)測結(jié)果提供了寶貴的見解和指導(dǎo)企業(yè)的管理決策,才具有現(xiàn)實應(yīng)用的意義。研究內(nèi)容與方法研究思路本文從W企業(yè)的實際預(yù)測模式出發(fā),分析出盡管一些計劃人員仍依賴表格和手動計算,但這種高性能的統(tǒng)計分析最好由專門用于處理龐大的零售規(guī)模數(shù)據(jù)集的軟件來執(zhí)行,預(yù)測結(jié)果不夠可靠;總結(jié)出問題所在后,通過EDA可視化對W企業(yè)實際數(shù)據(jù)特征的初步判斷,選擇通過組合需求預(yù)測模型中各個預(yù)測模型的優(yōu)勢進行建模,同時檢驗?zāi)P皖A(yù)測的精度,與公司現(xiàn)行預(yù)測方法的結(jié)果進行比較;最后通過改進公司需求預(yù)測方法來實現(xiàn)W企業(yè)供應(yīng)鏈需求預(yù)測上的優(yōu)化與工作效率上的提升。研究內(nèi)容本文的實驗環(huán)境為:Anaconda3的Jupyter-Lab,JupyterLab是ProjectJupyter基于Web的用戶界面的下一代。從JupyterLab0.32(2018年2月)開始,JupyterLab的發(fā)行版適合Jupyter新手和具有ClassicNotebook界面經(jīng)驗的用戶日常使用。本文通過分析公司需求預(yù)測模式與方法,說明企業(yè)現(xiàn)行預(yù)測形式逐漸不符合市場需求;并在通過EDA對企業(yè)實際數(shù)據(jù)進行數(shù)據(jù)可視化的基礎(chǔ)上,分析出數(shù)據(jù)的不穩(wěn)定性,然后根據(jù)企業(yè)的實際需求,即短期預(yù)測數(shù)據(jù)與長期預(yù)測數(shù)據(jù)的需求,對預(yù)處理后的數(shù)據(jù)進行建模,根據(jù)不同模型的優(yōu)點,建立Prophet-LSTM模型,運用Prophet模型進行短期趨勢預(yù)測,LSTM模型進行長期需求預(yù)測,然后通過模型預(yù)測結(jié)果,可視化繪制預(yù)測結(jié)果圖;最后,通過模型結(jié)果優(yōu)化W企業(yè)供應(yīng)鏈的需求預(yù)測能力,說明Prophet-LSTM模型的高精度適用性。以下是本文內(nèi)容架構(gòu)介紹:第一章介紹了全渠道零售W企業(yè)背景,說明了全渠道策略的零售商基于供應(yīng)鏈角度的突破思路,說明了供應(yīng)鏈需求預(yù)測對全渠道零售企業(yè)的重要意義。其次通過文獻查閱、綜述分析國內(nèi)外學(xué)者在此方面的研究,結(jié)合企業(yè)實際,提出了本文的研究思路與方法。第二章簡對本文主要的兩個預(yù)測模型Prophet模型和LSTM模型進行了簡要介紹,并著重說明了兩者之間在需求預(yù)測過程中的各自優(yōu)勢和缺陷。第三章詳細介紹了W公司的需求預(yù)測現(xiàn)狀和其供應(yīng)鏈的組成,并詳細分析了W企業(yè)的現(xiàn)有預(yù)測模式與預(yù)測方法,總結(jié)其存在問題的地方和可以改進的方向。第四章對W企業(yè)提供的銷售數(shù)據(jù)進行EDA數(shù)據(jù)分析,可以得出數(shù)據(jù)呈現(xiàn)出的規(guī)律與特點,在此基礎(chǔ)上建立了組合需求預(yù)測模型;并通過在Anaconda中實現(xiàn)代碼進行有效的實驗,通過運行的結(jié)果圖,說明Prophet-LSTM模型在精度上的優(yōu)越性;最后基于Prophet-LSTM模型,對W企業(yè)現(xiàn)存的供應(yīng)鏈需求預(yù)測模式進行優(yōu)化。第五章對全文的實驗研究和需求預(yù)測進行了簡要概括,并分析說明了組合的適用性和實用性,對企業(yè)的預(yù)測能力發(fā)展以及供應(yīng)鏈需求問題提出看法與建議;最后,因文中篇幅有限,歸納了未涉及到的問題,并設(shè)想將Prophet-LSTM模型應(yīng)用于具有更多特征的數(shù)據(jù)預(yù)測。其中本文的核心內(nèi)容可以由下面的技術(shù)路線1.1圖所示:Figure1.SEQFigure\*ARABIC\s11論文技術(shù)路線圖

理論與方法LSTM模型改進的循環(huán)神經(jīng)網(wǎng)絡(luò)(LSTM,Long?S?ortTermMemory)是建立在循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN,RecurrentNeuralNetwork)基礎(chǔ)之上的。下面是RNN神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)示意圖:FigureSTYLEREF1\s2.SEQFigure\*ARABIC\s11RNN網(wǎng)絡(luò)結(jié)構(gòu)tableSTYLEREF1\s2.SEQtable\*ARABIC\s11RNN參數(shù)符號代表意義x向量,即輸入層的值s向量,即隱藏層的值o向量,即輸出層的值U輸入層到隱藏層的權(quán)重矩陣V隱藏層到輸出層的權(quán)重矩陣W隱藏層上一次的值作為這次輸入的權(quán)重矩陣這個網(wǎng)絡(luò)在t時刻接收到輸入xt之后,隱藏層的值是st,輸出值是o(2.1)s(2.2)RNN輸出層即全連接層由公式(2.1)表示,與其節(jié)點相連接的是隱藏層的節(jié)點,RNN隱藏層即循環(huán)層由公式(2.2)表示,兩者比較可以看出隱藏層有權(quán)重矩陣W。其中g(shù)和f為激活函數(shù),一般選取非線性的函數(shù),例如tanh或ReLU。反復(fù)把式(2.1)帶入到式(2.2):o=Vf=Vf(2.3)=Vf=Vf從式(2.3)可以看出,循環(huán)神經(jīng)網(wǎng)絡(luò)的輸出值ot,是受前面歷次輸入值xt、xt?1、xLSTM思路比較簡單。原始RNN的隱藏層只有一個狀態(tài),即h,它對于短期的輸入非常敏感。那么,再增加一個狀態(tài),即c,讓它來保存長期的狀態(tài),如下圖2.2所示:FigureSTYLEREF1\s2.SEQFigure\*ARABIC\s12LSTM思路新增加的狀態(tài)c,稱為單元狀態(tài)(cellstate)。把上圖按照時間維度展開:FigureSTYLEREF1\s2.SEQFigure\*ARABIC\s13LSTM展開示意圖tableSTYLEREF1\s2.SEQtable\*ARABIC\s12LSTM參數(shù)含義符號代表意義x當(dāng)前時刻輸入值?上一時刻輸出值c上一時刻的單元狀態(tài)?當(dāng)前時刻輸出值c當(dāng)前時刻的單元狀態(tài)為了LSTM的進行學(xué)習(xí)訓(xùn)練,其神經(jīng)元狀態(tài)是至關(guān)重要的,即長期狀態(tài)c。首先就是需要將LSTM的通過3個開關(guān)機制。(1)下圖中從左到右的第一個開關(guān),掌管控制持續(xù)保存上一個時刻的長期狀態(tài)c;(2)下圖中從下到上的第二個開關(guān),負責(zé)通過控制當(dāng)前時刻的即時狀態(tài)c輸入到長期狀態(tài)c;(3)在圖中的最后一個開關(guān),則通過控制并檢查長期狀態(tài)c是否可以作為當(dāng)前時刻的h來輸出。三個開關(guān)的基本作用如下圖2.4所示:FigureSTYLEREF1\s2.SEQFigure\*ARABIC\s14長期狀態(tài)c的控制(1)遺忘門FigureSTYLEREF1\s2.SEQFigure\*ARABIC\s15遺忘門計算遺忘門決定了上一時刻的單元狀態(tài)ct?1有多少保留到當(dāng)前時刻cf(2.4)W=W(2.5)如果輸入的維度是dx,隱藏層的維度是d?,單元狀態(tài)的維度是dc(通常dc=dtableSTYLEREF1\s2.SEQtable\*ARABIC\s13遺忘門參數(shù)含義符號代表意義W權(quán)重矩陣?增廣矩陣b偏置項σsigmoid函數(shù)(2)輸入門FigureSTYLEREF1\s2.SEQFigure\*ARABIC\s16輸入門計算1i(2.6)其次計算用于描述當(dāng)前輸入的單元狀態(tài)ctFigureSTYLEREF1\s2.SEQFigure\*ARABIC\s17輸入門計算2c(2.7)計算當(dāng)前時刻的單元狀態(tài)ct。它是由上一次的單元狀態(tài)ct?1按元素乘以遺忘門ft,再用當(dāng)前輸入的單元狀態(tài)cc(2.8)符號°表示按元素乘。(3)輸出門FigureSTYLEREF1\s2.SEQFigure\*ARABIC\s18輸出門計算o(2.9)LSTM最終的輸出,是由輸出門和單元狀態(tài)共同確定的:?(2.10)(4)時間卷積時間卷積網(wǎng)絡(luò)的輸入通常是時間序列信號。令Xt∈?F0位長度為F0時間步長為t的輸入特征向量,其中然后是L卷積層。每一層的卷積層都會應(yīng)用一組conv1D濾波器,用于獲取輸入信號在學(xué)習(xí)訓(xùn)練中的過程變化。用張量Wl∈?Fl×d×Fl?1和偏置bl∈RFl對一層的波濾器進行參數(shù)化,其中l(wèi)∈1,?L是層索引,d是過濾持續(xù)的時間。對于第l層,非標(biāo)準(zhǔn)化的激活函數(shù)Etl∈?Fl的第i個分量是來自前一層的傳入標(biāo)準(zhǔn)化的時間t時的激活函數(shù)矩陣El?1∈RE(2.11)Prophet模型實際上產(chǎn)品銷售的時間序列特征包括受節(jié)假日的影響,具有一定的周期性,比如周末效應(yīng)和季節(jié)效應(yīng)以及時間序列的趨勢增長率非固定。多種因素組成的數(shù)據(jù)特征需要被體現(xiàn)出來,所以按照要求處理,可以通過將時間序列分解為趨勢因素、循環(huán)因素和節(jié)假日影響因素以及隨機干擾因素,其中趨勢因素函數(shù)、循環(huán)因素函數(shù)和節(jié)假日因素函數(shù)都被認為是時間t的函數(shù):y(2.12)tableSTYLEREF1\s2.SEQtable\*ARABIC\s14Prophet預(yù)測公式的參數(shù)含義符號代表意義yt時刻的數(shù)據(jù),即預(yù)測值g趨勢函數(shù),可對時間序列值的非周期性變化進行建模s周期性/季節(jié)性變化?假期的影響ε誤差項,并假設(shè)其正太分布趨勢模型(1)非線性、飽和增長模型其邏輯的增長模型的最基本的形式如下所示:g(2.13)tableSTYLEREF1\s2.SEQtable\*ARABIC\s15非線性、飽和增長模型符號代表意義C承載力,表示yt能達到maximumvalue或minimumvaluek增長率,分段階梯函數(shù)m其他參數(shù)(2)分段線性模型通過明確定義允許增長率變化的變化點,即將C改為Ct后的趨勢變化納入增長模型。假設(shè)在時間sj,j=1?S處有S個變更點,定義利潤調(diào)整向量δ∈?S,δj是在sj發(fā)生的變化率。將所有時期的變化量加上期初的增量,就得到t時刻的增長率:k+j:t>sjδa(2.14)則第t期調(diào)整后的增長率計算公式如下:k(2.15)將式(2.15)簡寫為K+at?δγ(2.16)然后是分段邏輯增長模型:g(2.17)為了預(yù)測不會出現(xiàn)飽和增長的問題,分段的恒定增長率模型提供了一個簡化且常用的模型。這里的趨勢模型可以寫為:g(2.18)k是增長率,δ是增長調(diào)整量,γj季節(jié)效應(yīng)構(gòu)造一個周期函數(shù),這個周期函數(shù)的自變量是時間t,假設(shè)循環(huán)成分為sts(2.19)估計循環(huán)成分,需要2N個參數(shù):β=a1,b1,?,aN,bNTX(2.20)則季節(jié)循環(huán)成分可以寫為:s(2.21)其中β~Normal0,σ2節(jié)假日影響通過假設(shè)假日的影響是獨立的,對于每個假期i,設(shè)Di作為該假期的過去和未來日期的集合,對于具體某個時刻t,用一個指數(shù)函數(shù)來表示該時刻是否屬于某個節(jié)假日,并且給定一個參數(shù)ki來表示第Z(2.22)構(gòu)造的回歸矩陣:?(2.23)跟季節(jié)效應(yīng)類似,假設(shè)κ的先驗分布κ~Normal0,Prophet和LSTM模型的特點Prophet特征有大量可用的時間序列建模技術(shù)以及許多可用于預(yù)測的調(diào)整參數(shù)。但是,對正確的數(shù)據(jù)類型使用不正確的技術(shù)可能對企業(yè)造成嚴重后果。幾乎沒有一種可用于時間序列的幾乎所有類型的通用預(yù)測技術(shù)。而且,F(xiàn)acebook設(shè)計之初傾向于對解決問題的業(yè)務(wù)有更多的了解,而不是該方法所涉及的統(tǒng)計信息。這限制了調(diào)整參數(shù)并獲得準(zhǔn)確結(jié)果的能力。(1)Prophet的優(yōu)點:①很快,真的很快?、诿刻欤恐?,每月或每年的日子都處理得很好。無需將數(shù)據(jù)預(yù)先轉(zhuǎn)換為時間序列對象。③只需單個參數(shù)即可考慮每年和每周的季節(jié)性。無需深入研究確定季節(jié)性順序。④可以自動識別或手動定義變更點(趨勢顯著變化的拐點),以更好地控制預(yù)測。⑤可以兼顧不規(guī)律的假期日。⑥如果根據(jù)業(yè)務(wù)理解預(yù)測超出某個限制,則可以通過設(shè)置預(yù)測上限并使用對數(shù)增長而不是線性增長進行建模來固定預(yù)測。⑦模型本身可以很好地處理離群值,而無需進行任何估算。(2)在某些情況下,Prophet有限制:①如果時間序列高度不規(guī)則,例如您有季度性和雙周性的季節(jié)性,那么先知將很難對此進行解釋。在這種情況下,甚至在您手動調(diào)整每個參數(shù)之前,即使是傳統(tǒng)的時間序列模型也很難預(yù)測時間。②Prophet不能小心影響時間序列的外生變量。③不能用先知來解釋乘法模型。④數(shù)據(jù)需要以預(yù)定義的格式輸入。LSTM的特征LSTM的優(yōu)點:①LSTM對RNN中存在的問題即長期依賴進行了改善。②LSTM支持多維度輸入?yún)?shù),LSTM能通過引入其他數(shù)據(jù)特征進行訓(xùn)練。③LSTM可構(gòu)建復(fù)雜的非線性單元用于構(gòu)造更大型深度神經(jīng)網(wǎng)絡(luò)。LSTM的缺點:①LSTM及其變種雖然對RNN的梯度問題上地解決了問題,但還是存在一定的缺陷,就是它可以處理數(shù)量為百量級的序列,但當(dāng)數(shù)量超過千個量級的序列時或更多更長的序列時,就會處理得很難辦。②每一個LSTM的神經(jīng)元都有4個全連接層,訓(xùn)練過程計算量大,時間消耗更是隨著LSTM網(wǎng)絡(luò)層數(shù)和特征數(shù)量增長而加倍。

W企業(yè)現(xiàn)有預(yù)測方法與問題W企業(yè)是一家總部位于舊金山的電商巨頭公司,目前在全球100多個國家及地區(qū)活躍。具有雙渠道銷售策略,其中線上有自己的銷售APP,用戶可以在該APP上以很大的折扣價購買物美價廉的商品,同時具有強大的全球物流平臺可以提高規(guī)模效應(yīng),實現(xiàn)了全流程服務(wù);W企業(yè)線下5000多家門店具有數(shù)字化店面、在線搜索、極大的客流量和銷量。W企業(yè)有著多元化的收入來源,其中72%的收入來自核心市場,20%來自物流/以及8%來自廣收入。W企業(yè)2016年至2020年收入如下表3.1所示:tableSTYLEREF1\s3.SEQtable\*ARABIC\s11W企業(yè)年總收入年份20162017201820192020收入(百萬美元)4451101172819012541公司一直致力于改善用戶貨幣化的機會,而改善用戶參與度和貨幣化是最大化LTV的主要驅(qū)動力。包括了利用數(shù)據(jù)科學(xué)來推動個性化和定向廣告,擴展運輸解決方案,提高可靠性并縮短交貨期等一系列措施,來加快服裝一類生命周期短的產(chǎn)品的銷量。準(zhǔn)確預(yù)測服裝銷量更是重中之重。本文中的數(shù)據(jù)集來自W企業(yè)供應(yīng)鏈管理部門所提供的從2013年-2017年的門店全渠道商品銷售的總數(shù)據(jù),文檔是從W企業(yè)自己的系統(tǒng)中下載下來的Excel文檔,原數(shù)據(jù)包含了50種不同商品的名稱、材質(zhì)、銷售量、保質(zhì)期等關(guān)鍵信息,這些數(shù)據(jù)是由10家線下門店上傳到系統(tǒng)的。現(xiàn)有預(yù)測模式與方法W企業(yè)給出了自己的指標(biāo):產(chǎn)品的銷售情況如何?在庫存中具有最佳潛力的產(chǎn)品對于全球商店和企業(yè)至關(guān)重要,企業(yè)通過預(yù)測產(chǎn)品的銷售狀況,其中最直接的方法就是調(diào)整應(yīng)該保留多少產(chǎn)品,這將更好地了解電子商務(wù)的銷售,并幫助企業(yè)優(yōu)化庫存和銷售。W企業(yè)的供應(yīng)鏈管理W企業(yè)在美國有著自己的全渠道供應(yīng)鏈環(huán)節(jié),具有和亞馬遜(Amazon)一樣的長尾效應(yīng),但是其倉庫僅在美國和歐洲,W企業(yè)專注于低收入購物者,并計劃建立其供應(yīng)鏈功能,以增加庫存,同時保持較低的價格。而94%的顧客來自中國,有30%來自美國,而其他大多數(shù)客戶都位于歐洲。W企業(yè)的客戶增長得益于來自中國的低運價。為了以低價格保證高質(zhì)量,W企業(yè)的供應(yīng)計劃需要格外的重視,其擁有自己的專門的供應(yīng)鏈管理部門,作為重要的銜接渠道,其需求預(yù)測的效率與質(zhì)量直接影響到整個企業(yè)采購和銷售的核心業(yè)務(wù)的運營管理,供應(yīng)鏈管理部門相關(guān)負責(zé)人每天需要制定了詳細的需求預(yù)測看板,以保證即使將信息上傳系統(tǒng)進行信息流轉(zhuǎn)。預(yù)測模式(1)每周預(yù)測日常的促銷,價格變動,新產(chǎn)品推介或產(chǎn)品展示方式的改變會對銷量產(chǎn)生了巨大影響。由于這些決策會引入很多難以預(yù)測的變化,因此每周要進行一次常規(guī)的需求預(yù)測計劃,但是這個是人工看板計劃,為了有效地執(zhí)行商店補貨,銷售計劃和其他業(yè)務(wù)決策,計劃人員需要對在不同門店內(nèi)具有不同產(chǎn)品的進行預(yù)測,并參考各個部門當(dāng)天的數(shù)據(jù)進行溝通和調(diào)整。(2)每月預(yù)測供應(yīng)鏈管理部門每個月例行的月度需求預(yù)測報告,需要根據(jù)本月每周工作日中的最新銷售數(shù)據(jù)對下一個月的需求量進行預(yù)測,這將直接影響成為采購部門對采購計劃進行的進度,采購部門需要和計劃人員及時溝通協(xié)調(diào),將最終預(yù)測結(jié)果匯總后進行慣例匯報。(3)季度預(yù)測和月度預(yù)測的不同之處在于,W企業(yè)對季度的精度要求沒有月度要求審核的那么嚴格,供應(yīng)鏈管理部門的負責(zé)人只要求達到一定水平的精度,所以季度預(yù)測目前的作用只是在判斷趨勢走向,預(yù)測結(jié)果的可靠性偏低,季度預(yù)測結(jié)果會和周預(yù)測一起進行匯報。(4)年度預(yù)測當(dāng)需要進行年度需求預(yù)測的時候,W企業(yè)會組織召開供應(yīng)鏈相關(guān)會議,會議將決定具體計劃的落實,然后供應(yīng)鏈管理部門負責(zé)人分配預(yù)測任務(wù),計劃人員根據(jù)系統(tǒng)中上一年度12個月的銷售數(shù)據(jù)來預(yù)測本年12個月的需求量,在預(yù)測過程中要及時和銷售部門進行溝通,采取銷售部門的建議,對預(yù)測過程中產(chǎn)生的誤差進行經(jīng)驗性調(diào)整,最后將預(yù)測的綜合結(jié)果反饋給采購部門,然后供應(yīng)鏈管理部門要同時總結(jié)年度數(shù)據(jù)變化趨勢。預(yù)測方法(1)樸素預(yù)測最簡單的預(yù)測方法是使用最新的觀測值,這稱為樸素預(yù)測,計劃人員在R中實現(xiàn)。當(dāng)他們處理季節(jié)性數(shù)據(jù)的時候會直接使用去年數(shù)據(jù)中的相應(yīng)季節(jié)。季節(jié)性樸素方法通過將每個預(yù)測設(shè)置為等于同一季節(jié)的最后觀測值來解決季節(jié)性問題。例如,四月所有后續(xù)月份的預(yù)測值將等于四月觀察到的先前值。季節(jié)性樸素方法對于季節(jié)性水平非常高的數(shù)據(jù)才有用。FigureSTYLEREF1\s3.SEQFigure\*ARABIC\s11樸素預(yù)測實際值FigureSTYLEREF1\s3.SEQFigure\*ARABIC\s12樸素預(yù)測的預(yù)測值(2)簡單指數(shù)平滑時間序列數(shù)據(jù)的指數(shù)平滑為最新到最舊的觀測值分配指數(shù)遞減的權(quán)重。即數(shù)據(jù)越舊,數(shù)據(jù)的優(yōu)先級(“權(quán)重”)就越??;較新的數(shù)據(jù)被認為更相關(guān),并且分配了更多的權(quán)重。可以看出簡單指數(shù)平滑反而沒有樸素預(yù)測有效,觀察為一條直線,這將嚴重影響企業(yè)各部門運營。FigureSTYLEREF1\s3.SEQFigure\*ARABIC\s13簡單指數(shù)平滑的實際值FigureSTYLEREF1\s3.SEQFigure\*ARABIC\s14簡單指數(shù)平滑的預(yù)測值存在的問題(1)需求預(yù)測自動化問題計劃人員使用時間序列建模創(chuàng)建基本預(yù)測,通過查看歷史數(shù)據(jù)對未來需求進行預(yù)測。這些預(yù)測通常根據(jù)因果模型和人工輸入進行調(diào)整。傳統(tǒng)的統(tǒng)計預(yù)測:適用于穩(wěn)定的市場,不善于變化,不能很好應(yīng)對高峰銷售期進行準(zhǔn)確預(yù)測,影響企業(yè)運營效率。(3)需求預(yù)測的精度問題全渠道的零售商供應(yīng)鏈需要能夠非常準(zhǔn)確地預(yù)測揀貨量和進行時間安排,以便能夠履行對客戶的提前期承諾,而又不會增加人工成本。但目前企業(yè)距離目標(biāo)還有差距。從以上預(yù)測模型結(jié)果圖可以看出,與簡單指數(shù)平滑化方法相比,樸素預(yù)測的實驗結(jié)果反而較高,憑借經(jīng)驗的預(yù)測反而是比較不科學(xué)的?;赑rophet-LSTM模型的供應(yīng)鏈需求分析與預(yù)測沃爾瑪(Walmart),塔吉特(Target)等零售商使用預(yù)測技術(shù)和系統(tǒng)來對門店中的商品進行補貨。出色的需求預(yù)測有助于供應(yīng)鏈的其他環(huán)節(jié)的運營。通常企業(yè)擅長預(yù)測門店中的商品銷量,則可以很好地計劃庫存量來降低成本。本章首先根據(jù)2013年-2017年的歷史需求值,進行可視化的需求分析,然后建立了相應(yīng)Prophet-LSTM模型,再運用建立好的Prophet-LSTM模型對2018年的市場需求進行代碼實現(xiàn),在此基礎(chǔ)上總結(jié)了組合預(yù)測模型的應(yīng)用前景。數(shù)據(jù)準(zhǔn)備數(shù)據(jù)準(zhǔn)備是收集、組合和結(jié)構(gòu)化數(shù)據(jù)的過程,因此可以將其用于商業(yè)智能(BI),統(tǒng)計分析和數(shù)據(jù)可視化等應(yīng)用場景中。數(shù)據(jù)創(chuàng)建時通常缺少值,不準(zhǔn)確或其他錯誤。此外,單獨的數(shù)據(jù)集通常具有需要協(xié)調(diào)的不同格式。糾正數(shù)據(jù)錯誤,驗證數(shù)據(jù)質(zhì)量和加入數(shù)據(jù)集是數(shù)據(jù)準(zhǔn)備過程的重要組成部分。通過處理W企業(yè)原始的數(shù)據(jù)文件,該數(shù)據(jù)集包含5年的10家門店每天50件商品的日銷售量(從2013年到2017年,共500組時間序列)。本文目標(biāo)是預(yù)測2018年所有門店中所有商品的短期和長期的銷售量。為了適合模型的預(yù)測,本文將原始數(shù)據(jù)文件進行預(yù)處理分為三個文檔:(1)train.csv:具有銷售歷史的訓(xùn)練數(shù)據(jù)文件。(2)test.csv:用于預(yù)測銷售量的測試數(shù)據(jù)文件。關(guān)于時間序列的數(shù)據(jù)可能是不穩(wěn)定的:銷售可能具有某種趨勢和某種季節(jié)性變化。趨勢、季節(jié)性甚至整個數(shù)據(jù)分布可能會根據(jù)時間段而變化。此外,還需要處理多元時間序列,同一個門店中的商品的銷售額或者不同門店中的一個商品的銷售額之間相互關(guān)聯(lián)。探索性數(shù)據(jù)分析(EDA)通過python代碼在Anaconda中的Jupiter-Lab進行EDA分析,其中Anaconda的開源個人版(發(fā)行版)是一種開源的,世界上最受歡迎的Python發(fā)行平臺,JupyterLab還提供了用于查看和處理數(shù)據(jù)格式的統(tǒng)一模型。JupyterLab可以理解許多文件格式(圖像,CSV,JSON,Markdown,PDF,Vega,Vega-Lite等),并且還可以顯示這些格式的豐富內(nèi)核輸出。內(nèi)核支持的文檔使任何文本文件(Markdown,Python,R,LaTeX等)中的代碼都可以在任何Jupyter內(nèi)核中交互運行。探索性數(shù)據(jù)分析(EDA,ExploratoryDataAnalysis)是一種數(shù)據(jù)分析方法。研究人員對數(shù)據(jù)進行鳥瞰,并試圖從中找到一些意義。EDA在python中的實現(xiàn)是數(shù)據(jù)可視化分析的關(guān)鍵,在應(yīng)用任何正式的統(tǒng)計模型之前實現(xiàn)。探索性數(shù)據(jù)分析是推理統(tǒng)計學(xué)的補充,推理統(tǒng)計學(xué)往往具有相當(dāng)嚴格的規(guī)則和公式。EDA包括分析師試圖獲得數(shù)據(jù)集的“感覺”,通常使用他們自己的判斷來確定數(shù)據(jù)集中最重要的元素是什么。例如K-均值聚類通常用于市場細分,模式識別和圖像壓縮;線性回歸之類的預(yù)測模型使用統(tǒng)計數(shù)據(jù)來預(yù)測結(jié)果。探索性數(shù)據(jù)分析的目的是:(1)檢查丟失的數(shù)據(jù)和其他錯誤。(2)獲得對數(shù)據(jù)集及其底層結(jié)構(gòu)的最大洞察。(3)簡潔揭示模型,一個用最少數(shù)量的預(yù)測變量來解釋數(shù)據(jù)的模型。(4)檢查與任何模型擬合或假設(shè)檢驗相關(guān)的假設(shè)。(5)找出參數(shù)估計及其相關(guān)的置信區(qū)間或誤差范圍。(6)確定最具影響力的變量。數(shù)據(jù)預(yù)處理Step1:導(dǎo)入庫和函數(shù)包,在anaconda中內(nèi)嵌畫圖需要引入python一些外包:(1)NumPy和Pandas處理表格數(shù)據(jù)(2)Matplotlib用于數(shù)據(jù)可視化Step2:讀取數(shù)據(jù):數(shù)據(jù)文件是csv格式。原數(shù)據(jù)文件的銷售價值以整數(shù)形式給出,為了避免將來發(fā)生任何意外的數(shù)字舍入,將銷售數(shù)據(jù)改為浮點數(shù)。tableSTYLEREF1\s4.SEQtable\*ARABIC\s11train和test集datestoreitemsalesiddatestoreitem02013-01-011113.0002018-01-011112013-01-021111.0112018-01-021122013-01-031114.0222018-01-0311Step3:對數(shù)據(jù)標(biāo)題的長度/跨度的對比,運行結(jié)果如下表4.1所示:tableSTYLEREF1\s4.SEQtable\*ARABIC\s12標(biāo)題處理Entries(Train/Test)913000/45000Stores(Train/Test)1-10/1-10Items(Train/Test)1-50/1-50Dates(Train/Test)2013-01-01-2017-12-31/2018-01-01-2018-03-31Step4:用isnull()函數(shù)對數(shù)據(jù)文件檢查是否有缺失值,運行結(jié)果如下表所示:tableSTYLEREF1\s4.SEQtable\*ARABIC\s13缺失值檢查TrainingNaNsTestNaNsdate00store00item00sales00從上面兩張表中可以看出數(shù)據(jù)是干凈的,沒有出現(xiàn)數(shù)據(jù)遺失,可以不用處理而直接進行可視化操作。數(shù)據(jù)可視化(1)異常值檢驗繪制銷售時間序列時候,是對數(shù)據(jù)進行平均每周一次來以使繪圖更具可讀性。運行結(jié)果如下圖4.1所示:FigureSTYLEREF1\s4.SEQFigure\*ARABIC\s11周數(shù)據(jù)可視化時間序列看起來很規(guī)則,沒有明顯的異常值??绮煌唐泛烷T店的銷售量肯定有相似之處。尤其是銷售具有趨勢,并且在夏季會有年度銷售高峰的趨同模式。還可以看到一件商品或一家門店的銷售額是絕對相關(guān)的。(2)趨勢和季節(jié)性分析銷售趨勢和季節(jié)性。首先,在數(shù)據(jù)文件中添加帶有一些日期相關(guān)信息的列:年,月,日等。添加后的表格如下表4.4所示:tableSTYLEREF1\s4.SEQtable\*ARABIC\s14處理后的Excel文件datestoreitemsalesYearMonthWeekDayDayofweekDayofyearWeekofyear02013-01-011113.0201311111112013-01-021111.0201311222122013-01-031114.02013113331對所有數(shù)據(jù)的銷售量進行可視化運行結(jié)果如下圖4.2所示:FigureSTYLEREF1\s4.SEQFigure\*ARABIC\s12趨勢圖從上面可視化的結(jié)果可以看出所有商品和門店的平均銷售時間序列。似乎匯總的時間序列比單獨的時間序列更加動蕩。實際上,情況并非如此,下面對每周平均的情況下繪制了圖表,運行結(jié)果如下圖4.3所示:FigureSTYLEREF1\s4.SEQFigure\*ARABIC\s13時間序列特征圖從第一幅(yearlyseasonality)標(biāo)題的年度季節(jié)性圖中可以得出:銷售在第二季度增長,在最大的銷售已經(jīng)觀察到在7月份之后,它再次下降,在11月時候有些許回升但是會在12月急劇下降。(mont?lyseasonality)月度季節(jié)性通過(weeklyseasonality)每周季節(jié)性的再細化呈現(xiàn),可以在(Dayofweek)的兩幅圖中推斷出消費者更喜歡在周末購物。銷售趨勢從周五開始上升,周日銷量最大,然后在工作日恢復(fù)正常??梢钥吹角逦哪甓群兔恐芗竟?jié)性模式,這些模式并不會隨著時間而改變。這絕對是有趣的,并且也證實了假設(shè),即銷售額可能是相關(guān)的。同時,每月的季節(jié)性不是很明顯。通過趨勢分析,可以看到模型是加性的(季節(jié)性成分在一段時間內(nèi)是相似的,而不是相乘)。(4)STL分解首先,要分解數(shù)據(jù),以分離季節(jié)性、趨勢和殘差。通過5年的銷售數(shù)據(jù)來估計每年或每周的規(guī)律。使用stat?models中的經(jīng)典STL分解算法來幫助找到其中規(guī)律。STL(Seasonal?TrenddecompositionprocedurebasedonLoess)是一種可以將時間序列數(shù)據(jù)系統(tǒng)地分解為三個組成因素的統(tǒng)計方法,分別是季節(jié)性因素,趨勢因子和殘差。將某時刻的數(shù)據(jù)Yv分解為趨勢分量Tv,周期分量Svy(4.1)Ljung-Boxtest是對數(shù)據(jù)隨機性的檢驗,或者表達為對時間序列是否存在滯后相關(guān)的一種統(tǒng)計檢驗。Q(4.2)p值小于5%時序列是非白噪聲。繪制STL分解出來的趨勢,季節(jié)和殘留成分,以及包含Ljung-Box檢驗的PACF圖運行結(jié)果如下圖4.4所示:FigureSTYLEREF1\s4.SEQFigure\*ARABIC\s14STL分解上圖中顯示數(shù)據(jù)有一定的頻率,每年的模式都很明顯??梢钥吹矫磕暧幸粋€上升的趨勢。對于殘差,也繪制了部分自相關(guān)圖(PACF);在第五個圖中,可以判斷Ljung-Box檢驗的p值為7和30滯后。在滯后超過5時,p值<0.05表示殘差可能是自相關(guān)的,可以認為出現(xiàn)顯著的自回歸關(guān)系,且序列并非白噪聲。似乎每年的季節(jié)性都是必須的:沒有季節(jié)性影響,銷售量趨勢就會變得異常嘈雜。然而,僅僅是一年的季節(jié)性是不夠的:PACF圖在殘差中顯示出一周的季節(jié)性格局,但Ljung-Box檢驗嚴重失敗。因此,每年和每周的季節(jié)性都應(yīng)該建模。設(shè)計組合預(yù)測模型需求預(yù)測是使用歷史數(shù)據(jù)和其他信息對定義的期間內(nèi)未來市場需求進行估計的過程。準(zhǔn)確的需求預(yù)測可以為企業(yè)提供有關(guān)其在當(dāng)前市場和其他市場中的具有潛力的,且有價值的信息,以便相關(guān)人員可以根據(jù)價格,業(yè)務(wù)增長策略和市場潛力做出明智的決策。如果沒有需求預(yù)測,企業(yè)就有可能對其產(chǎn)品和目標(biāo)市場做出錯誤的決策,而錯誤的決策可能對庫存持有成本,客戶滿意度,供應(yīng)鏈管理和盈利能力產(chǎn)生負面影響。根據(jù)2.3節(jié)對比Prophet模型和LSTM模型優(yōu)缺點,再根據(jù)EDA分析現(xiàn)有數(shù)據(jù)文件的特點,可以得出以下結(jié)論:(1)W企業(yè)50家10個品種的銷售數(shù)據(jù),數(shù)據(jù)量級不是特別巨大,兩種模型都可以采取。(2)Prophet的長期預(yù)測表現(xiàn)更好,速度快;LSTM短期預(yù)測能力較好,預(yù)測精確度高。(3)可以看到數(shù)據(jù)的不平穩(wěn)性質(zhì)。較短的時間范圍通常更容易以較高的假設(shè)檢驗置信度進行預(yù)測。W企業(yè)需要進行每周、每月、每季度以及一年的需求預(yù)測。所以涉及短期和長期的需求預(yù)測。結(jié)合LSTM模型和Prophet模型的各自優(yōu)點和性能,當(dāng)預(yù)測短期的需求時,采用LSTM進行求解,當(dāng)預(yù)測長期需求時,采用Prophet模型,兩個模型優(yōu)勢互補可以很好的解決需求預(yù)測的精度問題。FigureSTYLEREF1\s4.SEQFigure\*ARABIC\s15Prophet-LSTM模型結(jié)構(gòu)圖基于LSTM模型的季度需求預(yù)測Step1.數(shù)據(jù)預(yù)處理(1)trian.csv數(shù)據(jù)轉(zhuǎn)換①用head()方法加載train數(shù)據(jù)先將train文件在Python中命名為df_train,然后可視化表格顯示其中的數(shù)據(jù)情況。tableSTYLEREF1\s4.SEQtable\*ARABIC\s15train文件date storeitemsales02013-01-01111312013-01-02111122013-01-03111432013-01-04111342013-01-051110②時間序列數(shù)據(jù)化:在train中用pd.to_datetime()方法將data列直接把字符串轉(zhuǎn)換為日期,用pd.DatetimeIndex()將日期作為索引,然后用drop()方法對date列刪除數(shù)據(jù)并替代為True。運行結(jié)果如下表4.6所示。可以看出train文檔中日期從2013/1/1到2017/12/31,且每列都有913000項數(shù)值。tableSTYLEREF1\s4.SEQtable\*ARABIC\s16train字符串轉(zhuǎn)日期屬性<class'pandas.core.frame.DataFrame'>DatetimeIndex:913000entries,2013-01-01to2017-12-31Datacolumns(total3columns):store913000non-nullint64item913000non-nullint64sales913000non-nullint64③引入itertools模塊并加載product(*iterables)方法和starmap(function,iterable)方法,首先定義storeitems()方法,表示門店的商品條目序列,并用product(*iterables)方法將50種商品和10個門店數(shù)量對應(yīng)起來生成笛卡爾積。④然后定義storeitems_column_name()函數(shù),表示門店商品的列名,通過starmap(function,iterable)方法實現(xiàn)將列名和storeitems()產(chǎn)生的數(shù)據(jù)對應(yīng)起來,根據(jù)iterable中的列表執(zhí)行function,返回function執(zhí)行結(jié)果顯示的list列表。⑤最后定義sales_by_storeitem()函數(shù),將生成一個帶有索引和銷售值的像excel一樣的二維表。⑥df_train作為實參賦值給sales_by_storeitem()函數(shù),改變了原來df_train的格式,運行結(jié)果如下表4.7所示,現(xiàn)在分類匯總之后有每列有500個數(shù)值。tableSTYLEREF1\s4.SEQtable\*ARABIC\s17train數(shù)據(jù)轉(zhuǎn)換結(jié)果<class'pandas.core.frame.DataFrame'>DatetimeIndex:1826entries,2013-01-01to2017-12-31Columns:500entries,item_1_store_1_salestoitem_50_store_10_salesdtypes:int64(500)(2)test.csv數(shù)據(jù)轉(zhuǎn)換加載測試數(shù)據(jù)能夠?qū)φ麄€集合進行正確縮放,并對組合數(shù)據(jù)執(zhí)行所有必要的轉(zhuǎn)換。①加載test文件tableSTYLEREF1\s4.SEQtable\*ARABIC\s18test文件iddatestoreitem002018-01-0111112018-01-0211222018-01-0311332018-01-0411442018-01-0511②時間序列數(shù)據(jù)化:同理將test數(shù)據(jù)字符串轉(zhuǎn)日期并作為索引,并將date列數(shù)據(jù)換為True,如下表4.9所示數(shù)據(jù)從2018/1/1到2018/3/31日,且每列都有45000項數(shù)值。tableSTYLEREF1\s4.SEQtable\*ARABIC\s19test字符串轉(zhuǎn)日期屬性<class'pandas.core.frame.DataFrame'>DatetimeIndex:45000entries,2018-01-01to2018-03-31Datacolumns(total3columns):id45000non-nullint64store45000non-nullint64item45000non-nullint64③使用與df_train(讀取訓(xùn)練集)中相同的sales_by_storeitem()函數(shù)轉(zhuǎn)換來test銷售數(shù)據(jù)。先用np.zeros()返回給定的test矩陣的行數(shù),并用0填充sales列的數(shù)組,運行結(jié)果如下表4.10所示:tableSTYLEREF1\s4.SEQtable\*ARABIC\s110test數(shù)據(jù)轉(zhuǎn)換結(jié)果<class'pandas.core.frame.DataFrame'>DatetimeIndex:90entries,2018-01-01to2018-03-31Columns:500entries,item_1_store_1_salestoitem_50_store_10_salesdtypes:float64(500)(4)使用pd.concat()方法合并test和train數(shù)據(jù)集,并命名為df_total運行結(jié)果如下表4.11所示。tableSTYLEREF1\s4.SEQtable\*ARABIC\s111合并數(shù)據(jù)集<class'pandas.core.frame.DataFrame'>DatetimeIndex:1916entries,2013-01-01to2018-03-31Columns:501entries,item_1_store_1_salestois_testdtypes:bool(1),float64(500)(5)one-hot編碼weekly和monthly離散特征weekly和monthly特征不是連續(xù)值,而是分類值。LSTM算法不能直接用于分類值,并且必須在訓(xùn)練模型之前將其轉(zhuǎn)換為數(shù)值。分類編碼的最常見類型是one-hotencoding(也稱為偽編碼),其中每個分類級別成為包含二進制值(1或0)的數(shù)據(jù)集中的單獨特征。用pd.get_dummies()方法實現(xiàn)one-hot編程,并將df_total.index保存的索引標(biāo)簽數(shù)據(jù)傳遞給weekday_df和month_df,運行結(jié)果如下表4.12和4.13所示:tableSTYLEREF1\s4.SEQtable\*ARABIC\s112weekday_dfweekday_0weekday_1weekday_2weekday_3weekday_4weekday_5weekday_6date 2013-01-0101000002013-01-0200100002013-01-0300010002013-01-0400001002013-01-050000010tableSTYLEREF1\s4.SEQtable\*ARABIC\s113month_dfmonth_1month_2month_3month_4month_5month_6month_7month_8month_9month_10month_11month_12date2013-01-011000000000002013-01-021000000000002013-01-031000000000002013-01-041000000000002013-01-05100000000000最后用pd.concat()方法將weekday_df,month_df,df_total三個列表沿著列的方向水平延伸合并作為df_total表,運行結(jié)果如下表4.14所示:tableSTYLEREF1\s4.SEQtable\*ARABIC\s114df_total<class'pandas.core.frame.DataFrame'>DatetimeIndex:1916entries,2013-01-01to2018-03-31Columns:520entries,weekday_0tois_testdtypes:bool(1),float64(500),uint8(19)(5)對sale銷量列的平移變換①定義shift_series()函數(shù),先通過shift()方法按照days參數(shù)值移動時間索引,而數(shù)據(jù)值沒有發(fā)生變化,然后用transform()找中心和縮放等實現(xiàn)數(shù)據(jù)標(biāo)準(zhǔn)化。②定義shift_series_in_df函數(shù),將df中的列與series_names中的列按days_delta進行平移,將sign()函數(shù)應(yīng)用于days_delta,小于0的days_delta將把未來的值添加到當(dāng)前日期,大于等于0時days_delta將把過去的值放置到當(dāng)前日期之前。③定義stack_shifted_sales(df,days_delta=90)函數(shù),將df,series_names=names,days_delta=delta作為參數(shù)輸入shift_series_in_df函數(shù),并將結(jié)果合并df_total合并。最后用dropna()刪除所有包含NaN的列,這應(yīng)該只刪除了第一行,運行結(jié)果如下表4.15所示:tableSTYLEREF1\s4.SEQtable\*ARABIC\s115對sale列變換<class'pandas.core.frame.DataFrame'>DatetimeIndex:1915entries,2013-01-02to2018-03-31Freq:DColumns:1020entries,weekday_0toitem_50_store_10_sales_past_1dtypes:bool(1),float64(1000),uint8(19)④調(diào)用sorted()和reindex()方法為了確保stack_shifted_sales和標(biāo)準(zhǔn)的銷售欄以相同的順序出現(xiàn),運行結(jié)果如下表4.16所示:tableSTYLEREF1\s4.SEQtable\*ARABIC\s116保持順序weekday_0weekday_1weekday_2weekday_3weekday_4weekday_5...item_9_store_4_salesitem_9_store_5_salesitem_9_store_6_salesitem_9_store_7_salesitem_9_store_8_salesitem_9_store_9_salesdate2013-01-02001000...21.020.017.020.028.036.02013-01-03000100...25.015.028.018.031.025.02013-01-04000010...37.020.033.024.046.031.02013-01-05000001...37.023.027.014.035.030.02013-01-06000000...37.029.020.024.034.035.0(6)縮放比例通過合并數(shù)據(jù)集和平移的銷售量,現(xiàn)在可以正確地最小或最大縮放所有數(shù)據(jù)。數(shù)據(jù)歸一化:導(dǎo)入sklearnpreprocessing模塊,引入MinMaxScaler()函數(shù)和scaler.fit_transform()函數(shù)規(guī)?;卣鞯阶畲笾岛妥钚≈档姆秶鷥?nèi),即[0,1]之間而消除了量綱的影響。X=(4.3)X=(4.4)tableSTYLEREF1\s4.SEQtable\*ARABIC\s117數(shù)據(jù)標(biāo)準(zhǔn)化weekday_0weekday_1weekday_2weekday_3weekday_4weekday_5...item_9_store_4_salesitem_9_store_5_salesitem_9_store_6_salesitem_9_store_7_salesitem_9_store_8_salesitem_9_store_9_salesdate2013-01-02001000...0.1891890.2380950.2098770.2564100.2089550.3272732013-01-03000100...0.2252250.1785710.3456790.2307690.2313430.2272732013-01-04000010...0.3333330.2380950.4074070.3076920.3432840.2818182013-01-05000001...0.3333330.2738100.3333330.1794870.2611940.2727272013-01-06000000...0.3333330.3452380.2469140.3076920.2537310.318182(7)拆分回train和test集導(dǎo)入sklearn.model_selection模塊并引入train_test_split()方法劃分train和teat集,運行結(jié)果如下表4.18為train集和4.19為test集:tableSTYLEREF1\s4.SEQtable\*ARABIC\s118train集<class'pandas.core.frame.DataFrame'>DatetimeIndex:1825entries,2013-01-02to2017-12-31Freq:DColumns:1019entries,weekday_0toitem_9_store_9_salesdtypes:float64(1000),uint8(19)tableSTYLEREF1\s4.SEQtable\*ARABIC\s119test集<class'pandas.core.frame.DataFrame'>DatetimeIndex:90entries,2018-01-01to2018-03-31Freq:DColumns:1019entries,weekday_0toitem_9_store_9_salesdtypes:float64(1000),uint8(19)(8)df_total拆分為X和ydf_total仍然可用,因為有必要對輸出數(shù)據(jù)進行反向縮放,分為X和y用于訓(xùn)練。tableSTYLEREF1\s4.SEQtable\*ARABIC\s120X——時間<class'pandas.core.frame.DataFrame'>DatetimeIndex:1825entries,2013-01-02to2017-12-31Freq:DColumns:519entries,item_10_store_10_sales_past_1tomonth_12dtypes:float64(500),uint8(19)tableSTYLEREF1\s4.SEQtable\*ARABIC\s121y——銷量<class'pandas.core.frame.DataFrame'>DatetimeIndex:1825entries,2013-01-02to2017-12-31Freq:DColumns:500entries,item_10_store_10_salestoitem_9_store_9_salesdtypes:float64(500)Step2訓(xùn)練LSTM模型(1)構(gòu)建LSTM模型導(dǎo)入keras.Sequential模塊建立模型。使用TensorFlow后端,應(yīng)用Sequential,Model。1、拆分值進行train和test,分別為X_train,X_valid,y_train,y_valid。2、使用reshape()方法輸入?yún)?shù)3d,即[樣本,時間步長,特征]。使用所有門店商品item的特征,即前一天的累計銷售額來預(yù)測一個門店商品當(dāng)前的銷售額,包括500個item和1826個樣本。對需要訓(xùn)練的模型輸入?yún)?shù)如下表4.22所示:tableSTYLEREF1\s4.SEQtable\*ARABIC\s122LSTM參數(shù)參數(shù)名稱參數(shù)值輸入層節(jié)點個數(shù)(inputs)500全連接層節(jié)點個數(shù)(top_lstm)(final_lstm)500輸出層節(jié)點個數(shù)(final_concat)1000Conv1D一維卷積(bottom_dense)(500,1,input_shape=(X_train_vals.shape[1],X_train_vals.shape[2]))Conv1D一維卷積((bottom_conv1)(1000,50,padding=’same’,activation=’relu’)Conv1D一維卷積(bottom_conv2)(500,10,padding=’same’,activation=’relu’)續(xù)表4.22AvgPool1D一維平均池化(bottom_conv3)(pool_size=10,padding='same')Dropout層0.2激活函數(shù)relu損失函數(shù)mean_absolute_error優(yōu)化函數(shù)Adam檢驗方法mape(2)訓(xùn)練帶卷積的LSTMbatch_size:定義在網(wǎng)絡(luò)的內(nèi)部參數(shù)在更新自身之前通過網(wǎng)絡(luò)的樣本數(shù)。內(nèi)部參數(shù)的每次更新都稱為迭代,因此在某種程度上,定義批處理大小等于定義每個時期中的迭代次數(shù),這里設(shè)置隨著梯度下降時每個batch包含的樣本數(shù)為70。epochs時期數(shù):定義整個訓(xùn)練數(shù)據(jù)集上的訓(xùn)練的總輪數(shù)設(shè)置為130。并且設(shè)置每個epoch輸出的時候需要被記錄成一行,最后在訓(xùn)練過程中不能隨機打亂輸入樣本的順序。繪制LSTM損失值過程,運行過程如下圖4.6所示:FigureSTYLEREF1\s4.SEQFigure\*ARABIC\s16LSTM訓(xùn)練結(jié)果上面的運行過程可視化可以看出,模型訓(xùn)練完全在正常的平穩(wěn)擬合范圍之內(nèi),至少模型很好的收斂了,現(xiàn)在進行模型的精確度。然后將LSTM預(yù)測結(jié)果可視化如下圖4.7—4.9所示:FigureSTYLEREF1\s4.SEQFigure\*ARABIC\s17LSTM一周預(yù)測結(jié)果FigureSTYLEREF1\s4.SEQFigure\*ARABIC\s18LSTM一個月預(yù)測結(jié)果FigureSTYLEREF1\s4.SEQFigure\*ARABIC\s19LSTM季度預(yù)測結(jié)果Step4:模型精度確定對稱平均絕對百分比誤差(SMAPE,SymmetricMeanAbsolutePercentageError):修復(fù)了原始MAPE的缺點,同時具有下限(0%)和上限(200%)。SMAPE=(4.5)SMAPE是根據(jù)模型的驗證集,計算每一個數(shù)據(jù)得出的,運行結(jié)果如下表所示:從下圖4.10看出SMAPE的平均絕對誤差分布在15%,說明精度整體在95%以上。LSTM的精確度非常高。FigureSTYLEREF1\s4.SEQFigure\*ARABIC\s110SMAPE基于Prophet模型的年度預(yù)測Step1:數(shù)據(jù)預(yù)處理制作一個年度小于2017年的數(shù)據(jù)集,其中重命名是必需的,因為FacebookProphet要求日期列的名稱為ds列的數(shù)據(jù)框基礎(chǔ)上,度量標(biāo)準(zhǔn)列名稱為y。訓(xùn)練集最后數(shù)據(jù)如下表4.23所示:tableSTYLEREF1\s4.SEQtable\*ARABIC\s123train集表格dsstoreitemy2589222016-12-27215802589232016-12-28215832589242016-12-29215822589252016-12-30215942589262016-12-31215108Step2:使用FacebookProphet創(chuàng)建預(yù)測模型導(dǎo)入fbprophet模塊并引入Prophet模型,由于Facebook的原prophet模型中已經(jīng)對可能對預(yù)測過程產(chǎn)生影響的參數(shù)進行了必要的設(shè)置,因此可以直接調(diào)用Prophet對象實例化從而達到擬合模型的目標(biāo)。這里用m=Prophet在接下來本文中替代prophet作為簡寫,就可以使用m.fit()方法輸入df_train的歷史數(shù)據(jù)集中的ds時間和銷量數(shù)據(jù)y來擬合模型。通過使用輔助的方法使用m.make_future_dataframe()方法來輸入未來的指定日期為365天。Step3:預(yù)測未來數(shù)據(jù)框的銷售量通過m.predict()方法把歷史數(shù)據(jù)日期和未來日期都進行模型的擬合,即會得到相應(yīng)的預(yù)測值(yhat)。forecast.head(n=3)創(chuàng)建一個新的展示預(yù)測結(jié)果的數(shù)據(jù)框,其中包含一列預(yù)測值yhat,相關(guān)因素的分析及其置信區(qū)間,因為數(shù)據(jù)過多這里只展示預(yù)測值的預(yù)測值和置信區(qū)間,如下表4.24所示。tableSTYLEREF1\s4.SEQtable\*ARABIC\s124prophet運行結(jié)果dsyhat_loweryhat_upperyhat02013-01-0135.64007466.70744351.50527612013-01-0237.27564766.07616151.60787522013-01-0346.57363875.80442260.413025同時用m.plot(forecast)可視化預(yù)測結(jié)果,如下圖4.11所示:FigureSTYLEREF1\s4.SEQFigure\*ARABIC\s111Prophet預(yù)測結(jié)果通過m.plot_components(forecast)方法,可以實現(xiàn)prophet模型預(yù)測結(jié)果的所含因素及其成分的分析圖表,如下圖4.12所示。在prophet模型的默認設(shè)置下,將會展示出預(yù)測結(jié)果的trend趨勢、weekly一周的季節(jié)性以及yearly年度季節(jié)性。FigureSTYLEREF1\s4.SEQFigure\*ARABIC\s112未來趨勢圖由于prophet在這里作為加法模型,則有下面公式:forecast['additive_terms']=(4.6)forecast['y?at']=forec

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論