盒馬圍繞用戶生活全場(chǎng)景發(fā)展出了豐富的業(yè)態(tài),提供了線上線下一體化的高品質(zhì)購(gòu)物體驗(yàn)。用戶可以通過移動(dòng)互聯(lián)網(wǎng)便捷下單,享受最快30分鐘送到家的服務(wù)。為了追求極致的新鮮體驗(yàn),盒馬還推出了只售一天的日日鮮系列商品,涵蓋牛奶、蔬菜、肉禽等日常消費(fèi)品類。即時(shí)的生鮮服務(wù)非常切合消費(fèi)者需求,但對(duì)供應(yīng)鏈提出了很高的要求。對(duì)此,盒馬供應(yīng)鏈算法根據(jù)零售場(chǎng)景特點(diǎn),搭建了包括預(yù)測(cè)、庫(kù)存、營(yíng)銷和價(jià)格在內(nèi)的算法能力。
銷量預(yù)測(cè)作為供應(yīng)鏈域的核心算法,目前已提供了包括盒馬鮮生、云超、X會(huì)員店、盒馬鄰里等業(yè)態(tài)在內(nèi)的商品銷量預(yù)測(cè)能力。在全自動(dòng)補(bǔ)貨中同時(shí)服務(wù)于盒馬、盒小馬、天貓校園、逸刻等多個(gè)商家的日常訂貨,在提升人效、降低缺貨和損耗方面發(fā)揮了重要的價(jià)值。
銷量預(yù)測(cè)從技術(shù)角度來看是一個(gè)重要且具有挑戰(zhàn)的問題。首先商品的銷量會(huì)受很多因素的影響,除了時(shí)序性規(guī)律以外,還包括促銷、調(diào)價(jià)、天氣、季節(jié)性、商品狀態(tài)等多方面因素;其次,銷量預(yù)測(cè)的消費(fèi)場(chǎng)景通常是很多的,除了應(yīng)用在全自動(dòng)補(bǔ)貨之外,還可以作為一種基礎(chǔ)能力賦能更多的項(xiàng)目,例如生意計(jì)劃、SPT、品類規(guī)劃、庫(kù)配一體化等。另外,銷量預(yù)測(cè)所使用的數(shù)據(jù)范圍廣,上游依賴多,技術(shù)鏈路長(zhǎng),對(duì)于算法整體鏈路的穩(wěn)定性也提出了很高的要求。
因此盒馬的銷量預(yù)測(cè)重點(diǎn)圍繞“預(yù)測(cè)結(jié)果準(zhǔn),整體鏈路穩(wěn),業(yè)務(wù)響應(yīng)快”的思路進(jìn)行搭建和迭代,本文主要聚焦于盒馬銷量預(yù)測(cè)的整體框架介紹。
盒馬銷量預(yù)測(cè)的主要特點(diǎn)可以歸納為多業(yè)態(tài)、多品類、多場(chǎng)景三個(gè)方面:在業(yè)態(tài)上重點(diǎn)支持了盒馬鮮生、盒馬云超、盒馬鄰里,同時(shí)也包含一些外部商家;在品類上覆蓋了標(biāo)品、生鮮、餐飲下的多個(gè)類目,商品豐富度高;在場(chǎng)景方面,主要針對(duì)影響商品銷量的關(guān)鍵因素進(jìn)行單獨(dú)的建模和優(yōu)化。
考慮到盒馬業(yè)態(tài)的多樣性,為了讓銷量預(yù)測(cè)既能貼近業(yè)務(wù)又能有一定的通用性,所以在流程上進(jìn)行了劃分:在數(shù)據(jù)預(yù)處理環(huán)節(jié)和結(jié)果后處理環(huán)節(jié)會(huì)盡量貼近業(yè)務(wù)特點(diǎn),讓訓(xùn)練數(shù)據(jù)和預(yù)測(cè)結(jié)果能更好的適配業(yè)務(wù)場(chǎng)景;然后在算法模型的設(shè)計(jì)上更加注重結(jié)構(gòu)的通用性,這樣通過圈選特定數(shù)據(jù)單獨(dú)訓(xùn)練就能夠快速地支持到不同業(yè)態(tài)和場(chǎng)景,同時(shí)也能提高開發(fā)效率。
銷量預(yù)測(cè)的整體技術(shù)路線可以分成以下14個(gè)步驟,其中前半部分是對(duì)問題的分析定義,以及數(shù)據(jù)的各種預(yù)處理,目的是將建模過程中的類似工作進(jìn)行統(tǒng)一收口,保證數(shù)據(jù)口徑的一致性,方便后續(xù)模型的開發(fā);中間部分是各種預(yù)測(cè)模型的構(gòu)造;后半部分是對(duì)模型結(jié)果的校驗(yàn)和融合,以及根據(jù)業(yè)務(wù)邏輯進(jìn)行的后處理,目的是提高預(yù)測(cè)結(jié)果的實(shí)用性和靈活性,實(shí)現(xiàn)對(duì)業(yè)務(wù)需求的快速響應(yīng)。具體模塊和對(duì)應(yīng)的介紹章節(jié)如下:
整個(gè)流程把數(shù)據(jù)、模型和業(yè)務(wù)規(guī)則進(jìn)行解耦,邏輯上形成總-分-總的結(jié)構(gòu),各部分主要內(nèi)容如下。
信息的準(zhǔn)確性和完整性對(duì)于預(yù)測(cè)模型的效果起到了至關(guān)重要的作用,因此需要精細(xì)打磨和持續(xù)迭代。為了保證數(shù)據(jù)口徑的一致性,需要對(duì)建模過程中的數(shù)據(jù)處理相關(guān)工作進(jìn)行統(tǒng)一收口,包括數(shù)據(jù)源選擇、基礎(chǔ)數(shù)據(jù)加工、數(shù)據(jù)業(yè)務(wù)處理、數(shù)據(jù)異常處理、以及通用特征提取。這部分最終沉淀下來的是標(biāo)準(zhǔn)化的特征寬表,便于后續(xù)模型的使用。數(shù)據(jù)處理各步驟的具體內(nèi)容如下:
需要注意的是,基礎(chǔ)數(shù)據(jù)加工和數(shù)據(jù)業(yè)務(wù)(異常)處理的區(qū)別在于,前者生成的是客觀數(shù)據(jù),即只會(huì)在數(shù)倉(cāng)基礎(chǔ)上對(duì)數(shù)據(jù)進(jìn)行拆分、匯總、打標(biāo)等操作,不會(huì)改變?cè)夹畔?;而后者生成的是主觀數(shù)據(jù),例如經(jīng)過缺貨補(bǔ)全將實(shí)際銷量由0變成10,目的是方便模型更好地進(jìn)行學(xué)習(xí),提升預(yù)測(cè)結(jié)果的準(zhǔn)確性和穩(wěn)定性。
該環(huán)節(jié)需要結(jié)合具體的業(yè)務(wù)場(chǎng)景進(jìn)行處理,目的是讓數(shù)據(jù)能更好地適配各種業(yè)務(wù)場(chǎng)景,提高最終銷量預(yù)測(cè)結(jié)果的實(shí)用性。下面列舉了一些典型場(chǎng)景:
異常值檢測(cè)可以分為新穎點(diǎn)檢測(cè)(Novelty Detection)和離群點(diǎn)檢測(cè)(Outlier Detection)。新穎點(diǎn)檢測(cè)假設(shè)訓(xùn)練數(shù)據(jù)中不包含異常值,即通過學(xué)習(xí)歷史數(shù)據(jù),使模型學(xué)習(xí)“正常數(shù)據(jù)”的特征及其分布,并且以此檢測(cè)新數(shù)據(jù)是否符合“正常數(shù)據(jù)”的特征。例如在One-Class SVM中尋找出數(shù)據(jù)的邊界,并以此邊界作為衡量標(biāo)準(zhǔn),在邊界外的數(shù)據(jù)點(diǎn)就認(rèn)為是異常值。離群點(diǎn)檢測(cè)假設(shè)訓(xùn)練數(shù)據(jù)中包含異常值,即通過模型找到訓(xùn)練數(shù)據(jù)的中心模式,并且把訓(xùn)練數(shù)據(jù)中遠(yuǎn)離中心模式的數(shù)據(jù)點(diǎn)定義為異常數(shù)據(jù)。例如Isolation Forest中將分布稀疏且離高密度群體較遠(yuǎn)的點(diǎn)視為異常點(diǎn),然后通過對(duì)數(shù)據(jù)空間進(jìn)行不斷切割確定孤立點(diǎn)。
現(xiàn)實(shí)場(chǎng)景中,由于數(shù)據(jù)采集或者業(yè)務(wù)操作等原因,數(shù)據(jù)中往往存在缺失和斷點(diǎn)的情況。為了確保建模過程中時(shí)序數(shù)據(jù)的完整性,減少后續(xù)銷量預(yù)測(cè)的badcase,需要對(duì)數(shù)據(jù)中的缺失值進(jìn)行填充,常見的缺失值補(bǔ)全方法有三類:
盒馬缺失值補(bǔ)全的整體思路如下:方法上使用了GBDT和GAN兩類模型,并根據(jù)當(dāng)日的缺貨時(shí)段數(shù)據(jù)、促銷和價(jià)格信息,以及歷史相同時(shí)段的銷量等信息分別對(duì)APP和POS渠道的缺貨時(shí)段銷量進(jìn)行補(bǔ)全(下圖給出了兩個(gè)商品補(bǔ)全的例子)。此外,基于補(bǔ)全銷量和當(dāng)日價(jià)格信息可進(jìn)一步預(yù)估缺貨造成的GMV損失,該數(shù)據(jù)可提供給業(yè)務(wù)進(jìn)行缺貨影響分析:
其中GBDT屬于監(jiān)督學(xué)習(xí)方法,主要思路是篩選當(dāng)日不缺貨的樣本,隨機(jī)生成缺貨打點(diǎn)時(shí)段,并將對(duì)應(yīng)時(shí)段的真實(shí)銷量作為label,然后用歷史相關(guān)數(shù)據(jù)構(gòu)造特征進(jìn)行模型訓(xùn)練。跟統(tǒng)計(jì)方法相比,GBDT的補(bǔ)全準(zhǔn)確率能有大幅提升。
GAN屬于無監(jiān)督學(xué)習(xí)方法,其在沒有l(wèi)abel的數(shù)據(jù)集中也能適用,因此通用性更強(qiáng)。這里采用了SSGAN模型,SSGAN中包含三個(gè)角色:生成器的任務(wù)是輸入包含缺失值的時(shí)間序列,輸出補(bǔ)全后的完整時(shí)序;判別器的任務(wù)是判斷每個(gè)時(shí)刻的數(shù)據(jù)是真實(shí)的還是算法生成的;分類器的任務(wù)是對(duì)原始時(shí)序和算法補(bǔ)全的時(shí)序進(jìn)行分類打標(biāo),幫助生成器關(guān)注于缺失時(shí)刻的補(bǔ)全。訓(xùn)練的過程主要是讓生成器和判別器進(jìn)行對(duì)抗,最終希望生成器能夠產(chǎn)生以假亂真的補(bǔ)全數(shù)據(jù)。考慮到GAN的訓(xùn)練需要多個(gè)模型共同參與,訓(xùn)練過程不穩(wěn)定,所以將模型調(diào)優(yōu)拆解成了4個(gè)步驟,并對(duì)網(wǎng)絡(luò)結(jié)構(gòu)、訓(xùn)練策略、模塊選擇等進(jìn)行了優(yōu)化。從補(bǔ)全效果來看,SSGAN的準(zhǔn)確率比GBDT更高,并且將兩類模型融合后能進(jìn)一步提升準(zhǔn)確性和穩(wěn)定性,具體內(nèi)容如下:
特征工程在銷量預(yù)測(cè)中,特別是在基于傳統(tǒng)機(jī)器學(xué)習(xí)的建模方法中是比較關(guān)鍵的一個(gè)步驟。這部分往往需要結(jié)合數(shù)據(jù)的內(nèi)在規(guī)律和業(yè)務(wù)場(chǎng)景的經(jīng)驗(yàn)進(jìn)行處理。目前盒馬預(yù)測(cè)使用的基礎(chǔ)特征包括商品屬性、門店屬性、促銷信息、日期信息、天氣信息、流量信息、歷史銷量和競(jìng)對(duì)信息八大類。
在基礎(chǔ)特征之上進(jìn)行空間維度的交叉組合,以及時(shí)間維度對(duì)齊操作可以生成各種衍生特征。進(jìn)一步對(duì)衍生特征進(jìn)行加權(quán)組合可產(chǎn)生更加豐富的特征,交叉的因素越多,特征也越復(fù)雜,涵蓋的信息就越多。最后再通過特征重要性評(píng)估方法篩選出較為重要的特征進(jìn)行使用。
盒馬銷量預(yù)測(cè)涵蓋了多種方法與多種場(chǎng)景,按照方法維度可以分為業(yè)務(wù)規(guī)則模型、傳統(tǒng)機(jī)器學(xué)習(xí)模型、深度時(shí)序模型、時(shí)空?qǐng)D網(wǎng)絡(luò)模型四大類。每類方法具有各自的特點(diǎn),通過相互結(jié)合,一方面可以確保業(yè)務(wù)需求的快速響應(yīng),提高應(yīng)對(duì)各種問題的靈活性,另一方面可以兼顧前沿技術(shù)的探索和建模方法的創(chuàng)新。
按照?qǐng)鼍熬S度可以劃分為替代品、時(shí)令品、日清品、促銷、流量、X會(huì)員等一系列場(chǎng)景,細(xì)分場(chǎng)景進(jìn)行建模,一方面可以有效提高特定場(chǎng)景下的預(yù)測(cè)準(zhǔn)確率,更好的支持業(yè)務(wù)應(yīng)用,另一方面有助于提煉盒馬銷量預(yù)測(cè)的算法特色。
盒馬預(yù)測(cè)算法的迭代路徑如下,本節(jié)主要對(duì)銷量預(yù)測(cè)的常見方法進(jìn)行介紹。
傳統(tǒng)時(shí)序方法主要是在確定數(shù)學(xué)模型的基礎(chǔ)上求解出模型參數(shù),并利用求解出的模型進(jìn)行預(yù)測(cè)。常見的模型例如MA(Moving Average)、ARIMA(Auto-Regressive Integrated Moving Average)、Prophet等。
MA是一個(gè)實(shí)現(xiàn)簡(jiǎn)單且效果往往還不錯(cuò)的方法,因此經(jīng)常作為baseline與其他方法進(jìn)行比較。例如SMA(Simple Moving Average)是直接對(duì)歷史一段時(shí)間的觀測(cè)值求等權(quán)重均值,但該方法存在的問題是滯后性較為明顯,對(duì)近期數(shù)據(jù)不夠敏感。因此進(jìn)一步的改進(jìn)思路是對(duì)歷史數(shù)據(jù)求加權(quán)平均,即距離當(dāng)前時(shí)間越近的數(shù)據(jù)權(quán)重越高。WMA(Weighted Moving Average)和EMA(Exponential Moving Average)均屬于此類方法,區(qū)別主要在于WMA的權(quán)重是按照線性遞減,而EMA是按照指數(shù)遞減。ARIMA在傳統(tǒng)時(shí)序方法中有著很高的知名度,其主要過程是先通過d階差分運(yùn)算將非平穩(wěn)時(shí)間序列轉(zhuǎn)化為平穩(wěn)時(shí)間序列,然后再根據(jù)平穩(wěn)時(shí)序的自相關(guān)系數(shù)ACF和偏自相關(guān)系數(shù)PACF確定自回歸項(xiàng)p和移動(dòng)平均項(xiàng)數(shù)q,并對(duì)模型誤差進(jìn)行隨機(jī)性檢驗(yàn)確定最終模型。Prophet是Facebook在2017年開源的模型,其主要思路是對(duì)時(shí)間序列進(jìn)行分解(包括趨勢(shì)項(xiàng)、季節(jié)項(xiàng)、節(jié)假日項(xiàng)和誤差項(xiàng))。其中趨勢(shì)項(xiàng)表示時(shí)序非周期性的變化趨勢(shì),季節(jié)項(xiàng)表示周期性變化(一般以周或年為單位),節(jié)假日項(xiàng)表示時(shí)序中存在的特殊節(jié)日。Prophet就是通過擬合這幾項(xiàng),然后把它們累加起來作為最終的預(yù)測(cè)值。
傳統(tǒng)時(shí)序方法的主要優(yōu)點(diǎn)是建模過程簡(jiǎn)單,并且可解釋性強(qiáng)。但局限性在于無法有效利用外生變量,信息存在缺失,因此預(yù)測(cè)準(zhǔn)確率難以達(dá)到比較高的水平;另外在使用時(shí)需要對(duì)每一條時(shí)序單獨(dú)擬合和預(yù)測(cè),對(duì)于數(shù)據(jù)量較大的場(chǎng)景,在執(zhí)行上需要花費(fèi)很長(zhǎng)的時(shí)間。
機(jī)器學(xué)習(xí)方法是銷量預(yù)測(cè)普遍采用的建模方式,常見的模型包括線性回歸、支持向量回歸、決策樹模型(GBDT、LightGBM)等。其基本流程包括數(shù)據(jù)集構(gòu)造+特征工程+模型訓(xùn)練,并通過監(jiān)督學(xué)習(xí)從歷史數(shù)據(jù)中得到特征與目標(biāo)之間的映射關(guān)系,從而進(jìn)行時(shí)序預(yù)測(cè)。
這類方法彌補(bǔ)了傳統(tǒng)時(shí)序模型無法考慮外生變量的問題,在信息豐富的情況下模型效果能有顯著提升,并且能夠應(yīng)對(duì)大數(shù)據(jù)量的場(chǎng)景。不過在這類方法中,特征工程的質(zhì)量往往決定了預(yù)測(cè)模型的上限,因此需要花費(fèi)大量時(shí)間在特征構(gòu)造環(huán)節(jié)。特征工程要求算法同學(xué)對(duì)業(yè)務(wù)場(chǎng)景有很好的理解,并能構(gòu)造出和目標(biāo)具有較高相關(guān)性的特征,這對(duì)于預(yù)測(cè)準(zhǔn)確率的提升會(huì)帶來直接幫助。另外為了確保預(yù)測(cè)結(jié)果的穩(wěn)定性,特征構(gòu)造時(shí)還需要考慮不同場(chǎng)景的對(duì)齊策略,特征值計(jì)算時(shí)的降級(jí)邏輯,特殊時(shí)間點(diǎn)的特征轉(zhuǎn)換,以及歷史特殊日期的自動(dòng)還原或剔除等。除了人工構(gòu)造特征的方式之外,也可以利用一些特征自動(dòng)生成工具來產(chǎn)生更多的特征,例如tsfresh、Featuretools等。通常情況下,將自動(dòng)生成的特征和人工經(jīng)驗(yàn)的特征進(jìn)行結(jié)合,效果會(huì)更佳。
一個(gè)值得注意的點(diǎn)是,不同于傳統(tǒng)時(shí)序方法對(duì)每一條時(shí)序單獨(dú)構(gòu)建模型來預(yù)測(cè),機(jī)器學(xué)習(xí)方法是把多種數(shù)據(jù)放在一起訓(xùn)練,得到一個(gè)全局的模型。但在實(shí)際場(chǎng)景中,不同時(shí)序表現(xiàn)出來的規(guī)律可能本身就不一樣,例如不同類目或不同品牌的商品銷量呈現(xiàn)不同的趨勢(shì)性和周期性。因此將所有數(shù)據(jù)放在一起訓(xùn)練可能導(dǎo)致整體預(yù)測(cè)效果下降,所以通常還需要對(duì)數(shù)據(jù)進(jìn)行適當(dāng)分層后,再對(duì)每層數(shù)據(jù)單獨(dú)訓(xùn)練模型。
基于深度學(xué)習(xí)的時(shí)序預(yù)測(cè)方法是近年來的研究熱點(diǎn),由于深度學(xué)習(xí)在語音識(shí)別、計(jì)算機(jī)視覺和自然語言處理等領(lǐng)域已取得重要突破,相關(guān)方法也應(yīng)用到了時(shí)間序列預(yù)測(cè)上。其主要思路是采用端到端的學(xué)習(xí)方式,輸入較為原始的數(shù)據(jù),并通過不同模型結(jié)構(gòu)自動(dòng)提取特征進(jìn)行學(xué)習(xí)。這類方法的優(yōu)化重點(diǎn)主要放在模型結(jié)構(gòu)設(shè)計(jì)和參數(shù)調(diào)優(yōu)上面。下面列舉了一些經(jīng)典的深度時(shí)序模型,包括WaveNet、DeepAR、N-Beats、TFT。
WaveNet是Google DeepMind在2016年提出的基于CNN結(jié)構(gòu)的模型,一般CNN應(yīng)用于長(zhǎng)序列的局限性在于卷積提取的是局部信息,想要擴(kuò)大感受野需要增大卷積核或增加模型層數(shù)。而WaveNet引入了空洞因果卷積(dilated causal convolution),一方面可以確保每個(gè)時(shí)刻不會(huì)接觸到未來的信息,另一方面通過跳過一定長(zhǎng)度的輸入,可以在不增大模型層數(shù)的情況下獲得更大感受野。DeepAR是Amazon在2017年提出的基于自回歸循環(huán)神經(jīng)網(wǎng)絡(luò)的概率預(yù)測(cè)模型,其學(xué)習(xí)的是概率分布的參數(shù),輸出為每個(gè)時(shí)刻目標(biāo)值的概率分布。DeepAR的一個(gè)亮點(diǎn)是可以在幾乎沒有歷史數(shù)據(jù)的情況下執(zhí)行冷啟動(dòng)預(yù)測(cè),但受限于RNN結(jié)構(gòu),對(duì)于較長(zhǎng)時(shí)間的周期季節(jié)等信息則難以補(bǔ)獲。N-BEATS是Bengio團(tuán)隊(duì)于2020年發(fā)表的基于時(shí)序分解思想的深度網(wǎng)絡(luò)模型,其基本計(jì)算單元是Block,多個(gè)Block通過堆疊形成一個(gè)Stack,整個(gè)模型就是由多個(gè)Stack進(jìn)一步堆疊而成。每個(gè)Block會(huì)輸出前向和后向殘差,后向殘差作為下一個(gè)Block的輸入進(jìn)行擬合,前向殘差之和作為對(duì)應(yīng)Stack的預(yù)測(cè)值,將所有stack的預(yù)測(cè)值求和便得到最終的預(yù)測(cè)結(jié)果。TFT是Google提出的多變量時(shí)間序列預(yù)測(cè)模型,其在輸入數(shù)據(jù)的處理和網(wǎng)絡(luò)結(jié)構(gòu)的設(shè)計(jì)上考慮較為全面。在數(shù)據(jù)處理方面,TFT采用Variable Selection Network計(jì)算每個(gè)特征的重要性,通過加權(quán)融合減少無關(guān)變量帶來的影響;另外對(duì)類別特征進(jìn)行單獨(dú)建模,能更加有效利用ID類信息。在網(wǎng)絡(luò)結(jié)構(gòu)方面,TFT同時(shí)考慮長(zhǎng)短周期的時(shí)序信息(LSTM提取局部時(shí)序信息,Self-attention提取長(zhǎng)期時(shí)序信息);并通過門控單元機(jī)制過濾掉不必要的模塊信息,對(duì)于不同數(shù)據(jù)集實(shí)現(xiàn)網(wǎng)絡(luò)結(jié)構(gòu)的自適應(yīng)。
總體來說,深度學(xué)習(xí)方法更加靈活,且端到端的學(xué)習(xí)方式能減少人工處理,具有更強(qiáng)的通用性。另外考慮到長(zhǎng)距離的信息在RNN這類模型中會(huì)被弱化或遺忘,且RNN不能并行計(jì)算,所以在實(shí)際場(chǎng)景中更多會(huì)采用基于attention的方法。另一個(gè)值得注意的點(diǎn)是,由于機(jī)器學(xué)習(xí)方法大多采用的是聚合特征,對(duì)于時(shí)序信息的把握不足,而深度時(shí)序模型在這方面有天然優(yōu)勢(shì),因此將深度時(shí)序模型和機(jī)器學(xué)習(xí)模型的結(jié)果進(jìn)行融合往往能進(jìn)一步提升效果。
一些場(chǎng)景中,數(shù)據(jù)在時(shí)間維度和空間維度并非獨(dú)立,算法一方面需要學(xué)習(xí)時(shí)間維度的相關(guān)性,另一方面也需要考慮不同時(shí)間序列在空間維度的關(guān)聯(lián)關(guān)系。例如在商品替代性場(chǎng)景中,當(dāng)某一款雞蛋降價(jià)或缺貨時(shí),會(huì)導(dǎo)致其他雞蛋的銷量出現(xiàn)波動(dòng);又或者在營(yíng)銷活動(dòng)配置場(chǎng)景中,每個(gè)商品所疊加的活動(dòng)類型,以及每個(gè)活動(dòng)的商品池范圍均會(huì)影響商品最終的到手價(jià)??紤]到上面提到的方法在這類情況下存在局限性,因此需要引入時(shí)空?qǐng)D網(wǎng)絡(luò)對(duì)具有空間相關(guān)性的時(shí)間序列進(jìn)行建模。時(shí)空?qǐng)D網(wǎng)絡(luò)方法目前已廣泛應(yīng)于交通規(guī)劃、行人軌跡預(yù)測(cè)、金融分析等領(lǐng)域,并且在盒馬的預(yù)測(cè)場(chǎng)景也取得了一些應(yīng)用,例如關(guān)聯(lián)替代性商品銷量預(yù)測(cè)模型和營(yíng)銷到手價(jià)預(yù)估模型。
目前較為常用的是STGAT模型,STGAT包含Encoder和Decoder兩部分,在Encoder中首先利用M-LSTM對(duì)歷史時(shí)序特征進(jìn)行編碼,得到每一個(gè)時(shí)刻的隱層特征;然后用GAT捕獲每一時(shí)刻關(guān)系圖中目標(biāo)sku與鄰居sku的空間關(guān)聯(lián)性;再將GAT輸出的隱層特征輸入G-LSTM進(jìn)行時(shí)序傳導(dǎo)。中間態(tài)是將M-LSTM和G-LSTM輸出的隱層特征和高斯噪聲Concat起來,加入高斯噪聲的目的是防止網(wǎng)絡(luò)過擬合。Decoder是一個(gè)雙層LSTM結(jié)構(gòu),下層D-LSTM將中間態(tài)的隱層狀態(tài)進(jìn)行傳導(dǎo),上層Cond-LSTM加入了商品外生變量在未來時(shí)刻的變化信息,并將前一步的輸出作為后一步的輸入,實(shí)現(xiàn)多步預(yù)測(cè)。
結(jié)果后處理從計(jì)算方式上面可以歸納為以下五種類型,本節(jié)會(huì)對(duì)其中的主要模塊進(jìn)行介紹:
由于業(yè)務(wù)場(chǎng)景和建模方法都具有多樣性,在兩者的疊加影響下往往就會(huì)出現(xiàn)預(yù)測(cè)模型的多樣性,例如下面列舉出來的盒馬銷量預(yù)測(cè)常規(guī)模型和特殊場(chǎng)景模型總共就有十多個(gè)。所以這部分重點(diǎn)需要考慮的是:
1)如何有效的使用這些模型,讓最終的預(yù)測(cè)結(jié)果能穩(wěn)定提升;
2)如何讓模型的管理更加便捷。這里主要從模型的融合策略和模型的上線流程兩個(gè)方面進(jìn)行設(shè)計(jì):
在模型的融合策略方面,首先是根據(jù)預(yù)測(cè)目標(biāo)篩選合適的模型組合,主要考慮的因素包括商品特性、是否特殊節(jié)假日、是否X會(huì)員日、是否有促銷活動(dòng)等。然后需要對(duì)模型的異常結(jié)果進(jìn)行識(shí)別和攔截,這里主要采用的方法包括:
1)對(duì)比不同模型的預(yù)測(cè)結(jié)果,通過投票機(jī)制淘汰明顯異常的模型;
2)對(duì)比同一個(gè)模型在當(dāng)前周期和上一周期預(yù)測(cè)同一天的波動(dòng)情況,對(duì)于出現(xiàn)異常波動(dòng)的模型進(jìn)行過濾;
3)基于歷史統(tǒng)計(jì)指標(biāo)的異常值過濾,例如均銷,方差,周同期值等。
最后是對(duì)多個(gè)模型的預(yù)測(cè)結(jié)果進(jìn)行融合,這里的方法包括基于固定權(quán)重的融合策略、基于歷史準(zhǔn)確率的融合策略,以及基于元學(xué)習(xí)的融合方法。
在模型的上線流程方面,需要考慮的問題包括:
1)降低維護(hù)成本,即減少每次增減模型在后處理環(huán)節(jié)的開發(fā)工作量;
2)能夠方便地對(duì)不同模型和不同處理策略進(jìn)行效果評(píng)估;
3)預(yù)測(cè)模型和后處理策略在上線過程中的風(fēng)險(xiǎn)控制。
具體做法是:首先需要選擇合適的數(shù)據(jù)結(jié)構(gòu)來保存所有模型結(jié)果,避免每次增減模型對(duì)下游表字段的頻繁變更,另外可以通過編寫統(tǒng)一的udf函數(shù)來實(shí)現(xiàn)各種策略,提高通用性。在新模型上線時(shí),首先會(huì)將其加入到離線全量結(jié)果表中,該表包含所有模型的結(jié)果,便于對(duì)不同模型和融合策略的效果進(jìn)行分析;接下來會(huì)篩選合適的模型和融合策略加入到離線仿真結(jié)果表中,該表按線上調(diào)度時(shí)間獲取模型結(jié)果,并通過消融實(shí)驗(yàn)和線上結(jié)果進(jìn)行對(duì)比,評(píng)估效果穩(wěn)定后再更新到線上。
盒馬商品銷量受季節(jié)性和特殊節(jié)假日的影響顯著,例如端午的粽子,冬至的餃子,圣誕節(jié)的牛排和紅酒,另外還包括各種應(yīng)季的水果蔬菜等。季節(jié)性和節(jié)假日這兩類場(chǎng)景的共同點(diǎn)在于:
1)消費(fèi)者行為存在較大不確定性,商品維度的銷量波動(dòng)大;
2)歷史近期數(shù)據(jù)無法反應(yīng)未來銷量趨勢(shì),需要考慮較長(zhǎng)時(shí)間的信息;
3)部分建模方法需要對(duì)歷史特殊點(diǎn)進(jìn)行平滑,避免對(duì)預(yù)測(cè)造成負(fù)面影響。
此外,兩者在結(jié)果上的不同點(diǎn)是:特殊節(jié)日的商品銷量呈現(xiàn)單點(diǎn)脈沖式變化,而季節(jié)性商品的銷量變化趨勢(shì)具有連續(xù)性,幅度相對(duì)平緩。下面列舉了常見的特殊日期:
針對(duì)季節(jié)性和節(jié)假日?qǐng)鼍埃惴ㄉ弦话阌袃煞N思路:
盒馬銷量預(yù)測(cè)對(duì)于季節(jié)性和節(jié)假日的處理方法結(jié)合了上面兩種思路,在后處理環(huán)節(jié)再次進(jìn)行調(diào)整的目的是讓預(yù)測(cè)結(jié)果更加靈活,可以快速響應(yīng)業(yè)務(wù)的需求,另外該方法也具有較好的解釋性。該環(huán)節(jié)引入了類目銷量預(yù)測(cè)的能力,原因是類目銷量預(yù)測(cè)的回看天數(shù)和預(yù)測(cè)天數(shù)均更長(zhǎng),能夠更好的反應(yīng)年維度的變化趨勢(shì),并且相較于sku維度銷量波動(dòng)大的問題,類目維度會(huì)更加穩(wěn)定。具體方法是首先計(jì)算類目銷量預(yù)測(cè)結(jié)果和商品預(yù)測(cè)結(jié)果聚合到類目后的差異,并計(jì)算出類目維度的調(diào)整系數(shù);然后對(duì)同類目下的商品進(jìn)行分層,并將類目系數(shù)按照分層拆分(例如頭部品爆發(fā)力度可能大于尾部品),從而兼顧不同商品分層下銷量爆發(fā)的差異性;最后就是將拆分后的系數(shù)作用在預(yù)測(cè)結(jié)果上。
在遇到降雨/降雪,或者是溫度突然下降的情況時(shí),盒馬的線上銷量往往會(huì)出現(xiàn)明顯增長(zhǎng),為了避免缺貨,算法需要提前感知未來的天氣情況,并在遇到特殊天氣時(shí)調(diào)整預(yù)測(cè)結(jié)果。從下圖的歷史數(shù)據(jù)統(tǒng)計(jì)來看,降雨主要集中在夏季的7-9月份,而降溫主要集中在11-2月份,并且這類天氣對(duì)于銷量有普遍的促進(jìn)作用。目前對(duì)于天氣的響應(yīng)方案結(jié)合了業(yè)務(wù)的實(shí)際處理經(jīng)驗(yàn),主要思路是統(tǒng)計(jì)每個(gè)門店歷史相似天氣情況下的類目銷量增長(zhǎng)情況,計(jì)算出類目維度的天氣系數(shù),然后在后處理階段作用到銷量預(yù)測(cè)結(jié)果上。
當(dāng)遇到特殊事件時(shí)往往需要人工介入處理。例如新冠疫情在全國(guó)各地頻發(fā),一方面業(yè)務(wù)需要手工干預(yù)接管補(bǔ)貨,并且協(xié)同供應(yīng)商、物流和采購(gòu)進(jìn)行攔截、改配和調(diào)撥等操作,工作量大且人手不足;另一方面算法遇到特殊事件時(shí),難以跟蹤和評(píng)估區(qū)域的影響情況,而且需要手動(dòng)對(duì)臟數(shù)據(jù)進(jìn)行打標(biāo)處理,因此無法沉淀標(biāo)準(zhǔn)化的數(shù)據(jù)進(jìn)行自動(dòng)響應(yīng)。特殊事件管理的目的就是為了更好的拉通從計(jì)劃到執(zhí)行各環(huán)節(jié),沉淀出一套自動(dòng)干預(yù)的方案,在特殊事件發(fā)生時(shí)能夠有條不紊的應(yīng)對(duì)。
盒馬銷量預(yù)測(cè)依托特殊事件供應(yīng)鏈管理產(chǎn)品,針對(duì)異常事件進(jìn)行處理和干預(yù)。當(dāng)特殊事件發(fā)生時(shí),區(qū)域業(yè)務(wù)同學(xué)可以錄入事件類型、影響時(shí)間、恐慌程度、影響范圍等信息。算法消費(fèi)以上數(shù)據(jù),一方面可以從全鏈路自動(dòng)剝離特殊事件的影響,保障后續(xù)預(yù)測(cè)結(jié)果的穩(wěn)定性,另一方面根據(jù)歷史相同事件發(fā)生時(shí)的商品銷售情況(例如疫情爆發(fā)時(shí)民生品的銷量會(huì)大幅上漲),以及業(yè)務(wù)錄入的需求、產(chǎn)能、履約影響等信息,計(jì)算商品的特殊事件影響因子,從而在預(yù)測(cè)上進(jìn)行自動(dòng)響應(yīng)。
該環(huán)節(jié)主要是根據(jù)業(yè)務(wù)規(guī)則對(duì)銷量預(yù)測(cè)結(jié)果進(jìn)行處理,包括按照BOM關(guān)系中的用量、出品率、成本換算率計(jì)算原料品的預(yù)測(cè)結(jié)果,并在補(bǔ)貨推單的時(shí)候扣減成品和原料庫(kù)存。比如下面這個(gè)例子中,原料“商品C”有兩個(gè)產(chǎn)成品“【鮮果切】商品A”和“【鮮果切】商品B”,并且原料品和產(chǎn)成品均可售,因此在對(duì)“商品C”進(jìn)行補(bǔ)貨的時(shí)候,需同時(shí)考慮產(chǎn)成品和其本身的需求量:
此外,根據(jù)盒馬供貨路由網(wǎng)絡(luò)和店倉(cāng)映射關(guān)系,可將店銷量預(yù)測(cè)結(jié)果進(jìn)行匯總,生成FDC和CDC等倉(cāng)端的需求預(yù)測(cè)結(jié)果,進(jìn)一步支持倉(cāng)端自動(dòng)補(bǔ)貨。
評(píng)估指標(biāo)可以分為算法指標(biāo)和業(yè)務(wù)指標(biāo)兩類,算法指標(biāo)包括MAE、RMSE、WMAPE等,用于衡量預(yù)測(cè)準(zhǔn)確率;業(yè)務(wù)指標(biāo)包括采納率、缺貨率、損耗率、周轉(zhuǎn)等。其中算法指標(biāo)偏向于過程,用于跟蹤模型在不同品類和不同時(shí)間點(diǎn)上的變化趨勢(shì),分析診斷問題,并通過不斷完善算法模型,最終帶來業(yè)務(wù)價(jià)值;而業(yè)務(wù)指標(biāo)更偏向于結(jié)果,是算法和業(yè)務(wù)同學(xué)共同希望達(dá)到的最終目標(biāo)。
由于預(yù)測(cè)準(zhǔn)確率本身會(huì)受計(jì)算口徑、業(yè)態(tài)差異、商品銷售量級(jí)等影響,因此不建議用單一指標(biāo)來衡量所有業(yè)態(tài)和場(chǎng)景的預(yù)測(cè)效果。在算法指標(biāo)設(shè)計(jì)時(shí)需盡量貼近業(yè)務(wù)場(chǎng)景,這樣能更好的衡量算法提升對(duì)業(yè)務(wù)的影響。例如在計(jì)算準(zhǔn)確率時(shí)考慮不同商品的vlt,或是根據(jù)補(bǔ)貨的具體場(chǎng)景BY店/BY倉(cāng)、BY天/BY周進(jìn)行統(tǒng)計(jì),另外也需要關(guān)注預(yù)測(cè)值的上偏和下偏情況。
在預(yù)測(cè)case的分析方面,首先需要及時(shí)發(fā)現(xiàn)問題,例如識(shí)別出每日高缺高損或預(yù)測(cè)誤差較大的商品,以及業(yè)務(wù)訂貨時(shí)大幅改量且修改合理的case;其次需要對(duì)影響商品銷量的系統(tǒng)性因素進(jìn)行分析,定位問題,并明確在14個(gè)步驟中的哪個(gè)模塊進(jìn)行優(yōu)化解決。例如將影響銷量的主要因素進(jìn)行可視化展示,方便在case分析時(shí)快速定位原因,并且支持多模型下鉆,方便比較各模型的預(yù)測(cè)情況。
該環(huán)節(jié)包括基于算法的歷史預(yù)測(cè)良好率、商品特性以及未來大促等信息提示業(yè)務(wù)是否需要進(jìn)行人工審核。另外通過在白盒化中展示算法考慮的因素,可實(shí)現(xiàn)與業(yè)務(wù)的有效協(xié)同。本章主要對(duì)預(yù)估白盒化進(jìn)行介紹。
預(yù)估白盒化的主要目的是將預(yù)測(cè)算法考慮的因素展示出來,并給業(yè)務(wù)提供干預(yù)銷量預(yù)測(cè)值的能力。在遇到切區(qū)、大促等情況時(shí),業(yè)務(wù)可以參考未來算法預(yù)測(cè)總量和業(yè)務(wù)預(yù)算之間的差異,結(jié)合算法對(duì)于各種因素的響應(yīng)幅度來調(diào)整指定范圍的商品預(yù)測(cè)值,從而在總量上達(dá)到業(yè)務(wù)預(yù)期。計(jì)劃協(xié)同也是全自動(dòng)補(bǔ)貨的重要一環(huán)。
為了便于理解和分析,這里僅選擇業(yè)務(wù)重點(diǎn)關(guān)心的因素進(jìn)行展示,而不是羅列出所有特征的重要性。目前選取了促銷、流量、天氣、假日四種因素。白盒化系數(shù)的計(jì)算邏輯如下:算法依次在原始銷量預(yù)測(cè)上剝離額外流量、促銷、天氣、節(jié)假日因素,得到剝離各個(gè)因素后的預(yù)測(cè)結(jié)果,然后再計(jì)算各預(yù)測(cè)結(jié)果的相對(duì)系數(shù),從而得到算法對(duì)于特定因素的響應(yīng)幅度。例如下面這個(gè)例子中,原始銷量預(yù)測(cè)結(jié)果為200,剝離額外流量的預(yù)測(cè)結(jié)果為160,因此流量因素的系數(shù)就是1.25,進(jìn)一步剝離促銷因素后的預(yù)測(cè)結(jié)果為100,所以促銷因素的系數(shù)就是1.6,以此類推可計(jì)算出所有因素的影響:
盒馬銷量預(yù)測(cè)目前已服務(wù)于全國(guó)百家級(jí)店倉(cāng),每日百萬量級(jí)SKU的補(bǔ)貨作業(yè),為了保障日常補(bǔ)貨的穩(wěn)定性,應(yīng)對(duì)門店的快速擴(kuò)張以及新業(yè)態(tài)的產(chǎn)生,銷量預(yù)測(cè)整體鏈路沉淀了相應(yīng)的降級(jí)策略和響應(yīng)方案:
穩(wěn)定性方面,除了保障任務(wù)本身的穩(wěn)定性之外,針對(duì)異常突發(fā)情況制定了相應(yīng)降級(jí)策略,目前降級(jí)分為四個(gè)等級(jí):數(shù)據(jù)降級(jí)主要應(yīng)對(duì)上游數(shù)據(jù)產(chǎn)出延遲的情況,部分?jǐn)?shù)據(jù)可以取前一天分區(qū);特征降級(jí)主要是在特征構(gòu)造時(shí)可舍棄最近一天的信息,避免整體鏈路被單點(diǎn)阻塞;模型降級(jí)主要是針對(duì)個(gè)別模型運(yùn)行出現(xiàn)問題的時(shí)候,有其他模型的結(jié)果可替用;在最后結(jié)果降級(jí)部分,算法每天會(huì)回流T-1的預(yù)測(cè)結(jié)果作為當(dāng)天的備份數(shù)據(jù),假如遇到更為嚴(yán)重的問題就會(huì)切換備份數(shù)據(jù),進(jìn)而從整體上提高抗風(fēng)險(xiǎn)的能力。
靈活性方面,包括兼容業(yè)務(wù)端的變更操作,例如商品的類目切換和部門切換,以及門店所屬子公司的變換,切換前后的相關(guān)數(shù)據(jù)能夠自動(dòng)關(guān)聯(lián),避免對(duì)模型預(yù)測(cè)造成影響;另外,對(duì)于外部突發(fā)因素也可方便地進(jìn)行干預(yù),例如公共衛(wèi)生事件,自然災(zāi)害等,實(shí)現(xiàn)結(jié)果的快速調(diào)整響應(yīng)。
盒馬業(yè)務(wù)目前處于持續(xù)快速發(fā)展當(dāng)中,豐富的場(chǎng)景和業(yè)態(tài)對(duì)銷量預(yù)測(cè)也提出了更高的要求,需要同時(shí)在具體場(chǎng)景和整體框架上進(jìn)一步打磨:一方面銷量預(yù)測(cè)需要更加貼近業(yè)務(wù),發(fā)掘并深入研究其中的關(guān)鍵問題,讓算法能更好的服務(wù)業(yè)務(wù);另一方面需要研究更加通用的銷量預(yù)測(cè)框架,流程上更加標(biāo)準(zhǔn)化,沉淀一套完善的解決方案。
?深圳市道路貨運(yùn)零排放走廊建設(shè)啟動(dòng)大會(huì)圓滿落幕,雙輪驅(qū)動(dòng)推動(dòng)綠色轉(zhuǎn)型
1767 閱讀從城配到城際,新能源物流車正打開下一個(gè)萬億市場(chǎng)
1673 閱讀順豐達(dá)成的新戰(zhàn)略聯(lián)盟,為何如此受關(guān)注?
1249 閱讀Temu前置倉(cāng)投入使用
1142 閱讀理想的倉(cāng)庫(kù)管理系統(tǒng)是啥樣的?
997 閱讀品牌企業(yè)一定是鏈主嗎?為什么順豐、寧德時(shí)代也能當(dāng)“老大”?
969 閱讀拼多多最新財(cái)報(bào):利潤(rùn)下跌近4成,“千億扶持”惠商投入遠(yuǎn)超市場(chǎng)預(yù)期
744 閱讀京東與小紅書官宣推出“紅京計(jì)劃”
692 閱讀順豐&上海迪士尼度假區(qū)達(dá)成合作
728 閱讀華貿(mào)物流:截至2024年底自營(yíng)海外倉(cāng)超40個(gè)
719 閱讀