徐 歡
(上海交通大學 安泰與經濟管理學院,上海 200030)
關于需求預測方面研究有很多,主要表現為關于需求場景的研究和關于預測方法的研究。楊磊等[1]在考慮資金、倉庫面積等約束條件下,分析了零售商的風險厭惡程度對最優訂貨策略的影響。李娟等[2]考慮了價格相依報童模型,分析了需求的不確定性,以及供應商和零售商之間的信息不對稱性對零售商以及供應商決策的影響。褚宏睿等[3]在前景理論的假設下,研究了回購機制和缺貨懲罰因素對最優訂貨量的影響,并給出了它們的函數變化關系。徐賢浩等[4]考慮庫存價值可能發生貶值或增值,在給出隨機需求分布的情況下得到最優訂貨量和最大期望收益。陳杰等[5]考慮了多商品的情況,在帶有能力約束的情況下,給出了多元馬氏需求報童模型。禹海波[6]在需求不確定的情況下,研究了一次訂貨單周期報童模型和二次訂貨最大化利潤報童模型兩類問題,并探討了二者之間的結構性關系。Guo等[7]分析了短生命周期商品的不確定性,考慮了不同需求情況下的最優訂貨策略。
以上都是報童模型在不同場景下的研究,主要考慮了在給定情境下,如何做出最優決策。另外有一類關于預測方法的研究。宋華明等[8]使用Bayes的方法,利用獲得的最新信息修正需求預測,建立了一個平衡更新預測帶來的收益和預測成本的決策優化模型。孫涵等[9]對我國的能源需求建立了支持向量回歸機(SVR)預測模型,并證明該方法在能源需求預測問題上,比BP神經網絡有更高的預測精度。徐賢浩等[10]考慮了短生命周期商品易變質、難預測的特點,對BASS擴展模型進行了改進,用來預測短生命周期商品的需求分布,并給出了優化策略。
還有一些理論方面的研究。Bertsimas等[11]拋棄了存在需求分布的假設,完全由數據驅動,建立了一個魯棒報童模型,并引入一個可調節的參數alpha,來控制模型的魯棒性。Wang等[12]引入了Likelihood Robust Optimisation(LRO)的概念,利用這一概念重新定義了可能的需求分布,并給出這些分布中最壞情況下的最優決策。Levi等[13]假設商品需求分布未知,僅有該分布下的獨立歷史數據,對Sample Average Approximation(SAA)方法進行了分析,給出了更精確的上下界,并研究了分布屬性對上下界的影響。
可以看出,以上研究大多將預測與決策分開來考慮。另外有一些研究將預測與決策結合起來考慮。孫彩虹[14]在僅獲得需求的均值與方差的情況下,聯合定價與訂貨決策,給出了部分信息下的魯棒聯合報童模型。李長春[15]使用隨機森林對商品需求做預測,并在殘差屬于正態分布的假設下,得到商品的需求分布,結合報童模型,給出了倉庫的庫存決策。該論文將預測和決策分成兩步結合起來,屬于Sepatated Estimation and Optimisation(SEO)方法。倪冬梅等[16]利用時間序列分析與多元回歸,建立了需求綜合預測模型,并將預測模型與決策相結合,采用啟發式算法進行求解。該論文同時考慮了預測與決策的問題,并將兩者結合起來研究,但在數據上,仍舊主要考慮了歷史銷量數據對當期銷量的影響。在大數據背景下,我們可以獲得更多與當期需求有關的特征數據。另外,該論文采用鄰域搜索的啟發式算法進行求解,僅僅考慮了六個特征,當特征數增加(在大數據背景下,往往能增加到上千或上萬個特征)時,該方法很難給出最優解或較優解。Rundin等研究了多特征下的報童問題,將線性回歸與報童問題結合,討論了無論在大數據還是小數據的情況下,新給出的方法在表現上都要優于SAA和SEO。
從對以往文獻的分析中可以發現,提高需求預測的準確性,并將需求預測與庫存決策結合起來,給出全局最優的解決方案,是庫存問題的發展方向。本文在已有數據集(給定p個特征與n個樣本)的情況下,構建了一個Feature Based Newsvendor Model(FBNV)模型。該模型將機器學習與庫存決策結合起來,轉化成一個規劃問題,以線性回歸模型中的特征系數為決策變量,以最低成本為目標。本文詳細說明了該模型與傳統報童問題,以及SAA、SEO模型的區別,并且通過實驗數據證明了該模型的有效性。
通過天池大數據眾智平臺,本文獲取了阿里巴巴旗下電商平臺買家與賣家脫敏后的交易數據。利用這些數據,電商希望能夠提取所需要的特征,并構建預測模型,更準確地估計出商品未來的需求,從而為每個倉庫確定更合理的庫存,達到降低運營成本的目的。
本次數據包括1 000種商品,5個區域倉,從2014年10月10日至2015年12月27日,一年多的交易數據。數據展示如表1、表2所示。

表1 商品特征類目表
根據賽題要求,每兩周作為一個數據窗口,兩周內商品的總銷量作為數據標簽,本文對原數據進行處理,構建了一個帶有60多個特征的數據集。數據集如表3所示。
特征主要包括:1)item維度,分別計算了各個量7天/14天的統計值;2)category、band、supplier維度,分別計算了非聚劃算的銷量均值、銷量標準差。
假設以上數據集是本次問題的輸入,本文嘗試使用不同的方法對問題進行建模,并通過實驗結果進行對比,發現“一步走”(FBNV)的方式能夠找到更加合理的庫存水平,進一步節約庫存成本。同時,使用比線性規劃更復雜的預測方法,也能夠改進模型的效果。

表2 商品成本信息表

表3 數據特征表
經典報童問題假設公司銷售一種商品,該商品的需求分布已知,存在持貨成本h和缺貨成本b,在未觀測到下一期的需求前,確定訂貨量,使得總的期望成本最小。目標函數為

其中,q是訂貨量,D是未知隨機需求,b和h分別對應單位缺貨成本和單位存儲成本。目標函數是關于訂貨量q和需求D的隨機函數:
C(q,D) =b(D-q)++h(q-D)+
如果需求分布F已知,該問題的最優解已經給出:
經典報童問題假設需求分布已知。然而,實際中常常并不知道商品的需求分布。數據驅動的報童模型假設僅能獲取商品的歷史銷售數據,同樣存在持貨成本h和缺貨成本b。在未觀測到下一期的需求前,電商需要確定訂貨量,使得總的期望成本最小。一般我們使用樣本平均期望替代真實期望,該問題目標函數為
h(q-di)+]
這種使用歷史樣本均值替代真實期望的方法被稱作Sample Average Approximation(SAA)。SAA模型的最優解也已經給出:

數據驅動報童模型仍然太過簡單。在大數據時代下,電商能夠收集到包括歷史需求數據在內的眾多外生信息。這些需求相關的信息,能夠幫助電商做出更準確的決策。因而,我們可以將報童問題看作已知n期歷史數據Sn=[(x1,d1),(x2,d2),…,(xn,dn) ],需要確定訂貨策略,使得總期望成本最小。其中,xi=[xi1,xi2,…,xip]是一個p維向量,表示第i期收集到的數據,包括天氣、季節性、促銷等與銷量相關的特征。
最終需要解決的問題是,在收集到第n+1期的數據xn+1的情況下,確定第n+1期的訂貨量。也就是需要找到一個最優的函數g(·),將xn+1映射到g(xn+1),使得期望的總成本最小。采用類似SAA方法的思想,帶特征的報童問題可以建立如下目標函數:
h(g(xi)-di)+]
其中,目標函數是在給定數據集Sn情況下,關于函數g(·) 的歷史平均成本。FBNV算法與SAA類似,均采用了經驗風險最小化原則。該原則在機器學習的分類和回歸問題中被廣泛采用[21]。
為了解決這一問題,我們需要定義函數g(·)所屬的集合范圍Ω 。其中,Ω的范圍,或者說函數g(·)的復雜程度控制了模型是過擬合還是欠擬合。Ω越復雜,模型可能越能擬合當前數據樣本,但卻會造成過擬合的問題。在本文中,我們僅考慮線性函數,假設
其中x1=1,表示將截距項考慮到模型中去;g(x)將特征向量x轉化成一個一維實數R,即預測的銷量。實際上,g(·)的范圍并沒有嚴格的限制,可以根據問題需要,設置不同的轉化函數。本文為了與線性回歸進行對比,以及使用線性規劃的方法對問題進行求解,我們選擇了線性的轉化關系。
g(xi))++h(g(xi)-di)+]≡
s.t.?i=1,…,n:
ui,oi≥0
定義兩個虛擬變量ui,oi,分別代替(di-g(xi))+和(g(xi)-di)+,將原問題轉成一個標準的線性規劃問題??梢允褂胓urobi等工具,對其進行求解。
如果特征較多,我們可以使用特征篩選的方法,如AIC[22],BIC[23]等挑選特征;或者通過加入正則懲罰項,讓模型自動挑選變量。加入L2懲罰項后,原問題如下所示,變成了一個二次規劃問題。該問題同樣可以使用錐規劃求解器對其進行求解。
[b(di-q(xi))++h(q(xi)-di)+]+λ‖q‖2≡
本文使用上面所述數據,并用Python 2.7進行了程序實現,對比了純預測算法策略、預測算法+庫存決策“兩步走”策略、FBNV模型“一步走”策略三種不同的庫存策略。其中,預測方法選取線性回歸(Linear regression)作為基本模型;另外,從隨機森林、GBDT、SVM等回歸模型中挑選預測表現最好的一個模型隨機森林,作為對比。每一種預測模型,分別有純預測算法策略和預測+決策“兩步走”策略,加上FBNV模型,本文對每一份數據,利用5個不同的策略,分別計算了最優的庫存成本。

為了證明算法的穩定性和有效性,避免隨機因素,本文在5個倉庫分別進行了實驗,實驗結果見表4。

表4 模型結果對比
由表4可以看出,在5個案例中,FBNV算法得到的結果均為最優。另外,無論是簡單的線性回歸,還是復雜一些的隨機森林,使用預測+決策“兩步走”的方式的確能夠在一定程度上減少庫存。同時,單從預測算法上來看,提高預測模型的預測準確度也能減少成本。
圖1給出了相對于最基本的線性回歸模型其他四種模型提升的比例,可以看到采用“一步走”的策略,平均大約能夠減少20%左右的庫存成本。

圖1 模型提升百分比/%
大數據時代帶來了大量的數據,同時也誕生了很多新的預測方法,能幫助我們更準確地對需求做出預測,這對庫存決策來說是一個新的機遇。如何運用這些方法,是一個需要考慮的問題。本文通過對預測模型和報童模型的研究,提出了一個將預測與決策結合起來,將“兩步走”變成“一步走”的新方法,并用數據對模型進行了證明。實驗結果表明,通過“一步走”找到全局最優的思想,能夠大大減少庫存成本。這對大數據背景下,如何做出更優的庫存決策的問題具有一定的參考意義。