圖1 數(shù)據(jù)驅(qū)動的銷量預測
算法挖掘數(shù)據(jù)中規(guī)律的過程其實本質(zhì)上和人工判斷的原理類似,都是在可能影響銷量的因素和銷量之間建立聯(lián)系。銷量的影響因素包括:銷量的歷史趨勢、周期性、節(jié)假日、產(chǎn)品屬性、渠道屬性、營銷投入、競爭情況等(圖2)。
圖2 銷量預測的影響因素
二、
銷量預測的難點
1. 世上沒有水晶球
盡管銷量預測十分重要,但在實踐中進行高質(zhì)量的銷量預測并不容易,尤其是預測的準確率往往不盡如人意。在深度學習算法已經(jīng)可以超越人類水平進行人臉識別的今天,為何銷量預測仍然如此之難?在討論這個問題之前,我們首先要明確未來銷量不確定性的來源。不確定性可以分類三類(圖3):
圖3 不確定性的來源
(1)未知但可知:指數(shù)據(jù)中的隨機性,即噪音造成的不確定性。
(2)博弈結(jié)果:指系統(tǒng)內(nèi)參與者對其他參與者行為的預期造成的不確定性。
(3)復雜系統(tǒng):指復雜系統(tǒng)中極小參數(shù)變化經(jīng)過非線性轉(zhuǎn)換造成的“黑天鵝”類不確定性。
在這三類不確定性中,預測模型只適合解決第一類,而人臉識別就符合第一類不確定性:人臉的結(jié)構(gòu)和特征千百年來變化非常緩慢。第二和第三類不確定性從定義上來說無法在歷史數(shù)據(jù)中積累足夠多的案例,預測模型也就無法學習相關規(guī)律。未來銷量的不確定性恰恰不僅來自第一類不確定性。舉例來說,競爭對手的行為(定價、新品)會影響企業(yè)的銷量,但這是競爭對手的行為是基于企業(yè)本身策略的預期制定的(博弈結(jié)果),無法通過歷史數(shù)據(jù)預測?!昂谔禊Z”類的不確定性就更容易理解,去年發(fā)生的新冠疫情就是一個鮮明的例子。換而言之,即使我們能收集圖2中所有影響銷量的因素,也不可能百分之百準確地預測銷量。因此,在建立銷量預測模型時,我們不能以一個理想的準確率作為目標,而是將模型與基線對比,評估模型帶來的效率和準確率提升。
2. 預測、目標和計劃
除了預測方法的局限性,銷量預測的另一個誤區(qū)是企業(yè)通常會混淆預測、目標和計劃三者的關系,造成預測的邊界模糊,在實踐中無法展現(xiàn)價值。根據(jù)預測專家Hyndman[1]的定義:
在實際項目中,企業(yè)一般會每個月制定下個月的銷售計劃。由于銷售計劃具有考核效力,下個月的實際銷量和銷售計劃具有很高的相關性。因此,為了得到準確率較高的預測模型,建模人員通常會將銷售計劃作為特征加入銷量預測模型。但銷量預測模型的目的就是為了指導業(yè)務人員更加合理的制定銷售計劃,那么到底應該先有銷量預測,還是應該先有銷售計劃?
出現(xiàn)這個問題的根本原因是沒有區(qū)分預測、目標和規(guī)劃。在上面的例子中,銷售計劃實際上是目標,也就是企業(yè)希望完成的銷量。銷量預測模型不應該使用銷售計劃作為特征,銷售計劃應該在預測結(jié)果的基礎上制定。相應的,在評估模型表現(xiàn)時,也不能將模型的預測誤差率同銷售計劃和實際銷量的誤差率直接對比。
我們使用銷售計劃作為特征是因為銷售計劃是一些通常無法觀測到的變量的代理變量(proxy variable)。例如,為了完成銷售計劃,基層業(yè)務人員會加大拜訪客戶的頻率,但拜訪次數(shù)沒有記錄,所以模型無法捕捉這類信息。因此解決這個問題的根本方法是更加全面的收集數(shù)據(jù)。
三、
銷量預測解決方案
銷量預測屬于時間序列預測問題,時序預測通常采用傳統(tǒng)時間序列模型,例如ETS和ARIMA,對單序列進行建模。為了提升準確率,可以進一步進行多個時序模型的融合。但該方法在銷量預測領域有一定局限性。我們從分析銷量預測的技術(shù)挑戰(zhàn)出發(fā),決定最終模型解決方案。
1. 大規(guī)模多層級多時序問題
問題描述:銷量預測可以理解為一個多層級多時序問題。具體來說,銷量可以根據(jù)產(chǎn)品、地理等維度劃分為多個時間序列。以一個有兩級產(chǎn)品(品類和品規(guī))和兩級地理(地區(qū)和門店)管理體系的企業(yè)為例,最細的時序維度是地區(qū)-門店-品類-品規(guī)。一個較大規(guī)模企業(yè)可能需要預測數(shù)萬,甚至數(shù)十萬個時序。因此,模型需要對大規(guī)模時序組合進行預測。
另一個問題是時序之間存在附屬關系,例如品規(guī)屬于品類,門店屬于地區(qū)。建模時需要考慮時序之間的交互關系,并且保證附屬關系成立,例如品規(guī)銷量匯總等于品類銷量,門店銷量匯總等于地區(qū)銷量。
解決方法:為了捕捉時序之間的交互關系,并且允許相同層級的時序共享信息,我們選擇多時間序列聯(lián)合建模的方法,不使用傳統(tǒng)的單時間序列模型。具體來說,我們將最細維度時序(地區(qū)-門店-品類-品規(guī))的全部數(shù)據(jù)輸入模型,再通過特征工程提取時序類特征(圖4)。在預測階段,我們對最細維度時序預測結(jié)果進行匯總,得到更高層級時序(如品類和門店銷量)。
圖4 時序特征工程方法
由于以上建模方法針對最細維度時序,在匯總后,更高層級的預測不一定達到最佳效果。一種改進方法是對更高層級時序(品類或地區(qū))分別單獨建模,再用Forecast Reconciliation方法統(tǒng)一和優(yōu)化各層級預測結(jié)果。
2. 多步預測問題
問題描述:多步預測是指我們關注多個目標,例如預測未來1-3個月每個月的向量。傳統(tǒng)時序模型的應對方法是將T+1時間的預測結(jié)果作為T+2時間的輸入值,用來進行滾動預測。這種方法的問題是可能造成預測誤差累計。例如,如果模型有預測偏大的問題,那么每步預測時該問題都會放大。
解決方法:我們對每個預測目標時間(T+1,T+2等)分別建立模型,使多步預測更加穩(wěn)定,代價是需要訓練預測目標時間倍數(shù)的模型。
3. 間歇性需求問題
問題描述:對最細維度時序建模時,會出現(xiàn)部分時間銷售量為零的情況,這種情況被稱為間歇性需求,在銷量預測領域是一個常見問題。訓練數(shù)據(jù)中存在大量零值會造成模型偏見,降低準確率。
解決方法:我們采取兩個步驟解決這個問題。首先,我們將有大量連續(xù)零值時序視為已停產(chǎn)狀態(tài),從訓練數(shù)據(jù)中剔除,不對其進行預測。在篩選完時序后,還會有間歇性需求存在。我們根據(jù)實際數(shù)據(jù)情況采用以下方法或方法組合應對:
四、
銷量預測評估方法
銷量預測模型的評估方法多種多樣,可以分為技術(shù)指標和業(yè)務指標兩類。
1. 技術(shù)指標
技術(shù)指標用來評估模型在驗證集或?qū)嶋H生產(chǎn)中的預測準確率。最常用的技術(shù)指標是平均絕對百分比誤差(MAPE),其定義如下:
MAPE的優(yōu)點是作為一個百分比誤差,非常易于業(yè)務人員理解。但MAPE有兩個顯著問題,導致在實際應用中會得到不直觀的結(jié)果:
(1)MAPE是非對稱的:當預測值大于實際值時,MAPE是沒有上限的,而當預測值小于實際值時,MAPE最大為100%。
(2)MAPE在實際值為零時無法計算,這在間歇性需求常見的銷量預測領域是嚴重問題。
為了解決上述問題,人們提出對稱平均絕對百分比誤差(sMAPE),但sMAPE存在自己的問題。
我們在實踐中采取MAD Mean Ratio作為技術(shù)評估指標。該指標適用于間歇性需求場景,并且同樣是一個百分比誤差,易于理解。
2. 業(yè)務指標
業(yè)務指標用來評估模型應用后對業(yè)務產(chǎn)生的實際影響,是比模型準確率更加直觀和有效的評估指標。業(yè)務指標需要根據(jù)具體業(yè)務設計,還是以消費品企業(yè)為例,與銷量預測模型相關的業(yè)務指標包括庫存周轉(zhuǎn)率、訂單拖欠率等。
五、
對于業(yè)務設計的啟示
根據(jù)項目實踐中積累的經(jīng)驗,我們總結(jié)兩點對于業(yè)務設計的啟示:
(1)如果想最大程度挖掘數(shù)據(jù)中的價值,那么設計相關業(yè)務和IT系統(tǒng)時需要充分考慮數(shù)據(jù)分析和建模的需求。舉例來說,一般業(yè)務系統(tǒng)的數(shù)據(jù)庫設計不會考慮時間切片數(shù)據(jù)的保存,這就造成分析和建模時無法獲取歷史時點的數(shù)據(jù),進而造成時間泄露等問題。
(2)銷量預測是一種技術(shù)工具,需要和業(yè)務流程結(jié)合才能發(fā)揮作用。即使模型達到令人滿意的準確率,如果混淆了預測、目標和規(guī)劃,對模型產(chǎn)生不切實際的預期,或者模型結(jié)果無法被業(yè)務人員理解和接受,模型也不會對業(yè)務產(chǎn)生實際影響。
六、
項目應用案例
1. 背景和需求
某醫(yī)藥企業(yè)生產(chǎn)數(shù)百種OTC藥品,并通過多級分銷商體系在全國進行銷售。為了滿足企業(yè)復雜的經(jīng)營業(yè)務,供應鏈管理十分重要。該企業(yè)的供應鏈可以抽象為物料流和信息流,兩者統(tǒng)稱為產(chǎn)銷協(xié)同鏈條,具體如下:
物料流:原料倉庫-生產(chǎn)線-成品倉庫-物流-渠道倉庫-銷售。
信息流:需求預測-渠道訂單-總部計劃-生產(chǎn)計劃。
該企業(yè)產(chǎn)銷協(xié)同鏈條面臨以下問題:
(1)產(chǎn)銷協(xié)同管理鏈條不同環(huán)節(jié)數(shù)據(jù)未打通。
(2)管理環(huán)節(jié)彼此獨立,整個供產(chǎn)銷協(xié)同執(zhí)行過程預警信息不統(tǒng)一。
(3)銷售預測不夠快速和準確,供銷協(xié)同動態(tài)調(diào)整不夠快速。
針對第三點問題,實施項目的解決方案為基于歷史銷售和庫存數(shù)據(jù)建立銷量預測模型,以大幅擴展進行銷量預測的品規(guī)范圍,并且提供更加準確和更高頻率的預測為目標。具體而言,由于該企業(yè)的最細管理粒度為地區(qū)-門店-品類-品規(guī),我們需要對超過90,000個時間序列進行建模;預測頻率為月度;預測周期為3-16個月。
2. 方案和效果
上述需求完全符合第三章節(jié)中描述的銷量預測技術(shù)挑戰(zhàn),因此我們按照該章節(jié)提供的解決方案設計項目中的建模策略:我們對全部時間序列進行聯(lián)合建模,對每個預測目標時間分別建立模型,并使用Hurdle Model應對間歇性需求問題。特征方面,我們使用基于銷量、庫存、營銷政策等類型數(shù)據(jù)衍生出的數(shù)百個特征。算法方面,我們采用適合結(jié)構(gòu)化數(shù)據(jù)并且高效的LightGBM。
利用時序交叉驗證方法(Time-series crossvalidation),我們驗證模型在歷史數(shù)據(jù)上的MAD Mean Ratio表現(xiàn),和采用預測模型之前的人工基準方法比較,模型在主要品規(guī)上降低了15%預測誤差,取得較好效果。
參考資料
[1] Hyndman, R.J.,& Athanasopoulos, G. (2018) Forecasting: principles and practice, 2ndedition, OTexts: Melbourne, Australia. OTexts.com/fpp2. Accessed on <2021-03-23>.
百分點數(shù)據(jù)科學實驗室成立于2015年,以“大數(shù)據(jù)科學+”為核心理念,致力于機器學習、深度學習及復雜統(tǒng)計理論方法的研究與創(chuàng)新,結(jié)合百分點科技集團業(yè)務優(yōu)勢,圍繞應急風險預測、產(chǎn)業(yè)分析、區(qū)域經(jīng)濟分析、環(huán)境監(jiān)測、消費者洞察、供應鏈優(yōu)化、設備故障監(jiān)測等業(yè)務場景,構(gòu)建數(shù)據(jù)科學算法模型,落地智能決策應用、開展產(chǎn)學研合作、培養(yǎng)數(shù)據(jù)科學人才等。以AI和BI為重要支撐,數(shù)據(jù)科學實驗室已服務數(shù)字城市、應急管理、生態(tài)環(huán)境、公共安全、零售、媒體出版、制造、汽車、金融等眾多行業(yè)客戶,幫助客戶降本增效和科學決策。