徐 歡
(上海交通大學(xué) 安泰與經(jīng)濟(jì)管理學(xué)院,上海 200030)
關(guān)于需求預(yù)測(cè)方面研究有很多,主要表現(xiàn)為關(guān)于需求場(chǎng)景的研究和關(guān)于預(yù)測(cè)方法的研究。楊磊等[1]在考慮資金、倉(cāng)庫(kù)面積等約束條件下,分析了零售商的風(fēng)險(xiǎn)厭惡程度對(duì)最優(yōu)訂貨策略的影響。李娟等[2]考慮了價(jià)格相依報(bào)童模型,分析了需求的不確定性,以及供應(yīng)商和零售商之間的信息不對(duì)稱性對(duì)零售商以及供應(yīng)商決策的影響。褚宏睿等[3]在前景理論的假設(shè)下,研究了回購(gòu)機(jī)制和缺貨懲罰因素對(duì)最優(yōu)訂貨量的影響,并給出了它們的函數(shù)變化關(guān)系。徐賢浩等[4]考慮庫(kù)存價(jià)值可能發(fā)生貶值或增值,在給出隨機(jī)需求分布的情況下得到最優(yōu)訂貨量和最大期望收益。陳杰等[5]考慮了多商品的情況,在帶有能力約束的情況下,給出了多元馬氏需求報(bào)童模型。禹海波[6]在需求不確定的情況下,研究了一次訂貨單周期報(bào)童模型和二次訂貨最大化利潤(rùn)報(bào)童模型兩類問(wèn)題,并探討了二者之間的結(jié)構(gòu)性關(guān)系。Guo等[7]分析了短生命周期商品的不確定性,考慮了不同需求情況下的最優(yōu)訂貨策略。
以上都是報(bào)童模型在不同場(chǎng)景下的研究,主要考慮了在給定情境下,如何做出最優(yōu)決策。另外有一類關(guān)于預(yù)測(cè)方法的研究。宋華明等[8]使用Bayes的方法,利用獲得的最新信息修正需求預(yù)測(cè),建立了一個(gè)平衡更新預(yù)測(cè)帶來(lái)的收益和預(yù)測(cè)成本的決策優(yōu)化模型。孫涵等[9]對(duì)我國(guó)的能源需求建立了支持向量回歸機(jī)(SVR)預(yù)測(cè)模型,并證明該方法在能源需求預(yù)測(cè)問(wèn)題上,比BP神經(jīng)網(wǎng)絡(luò)有更高的預(yù)測(cè)精度。徐賢浩等[10]考慮了短生命周期商品易變質(zhì)、難預(yù)測(cè)的特點(diǎn),對(duì)BASS擴(kuò)展模型進(jìn)行了改進(jìn),用來(lái)預(yù)測(cè)短生命周期商品的需求分布,并給出了優(yōu)化策略。
還有一些理論方面的研究。Bertsimas等[11]拋棄了存在需求分布的假設(shè),完全由數(shù)據(jù)驅(qū)動(dòng),建立了一個(gè)魯棒報(bào)童模型,并引入一個(gè)可調(diào)節(jié)的參數(shù)alpha,來(lái)控制模型的魯棒性。Wang等[12]引入了Likelihood Robust Optimisation(LRO)的概念,利用這一概念重新定義了可能的需求分布,并給出這些分布中最壞情況下的最優(yōu)決策。Levi等[13]假設(shè)商品需求分布未知,僅有該分布下的獨(dú)立歷史數(shù)據(jù),對(duì)Sample Average Approximation(SAA)方法進(jìn)行了分析,給出了更精確的上下界,并研究了分布屬性對(duì)上下界的影響。
可以看出,以上研究大多將預(yù)測(cè)與決策分開(kāi)來(lái)考慮。另外有一些研究將預(yù)測(cè)與決策結(jié)合起來(lái)考慮。孫彩虹[14]在僅獲得需求的均值與方差的情況下,聯(lián)合定價(jià)與訂貨決策,給出了部分信息下的魯棒聯(lián)合報(bào)童模型。李長(zhǎng)春[15]使用隨機(jī)森林對(duì)商品需求做預(yù)測(cè),并在殘差屬于正態(tài)分布的假設(shè)下,得到商品的需求分布,結(jié)合報(bào)童模型,給出了倉(cāng)庫(kù)的庫(kù)存決策。該論文將預(yù)測(cè)和決策分成兩步結(jié)合起來(lái),屬于Sepatated Estimation and Optimisation(SEO)方法。倪冬梅等[16]利用時(shí)間序列分析與多元回歸,建立了需求綜合預(yù)測(cè)模型,并將預(yù)測(cè)模型與決策相結(jié)合,采用啟發(fā)式算法進(jìn)行求解。該論文同時(shí)考慮了預(yù)測(cè)與決策的問(wèn)題,并將兩者結(jié)合起來(lái)研究,但在數(shù)據(jù)上,仍舊主要考慮了歷史銷量數(shù)據(jù)對(duì)當(dāng)期銷量的影響。在大數(shù)據(jù)背景下,我們可以獲得更多與當(dāng)期需求有關(guān)的特征數(shù)據(jù)。另外,該論文采用鄰域搜索的啟發(fā)式算法進(jìn)行求解,僅僅考慮了六個(gè)特征,當(dāng)特征數(shù)增加(在大數(shù)據(jù)背景下,往往能增加到上千或上萬(wàn)個(gè)特征)時(shí),該方法很難給出最優(yōu)解或較優(yōu)解。Rundin等研究了多特征下的報(bào)童問(wèn)題,將線性回歸與報(bào)童問(wèn)題結(jié)合,討論了無(wú)論在大數(shù)據(jù)還是小數(shù)據(jù)的情況下,新給出的方法在表現(xiàn)上都要優(yōu)于SAA和SEO。
從對(duì)以往文獻(xiàn)的分析中可以發(fā)現(xiàn),提高需求預(yù)測(cè)的準(zhǔn)確性,并將需求預(yù)測(cè)與庫(kù)存決策結(jié)合起來(lái),給出全局最優(yōu)的解決方案,是庫(kù)存問(wèn)題的發(fā)展方向。本文在已有數(shù)據(jù)集(給定p個(gè)特征與n個(gè)樣本)的情況下,構(gòu)建了一個(gè)Feature Based Newsvendor Model(FBNV)模型。該模型將機(jī)器學(xué)習(xí)與庫(kù)存決策結(jié)合起來(lái),轉(zhuǎn)化成一個(gè)規(guī)劃問(wèn)題,以線性回歸模型中的特征系數(shù)為決策變量,以最低成本為目標(biāo)。本文詳細(xì)說(shuō)明了該模型與傳統(tǒng)報(bào)童問(wèn)題,以及SAA、SEO模型的區(qū)別,并且通過(guò)實(shí)驗(yàn)數(shù)據(jù)證明了該模型的有效性。
通過(guò)天池大數(shù)據(jù)眾智平臺(tái),本文獲取了阿里巴巴旗下電商平臺(tái)買家與賣家脫敏后的交易數(shù)據(jù)。利用這些數(shù)據(jù),電商希望能夠提取所需要的特征,并構(gòu)建預(yù)測(cè)模型,更準(zhǔn)確地估計(jì)出商品未來(lái)的需求,從而為每個(gè)倉(cāng)庫(kù)確定更合理的庫(kù)存,達(dá)到降低運(yùn)營(yíng)成本的目的。
本次數(shù)據(jù)包括1 000種商品,5個(gè)區(qū)域倉(cāng),從2014年10月10日至2015年12月27日,一年多的交易數(shù)據(jù)。數(shù)據(jù)展示如表1、表2所示。
表1 商品特征類目表
根據(jù)賽題要求,每?jī)芍茏鳛橐粋€(gè)數(shù)據(jù)窗口,兩周內(nèi)商品的總銷量作為數(shù)據(jù)標(biāo)簽,本文對(duì)原數(shù)據(jù)進(jìn)行處理,構(gòu)建了一個(gè)帶有60多個(gè)特征的數(shù)據(jù)集。數(shù)據(jù)集如表3所示。
特征主要包括:1)item維度,分別計(jì)算了各個(gè)量7天/14天的統(tǒng)計(jì)值;2)category、band、supplier維度,分別計(jì)算了非聚劃算的銷量均值、銷量標(biāo)準(zhǔn)差。
假設(shè)以上數(shù)據(jù)集是本次問(wèn)題的輸入,本文嘗試使用不同的方法對(duì)問(wèn)題進(jìn)行建模,并通過(guò)實(shí)驗(yàn)結(jié)果進(jìn)行對(duì)比,發(fā)現(xiàn)“一步走”(FBNV)的方式能夠找到更加合理的庫(kù)存水平,進(jìn)一步節(jié)約庫(kù)存成本。同時(shí),使用比線性規(guī)劃更復(fù)雜的預(yù)測(cè)方法,也能夠改進(jìn)模型的效果。
表2 商品成本信息表
表3 數(shù)據(jù)特征表
經(jīng)典報(bào)童問(wèn)題假設(shè)公司銷售一種商品,該商品的需求分布已知,存在持貨成本h和缺貨成本b,在未觀測(cè)到下一期的需求前,確定訂貨量,使得總的期望成本最小。目標(biāo)函數(shù)為
其中,q是訂貨量,D是未知隨機(jī)需求,b和h分別對(duì)應(yīng)單位缺貨成本和單位存儲(chǔ)成本。目標(biāo)函數(shù)是關(guān)于訂貨量q和需求D的隨機(jī)函數(shù):
C(q,D) =b(D-q)++h(q-D)+
如果需求分布F已知,該問(wèn)題的最優(yōu)解已經(jīng)給出:
經(jīng)典報(bào)童問(wèn)題假設(shè)需求分布已知。然而,實(shí)際中常常并不知道商品的需求分布。數(shù)據(jù)驅(qū)動(dòng)的報(bào)童模型假設(shè)僅能獲取商品的歷史銷售數(shù)據(jù),同樣存在持貨成本h和缺貨成本b。在未觀測(cè)到下一期的需求前,電商需要確定訂貨量,使得總的期望成本最小。一般我們使用樣本平均期望替代真實(shí)期望,該問(wèn)題目標(biāo)函數(shù)為
h(q-di)+]
這種使用歷史樣本均值替代真實(shí)期望的方法被稱作Sample Average Approximation(SAA)。SAA模型的最優(yōu)解也已經(jīng)給出:
數(shù)據(jù)驅(qū)動(dòng)報(bào)童模型仍然太過(guò)簡(jiǎn)單。在大數(shù)據(jù)時(shí)代下,電商能夠收集到包括歷史需求數(shù)據(jù)在內(nèi)的眾多外生信息。這些需求相關(guān)的信息,能夠幫助電商做出更準(zhǔn)確的決策。因而,我們可以將報(bào)童問(wèn)題看作已知n期歷史數(shù)據(jù)Sn=[(x1,d1),(x2,d2),…,(xn,dn) ],需要確定訂貨策略,使得總期望成本最小。其中,xi=[xi1,xi2,…,xip]是一個(gè)p維向量,表示第i期收集到的數(shù)據(jù),包括天氣、季節(jié)性、促銷等與銷量相關(guān)的特征。
最終需要解決的問(wèn)題是,在收集到第n+1期的數(shù)據(jù)xn+1的情況下,確定第n+1期的訂貨量。也就是需要找到一個(gè)最優(yōu)的函數(shù)g(·),將xn+1映射到g(xn+1),使得期望的總成本最小。采用類似SAA方法的思想,帶特征的報(bào)童問(wèn)題可以建立如下目標(biāo)函數(shù):
h(g(xi)-di)+]
其中,目標(biāo)函數(shù)是在給定數(shù)據(jù)集Sn情況下,關(guān)于函數(shù)g(·) 的歷史平均成本。FBNV算法與SAA類似,均采用了經(jīng)驗(yàn)風(fēng)險(xiǎn)最小化原則。該原則在機(jī)器學(xué)習(xí)的分類和回歸問(wèn)題中被廣泛采用[21]。
為了解決這一問(wèn)題,我們需要定義函數(shù)g(·)所屬的集合范圍Ω 。其中,Ω的范圍,或者說(shuō)函數(shù)g(·)的復(fù)雜程度控制了模型是過(guò)擬合還是欠擬合。Ω越復(fù)雜,模型可能越能擬合當(dāng)前數(shù)據(jù)樣本,但卻會(huì)造成過(guò)擬合的問(wèn)題。在本文中,我們僅考慮線性函數(shù),假設(shè)
其中x1=1,表示將截距項(xiàng)考慮到模型中去;g(x)將特征向量x轉(zhuǎn)化成一個(gè)一維實(shí)數(shù)R,即預(yù)測(cè)的銷量。實(shí)際上,g(·)的范圍并沒(méi)有嚴(yán)格的限制,可以根據(jù)問(wèn)題需要,設(shè)置不同的轉(zhuǎn)化函數(shù)。本文為了與線性回歸進(jìn)行對(duì)比,以及使用線性規(guī)劃的方法對(duì)問(wèn)題進(jìn)行求解,我們選擇了線性的轉(zhuǎn)化關(guān)系。
g(xi))++h(g(xi)-di)+]≡
s.t.?i=1,…,n:
ui,oi≥0
定義兩個(gè)虛擬變量ui,oi,分別代替(di-g(xi))+和(g(xi)-di)+,將原問(wèn)題轉(zhuǎn)成一個(gè)標(biāo)準(zhǔn)的線性規(guī)劃問(wèn)題??梢允褂胓urobi等工具,對(duì)其進(jìn)行求解。
如果特征較多,我們可以使用特征篩選的方法,如AIC[22],BIC[23]等挑選特征;或者通過(guò)加入正則懲罰項(xiàng),讓模型自動(dòng)挑選變量。加入L2懲罰項(xiàng)后,原問(wèn)題如下所示,變成了一個(gè)二次規(guī)劃問(wèn)題。該問(wèn)題同樣可以使用錐規(guī)劃求解器對(duì)其進(jìn)行求解。
[b(di-q(xi))++h(q(xi)-di)+]+λ‖q‖2≡
本文使用上面所述數(shù)據(jù),并用Python 2.7進(jìn)行了程序?qū)崿F(xiàn),對(duì)比了純預(yù)測(cè)算法策略、預(yù)測(cè)算法+庫(kù)存決策“兩步走”策略、FBNV模型“一步走”策略三種不同的庫(kù)存策略。其中,預(yù)測(cè)方法選取線性回歸(Linear regression)作為基本模型;另外,從隨機(jī)森林、GBDT、SVM等回歸模型中挑選預(yù)測(cè)表現(xiàn)最好的一個(gè)模型隨機(jī)森林,作為對(duì)比。每一種預(yù)測(cè)模型,分別有純預(yù)測(cè)算法策略和預(yù)測(cè)+決策“兩步走”策略,加上FBNV模型,本文對(duì)每一份數(shù)據(jù),利用5個(gè)不同的策略,分別計(jì)算了最優(yōu)的庫(kù)存成本。
為了證明算法的穩(wěn)定性和有效性,避免隨機(jī)因素,本文在5個(gè)倉(cāng)庫(kù)分別進(jìn)行了實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果見(jiàn)表4。
表4 模型結(jié)果對(duì)比
由表4可以看出,在5個(gè)案例中,F(xiàn)BNV算法得到的結(jié)果均為最優(yōu)。另外,無(wú)論是簡(jiǎn)單的線性回歸,還是復(fù)雜一些的隨機(jī)森林,使用預(yù)測(cè)+決策“兩步走”的方式的確能夠在一定程度上減少庫(kù)存。同時(shí),單從預(yù)測(cè)算法上來(lái)看,提高預(yù)測(cè)模型的預(yù)測(cè)準(zhǔn)確度也能減少成本。
圖1給出了相對(duì)于最基本的線性回歸模型其他四種模型提升的比例,可以看到采用“一步走”的策略,平均大約能夠減少20%左右的庫(kù)存成本。
圖1 模型提升百分比/%
大數(shù)據(jù)時(shí)代帶來(lái)了大量的數(shù)據(jù),同時(shí)也誕生了很多新的預(yù)測(cè)方法,能幫助我們更準(zhǔn)確地對(duì)需求做出預(yù)測(cè),這對(duì)庫(kù)存決策來(lái)說(shuō)是一個(gè)新的機(jī)遇。如何運(yùn)用這些方法,是一個(gè)需要考慮的問(wèn)題。本文通過(guò)對(duì)預(yù)測(cè)模型和報(bào)童模型的研究,提出了一個(gè)將預(yù)測(cè)與決策結(jié)合起來(lái),將“兩步走”變成“一步走”的新方法,并用數(shù)據(jù)對(duì)模型進(jìn)行了證明。實(shí)驗(yàn)結(jié)果表明,通過(guò)“一步走”找到全局最優(yōu)的思想,能夠大大減少庫(kù)存成本。這對(duì)大數(shù)據(jù)背景下,如何做出更優(yōu)的庫(kù)存決策的問(wèn)題具有一定的參考意義。