上一篇文章寫(xiě)到了安全庫(kù)存的理論算法,安全庫(kù)存的存在可以視為對(duì)現(xiàn)實(shí)的一種妥協(xié)缸棵,因?yàn)閷?duì)未來(lái)的需求預(yù)測(cè)不準(zhǔn)確舟茶,因?yàn)楣?yīng)鏈不可靠,因?yàn)榛刎浿芷谔L(zhǎng)堵第,而被迫設(shè)置安全庫(kù)存吧凉,以一定比例額外庫(kù)存的持有成本來(lái)對(duì)沖潛在的銷(xiāo)售損失,如果上述幾點(diǎn)能夠提升踏志,則安全庫(kù)存就能相應(yīng)的下降阀捅。
所以接下來(lái)總結(jié)一下供應(yīng)鏈中的需求預(yù)測(cè),需求預(yù)測(cè)并不等于銷(xiāo)售預(yù)測(cè)针余,它是在銷(xiāo)售預(yù)測(cè)的基礎(chǔ)上結(jié)合實(shí)際經(jīng)營(yíng)情況得出的綜合預(yù)估饲鄙,決定在什么時(shí)間(When)采買(mǎi)多少數(shù)量(Quantity),我先從銷(xiāo)售預(yù)測(cè)說(shuō)起圆雁,而提到銷(xiāo)售預(yù)測(cè)就必須先明確預(yù)測(cè)框架忍级。
預(yù)測(cè)框架 - 銷(xiāo)售預(yù)測(cè)所需要明確的約束條件
它至少應(yīng)該覆蓋以下幾個(gè)角度: 預(yù)測(cè)的目標(biāo), 預(yù)測(cè)的精度, 預(yù)測(cè)的對(duì)象, 預(yù)測(cè)的時(shí)間段, 預(yù)測(cè)的數(shù)據(jù)需求。
預(yù)測(cè)的目標(biāo): 預(yù)測(cè)是為了解決什么問(wèn)題? 是為了制定全年采購(gòu)計(jì)劃還是OTB伪朽,還是監(jiān)控日常運(yùn)營(yíng)或者其它什么目的?
此文的預(yù)測(cè)目標(biāo)是讓回貨決策更加精準(zhǔn)轴咱,在最合適的時(shí)間采買(mǎi)最合適的數(shù)量。
預(yù)測(cè)的精度: 銷(xiāo)售的變化有復(fù)雜的多方面原因的影響,我們基本不可能建立一個(gè)完美的模型將所有因子考慮在內(nèi)朴肺,預(yù)測(cè)的本質(zhì)就是不靠譜的窖剑,但是只要其結(jié)果能穩(wěn)定地比人工預(yù)測(cè)來(lái)的準(zhǔn)確,目標(biāo)也就達(dá)到了戈稿。所以要先通過(guò)歷史的回貨訂單數(shù)據(jù)復(fù)盤(pán)西土,來(lái)分析一下人工預(yù)測(cè)的準(zhǔn)確率,以此為基準(zhǔn)來(lái)衡量機(jī)器預(yù)測(cè)的效能器瘪。
接下來(lái)明確準(zhǔn)確率如何計(jì)算翠储,可以引入幾個(gè)回歸指標(biāo): MAD/RMSE/MAPE
中位絕對(duì)偏差 - Mean Absolute Deviation (MAD)
各數(shù)據(jù)與平均值的離差的絕對(duì)值的平均數(shù),對(duì)于數(shù)據(jù)集中異常值的處理比標(biāo)準(zhǔn)差更具有彈性橡疼,可以大大減少異常值對(duì)于數(shù)據(jù)集的影響
均方根誤差 - Root Mean Square of Error (RMSE)
描述預(yù)測(cè)值與實(shí)際值之間的偏差的離散程度
平均百分比誤差 - Mean Absolute Percent Error (MAPE)
MAPE是一個(gè)相對(duì)指標(biāo)援所,不僅僅考慮預(yù)測(cè)值與真實(shí)值的誤差,還考慮了誤差與真實(shí)值之間的比例
計(jì)算示例:
下圖是根據(jù)甜甜圈從周一到周五的預(yù)測(cè)銷(xiāo)售與實(shí)際銷(xiāo)售數(shù)據(jù)計(jì)算出來(lái)的三個(gè)指標(biāo)
MAD = 54/5 = 10.8
RMSE = sqrt(126.8) = 11.3
MAPE = 104%/5 = 21%
預(yù)測(cè)的對(duì)象: 預(yù)測(cè)的對(duì)象可以是大盤(pán)銷(xiāo)售欣除,區(qū)域銷(xiāo)售住拭,品類(lèi)銷(xiāo)售,單品銷(xiāo)售历帚,也可以是區(qū)域維度滔岳,品類(lèi)緯度,時(shí)間維度在各種粒度上的組合挽牢。
這里界定的對(duì)象是大盤(pán)頭部單品銷(xiāo)售谱煤,即針對(duì)銷(xiāo)量最高的頭部商品進(jìn)行預(yù)測(cè),前十分一的暢銷(xiāo)sku寬度已經(jīng)能貢獻(xiàn)一半的銷(xiāo)售禽拔,而長(zhǎng)尾商品日均銷(xiāo)過(guò)低刘离,預(yù)測(cè)誤差過(guò)大且價(jià)值也不大。最后還要考慮商品的交付周期(Lead Time)和生命周期(Life Cycle)睹栖,我選擇的是生命周期較長(zhǎng)的交付周期一個(gè)月左右的百貨類(lèi)商品硫惕。
一般來(lái)說(shuō),預(yù)測(cè)粒度聚合度越高則結(jié)果越靠譜野来,預(yù)測(cè)品類(lèi)銷(xiāo)售比預(yù)測(cè)單品銷(xiāo)售靠譜恼除,預(yù)測(cè)區(qū)域銷(xiāo)售比預(yù)測(cè)單店銷(xiāo)售靠譜,預(yù)測(cè)一周銷(xiāo)售比預(yù)測(cè)一天銷(xiāo)售靠譜曼氛。最細(xì)的力度是單店單品單日的預(yù)測(cè)豁辉,這基本就是屬于占卜算卦的范疇了。
預(yù)測(cè)的時(shí)間段: 預(yù)測(cè)有短期搪锣,中期秋忙,長(zhǎng)期,短期最多不超過(guò)一年构舟。針對(duì)供應(yīng)鏈需求的預(yù)測(cè)可以選取不同商品的交付周期作為預(yù)測(cè)時(shí)間段灰追,暫定我要預(yù)測(cè)的是單個(gè)商品未來(lái)一個(gè)月的銷(xiāo)售堵幽。下圖是時(shí)間段和目的之間的完整對(duì)應(yīng)關(guān)系:
預(yù)測(cè)的數(shù)據(jù)需求: 要求商品有一年的銷(xiāo)售數(shù)據(jù)且覆蓋一百個(gè)以上的門(mén)店。
商品銷(xiāo)量變化的誘因
銷(xiāo)售預(yù)測(cè)不是一個(gè)純技術(shù)的算法問(wèn)題弹澎,好的預(yù)測(cè)模型需要對(duì)業(yè)務(wù)邏輯有清晰深刻的洞察朴下,這好比我們?cè)谇蠼庖粋€(gè)多元函數(shù),理解業(yè)務(wù)能幫助我們找到函數(shù)到底有哪些輸入項(xiàng)苦蒿,而算法的選擇只是幫我們更快更準(zhǔn)的解出這個(gè)方程殴胧,如果連input都沒(méi)搞清楚,算法再精妙也得不出正確的output佩迟。
思考這個(gè)問(wèn)題的時(shí)候可以先用一批商品銷(xiāo)售數(shù)據(jù)(可比店范圍內(nèi))生成趨勢(shì)圖進(jìn)行觀察团滥,猜測(cè)可能的原因:
Case 1: 下圖商品的銷(xiāo)售在春節(jié)后呈現(xiàn)比較穩(wěn)定的脈沖波形在矩形內(nèi)震蕩,周期性很規(guī)律报强,高點(diǎn)都是周末兩日的銷(xiāo)售灸姊。供應(yīng)鏈的鋸齒波節(jié)奏和波長(zhǎng)也相對(duì)節(jié)奏穩(wěn)定,表現(xiàn)不錯(cuò)秉溉,需求預(yù)測(cè)也相對(duì)容易力惯。
Case 2: 下圖的商品在八月中上旬的銷(xiāo)售明顯出現(xiàn)一段低洼,因?yàn)榭倐}(cāng)庫(kù)存從七月中開(kāi)始缺貨召嘶,水位觸底后未能及時(shí)反彈父晶,鋪店數(shù),門(mén)店庫(kù)存弄跌,銷(xiāo)售均快速下滑甲喝。另外六月一號(hào)出現(xiàn)一個(gè)spike, 因?yàn)橥婢咂奉?lèi)在兒童節(jié)(同時(shí)也是周六)表現(xiàn)會(huì)特別突出,可以是平日周六的兩倍以上铛只。
Case 3: 這個(gè)商品在六月進(jìn)入了生命周期尾聲俺猿,估計(jì)已經(jīng)被打上了淘汰標(biāo)簽,可能有新款棉簽作為替代格仲,最后一次回貨入倉(cāng)在五月底,因?yàn)榛刎洈?shù)量很高诵冒,因此銷(xiāo)售則從八月才開(kāi)始延后下滑凯肋。
總結(jié)一下主要的歸因如下:
外因
a. 行業(yè)趨勢(shì)的變化或者商品流行度的變化
b. 節(jié)假日的周期性波動(dòng),包括公眾假期和周末
c. 季節(jié)性因素
內(nèi)因
d. 缺貨導(dǎo)致的影響汽馋,可能是補(bǔ)貨單導(dǎo)致的總倉(cāng)缺貨侮东,也可能是配發(fā)邏輯導(dǎo)致的門(mén)店缺貨
e. 經(jīng)營(yíng)規(guī)模的變化例如開(kāi)店和閉店
f. 商品生命周期,商品進(jìn)入淘汰期不再回貨或者有新的主推替代款(不過(guò)預(yù)淘汰款其實(shí)也不用預(yù)測(cè)銷(xiāo)量了)
g. 經(jīng)營(yíng)策略的變化豹芯,品類(lèi)占比和寬度的規(guī)劃發(fā)生變更
h. 促銷(xiāo)活動(dòng)引發(fā)的銷(xiāo)量變化
i. 營(yíng)銷(xiāo)推廣計(jì)劃帶來(lái)的客流變化或者單品熱度變化
以上這些因素對(duì)單品銷(xiāo)量影響對(duì)于預(yù)測(cè)來(lái)說(shuō)應(yīng)該比算法的選型還要重要的多悄雅,需決定哪些歸因是我們能夠自動(dòng)化融入模型的。
接下來(lái)了解一下目前實(shí)際運(yùn)營(yíng)過(guò)程中對(duì)于回貨數(shù)量的判斷邏輯
1. 對(duì)銷(xiāo)售的預(yù)測(cè)基本就是拿商品過(guò)去[28天日均銷(xiāo)]作為參考再加上人工決斷
這樣的估算方式對(duì)于銷(xiāo)售預(yù)測(cè)來(lái)說(shuō)铁蹈,需要考慮未來(lái)的某個(gè)時(shí)間段內(nèi)有多少個(gè)周末宽闲,有沒(méi)有節(jié)假日,有沒(méi)有促銷(xiāo)活動(dòng),過(guò)去銷(xiāo)售趨勢(shì)是在上升還是下滑(雖然兩者的日均銷(xiāo)可能一樣)容诬,依靠人工判斷精度極難保證娩梨。
2. 下單時(shí)機(jī)的計(jì)算公式是[返單生產(chǎn)周期+保有天數(shù)+內(nèi)部流程 - 當(dāng)前庫(kù)存的周轉(zhuǎn)天數(shù)]
庫(kù)存周轉(zhuǎn)天數(shù)是否準(zhǔn)確取決于對(duì)未來(lái)一段時(shí)間需求預(yù)估的進(jìn)度。
3. 決策的頻次是一周一次览徒,每周檢查一下所有商品的銷(xiāo)售與庫(kù)存變化決定是否要補(bǔ)貨
如果系統(tǒng)自動(dòng)化計(jì)算完全可以將每周一次縮減到每天一次
4. 下單深度是在[下單天數(shù)*預(yù)測(cè)日均銷(xiāo)*鋪貨店數(shù)]與[最小起訂量]兩者間取大值狈定。
店鋪的單品銷(xiāo)量差異明顯,如果僅以鋪貨門(mén)店的數(shù)量來(lái)推導(dǎo)下單數(shù)量就比較粗獷了习蓬∨κ玻可以初步細(xì)分一下,針對(duì)品類(lèi)和店群維度計(jì)算出一個(gè)店群品類(lèi)銷(xiāo)售指數(shù)作為權(quán)重在來(lái)推算需求總量躲叼。
需求預(yù)測(cè)模型如何完善
1. 引入日系數(shù)
可以根據(jù)完整自然年的銷(xiāo)售數(shù)據(jù)測(cè)算出每天在全年的銷(xiāo)售占比芦缰,這應(yīng)該能覆蓋公眾假期和周末帶來(lái)的銷(xiāo)售波動(dòng)影響。如果銷(xiāo)售數(shù)據(jù)拆到品類(lèi)押赊,也能覆蓋季節(jié)性影響饺藤。
商品在一個(gè)自然年中的銷(xiāo)量走勢(shì)由隨機(jī)波動(dòng)+周期性波動(dòng)+增長(zhǎng)趨勢(shì)擬合而成,我們可以把周期性因子提取出來(lái)生成日系數(shù)流礁,這是一個(gè)時(shí)間序列的分解(Decomposition)過(guò)程涕俗。對(duì)于單品銷(xiāo)售預(yù)測(cè)這個(gè)場(chǎng)景來(lái)說(shuō),日系數(shù)要拆到最小類(lèi)目上神帅,比如針對(duì)牙刷就要提取口腔清潔品類(lèi)的日系數(shù)再姑。
2. 在訓(xùn)練集中找到異常缺貨時(shí)段,修復(fù)數(shù)據(jù)將缺貨損失的銷(xiāo)售還原
采用有效日均銷(xiāo)進(jìn)行修復(fù)減少鋪店和單店庫(kù)存不足最小陳列量的銷(xiāo)售損失找御。
3. 剔除離群點(diǎn)元镀,明顯異常的單日數(shù)據(jù)要消除
異常數(shù)據(jù)最有可能是團(tuán)購(gòu)大單帶來(lái)的銷(xiāo)量暴增,可能是區(qū)域性斷網(wǎng)影響收銀之類(lèi)帶來(lái)的銷(xiāo)售下滑霎桅。
4. 引入店群品類(lèi)銷(xiāo)售指數(shù)
簡(jiǎn)單的用計(jì)劃鋪店數(shù)乘以日均銷(xiāo)只關(guān)注了門(mén)店的數(shù)量卻忽略了每個(gè)門(mén)店對(duì)于某商品銷(xiāo)量的巨大差異栖疑,可以針對(duì)單品所屬的品類(lèi)來(lái)計(jì)算歷史銷(xiāo)售數(shù)據(jù)中每個(gè)門(mén)店的品類(lèi)銷(xiāo)售指數(shù),以此進(jìn)行店群劃分滔驶,計(jì)算每個(gè)店群的單品日均銷(xiāo)遇革,但是未來(lái)要鋪貨的門(mén)店和歷史有此單品銷(xiāo)售的門(mén)店是不一樣的,所以計(jì)劃鋪貨的目標(biāo)門(mén)店可以再次用品類(lèi)銷(xiāo)售指數(shù)分群揭糕,每個(gè)店群內(nèi)的門(mén)店數(shù)乘以店群?jiǎn)纹啡站N(xiāo)萝快,再累加起來(lái)得出全局的預(yù)估銷(xiāo)量。
5. 打通全年的營(yíng)銷(xiāo)日歷和促銷(xiāo)日歷著角,前提是營(yíng)銷(xiāo)計(jì)劃和促銷(xiāo)計(jì)劃至少有三個(gè)月的提前量揪漩,根據(jù)活動(dòng)等級(jí)可以人為設(shè)一個(gè)權(quán)重參數(shù)。
6. 打通渠道的開(kāi)店與閉店計(jì)劃吏口,以新開(kāi)店預(yù)估的銷(xiāo)售目標(biāo)和老店的實(shí)際銷(xiāo)售數(shù)據(jù)來(lái)計(jì)算銷(xiāo)售占比權(quán)重奄容。
以上1/2/3/4比較容易實(shí)施冰更,5/6依賴(lài)于成熟的運(yùn)營(yíng)體系,能前瞻的制定好較為精確的季度促銷(xiāo)日歷/營(yíng)銷(xiāo)日歷和季度的開(kāi)閉店計(jì)劃嫩海,且實(shí)現(xiàn)這些數(shù)據(jù)的系統(tǒng)化和一體化冬殃。
References:
Introduction to Demand Planning & Forecasting
Extracting Seasonality and Trend from Data: Decomposition Using R