畢文杰,王 榮
中南大學 商學院,長沙 410083
隨著電子商務和信息技術的飛速發展,用戶和商家可以接觸到的信息發生了巨大的變化。以酒店住房為例,用戶可以零成本地通過線上平臺(如某團、某程)選擇符合自己需求的酒店及房間,商家則可以通過市場上各房型的特征、銷售情況及用戶行為數據進行需求預測,通過在線學習的方式進行價格策略的調整以更好地實現供需平衡,在提升產品銷量的同時提升顧客的服務體驗。在產品同質化日趨嚴重且用戶可以接觸到大量產品信息,價格敏感型用戶的需求快速轉變的時代,如何靈活地進行產品組合和利用市場信息快速制定價格策略給商家帶來了巨大的挑戰。Ferreira 等的研究表明,基于分析的價格決策可以帶來顯著的收益[1]。因此,對于如酒店、出行以及快消品(牛奶、面包等食品)等同質化嚴重、可替代性強、可選擇性多的產品,雖然缺乏短期的價格需求函數,商家也必須進行定價優化來提升自己的競爭力,這就要求商家提升其對產品和用戶行為數據的信息處理能力,在短期內利用最多的相關數據最快地制定產品價格策略。
近年來針對同類型產品的研究主要以模型為主,李麗萍等通過引入競爭因素的Bass 拓展模型研究了雙寡頭競爭結構下同質產品的動態定價問題[2]。畢文杰等構建了兩階段動態定價模型,解決了需求不確定下在線平臺銷售兩種可替代的有限庫存易逝品的問題[3]。Ceryan采用多周期隨機動態規劃模型來考慮一家銷售兩種可替代性產品的公司的定價行為,最終得出針對常規產品的最佳補貨決策以及針對季節性產品的動態定價和初始數量選擇決策[4]。趙天等應用Hotelling模型構造了兩個銷售商銷售同種具有易逝性可替代產品的雙周期動態定價模型[5]。
國內外雖然已有不少研究同質產品的方法,但仍停留在傳統的定價方法及模型上,并未應用數據驅動的方法來進行定價。不同于以往假設需求函數的定價研究,Besbes和Zeevi首次針對需求未知的問題提出將銷售期劃分為探索和利用兩個階段,并在此基礎上于2012 年將需求學習和定價以優化收入之間的權衡研究擴展到全網絡的收益管理問題[6-7]。利用-探索權衡也即在探索階段進行價格實驗來觀察價格和平均需求率之間的基本函數關系,在利用階段根據前期觀察到的需求函數來制定價格,最終在有限的銷售周期內動態調整價格以最大化預期收益。多搖臂算法是近年強化學習中的學術研究熱點,該算法能在有限時間做出決策,有效解決利用-探索權衡問題[8]。國內近年也有學者對多搖臂算法在定價上的應用進行了研究,畢文杰等考慮在線零售商在需求未知情況下的定價問題,利用消費者的類別信息和需求曲線的單調性提出了UCB1-PI-M 算法[9]。喬勛雙等研究了需求不確定性情況下的考慮時變獎勵的UCB算法在定價上的應用[10]。
湯普森抽樣是一個基于貝葉斯主義的后驗可信區間的隨機算法,能有效解決多搖臂問題。Ferreira 等考慮需求函數未知時基于價格的網絡收益管理問題,提出了一種基于湯普森抽樣的動態定價算法以解決庫存約束條件下利用-探索的平衡[11]。Ringbeck 等提出一種基于多搖臂的非參數需求學習方法,即結合高斯過程回歸和湯普森抽樣以學習價格和需求之間的任意函數關系,該算法的性能只取決于產品數量,在規模與價格向量的數量上具有更大的伸縮性[12]。湯普森抽樣雖然在后悔上界上較UCB1(upper bound confidence 1)、MOSS(minimax optimal strategy in the stochastic case)等其他多搖臂算法表現得更好、更簡單,但其無法直接拓展到分布式并行運算中,因此有較多學者探索了該算法結合并行貝葉斯優化以拓展并行測量問題的可能。Hernández-Lobato等為解決貝葉斯優化方法不能擴展到大量的并行測量的問題,提出了一個基于湯普森采樣的并行和分布式實現的可擴展解決方案(parallel distributed Thompson sampling,PDTS)[13]。Kandasamy等結合并行貝葉斯優化在給定時段內能比順序優化策略實現更多次評估的優點,在順序TS(Thompson sampling)算法的基礎上提出了并行湯普森抽樣的算法:同步并行湯普森抽樣(synchronous parallel Thompson sampling,Syn TS)、異步并行湯普森抽樣(asynchronous parallel Thompson sampling,Asy TS)[14]。Alessandro等提出了一種基于在隨機流程中采樣多個采集函數的想法的批處理貝葉斯優化技術,采集函數-湯普森采樣算法(acquisition Thompson sampling algorithm,ATS),與其他批處理貝葉斯優化方法不同,它可用于并行化任何順序采集函數或使現有并行方法進一步擴展[15]。
總結上述研究發現,當前研究可替代、同質產品的文獻中只有極少數采用數據驅動的方法來進行需求函數的學習和定價的研究,而在當前基于湯普森抽樣算法和需求未知情況下的定價問題相關文獻中,同樣缺乏考慮競爭市場中價格敏感型顧客由于產品同質、可替代性強時選擇更符合心理支付意愿產品的行為。例如與本文研究相近的Ringbeck 雖然將高斯過程引入算法中來模擬需求函數,但其只考慮了一個商家僅利用市場中自身產品相關數據來進行定價的情形。產品差異化小時價格彈性較大,尤其是線上平臺(如某團、某程、某寶等)使得消費者獲得的信息比以往更加全面。實際生活中,顧客選購成本低,產品同質化嚴重,且商家可以觀察到市場上同性質產品的銷售情況及產品特征,在很短的銷售期內商家就能獲得體量極大的商品銷售與用戶行為數據,商家若無法在短期內充分利用相關數據進行定價策略的調整則會喪失部分潛在用戶。因此,基于實踐的需要和現有理論研究的不足,本文將考慮短期內同一性質(滿足用戶核心需求,但具體表現形式及產品特征存在差異)的產品的需求函數的學習,利用批量湯普森算法建立基于探索-利用的兩階段學習和決策過程的定價模型,在利用數值實驗進行基礎分析后,采用某平臺出行的真實數據對算法的泛化與實踐能力進行分析,旨在為企業定價決策提供良好借鑒。
本文建模時所涉及的變量及參數如表1 所示。根據所研究問題提出的模型描述如下:考慮庫存一定情況下,一個零售商在有限銷售期t=1,2,…,T 內銷售i=1,2,…,N 種產品的網絡收益管理問題,在每個銷售初期,商家根據經驗決定每個產品的最優價格并進行銷售以實現最優收益。N 種產品消耗的資源為j=1,2,…,S種,每單位的產品i ∈N 消耗資源i ∈S 的量為aij,Ij為資源的庫存水平。每個銷售期,零售商都需要為自己的產品選擇一個價格來進行銷售,即每期初從有K 個元素的離散價格集合{p1,p2,…,pk} 中選擇一個價格向量,其中每一個價格向量包括N 種產品的價格,即:

表1 符號及定義Table 1 Notations and definitions

算法每期對每個產品經過高斯過程預測得到的后驗分布會進行M 次抽樣,零售商在第t 期的批次中第m 次選擇的價格向量為,記為實施該價格策略實現的需求為方便起見,本文將一個銷售期內產品i進行M 次抽樣得到的預測需求記作所有產品在t 期的預測需求記為
本文在建模時做如下假設:每個產品的需求函數未知,但需求與價格之間存在函數關系;商家可觀察到每個價格策略實施后所實現的各產品的總的真實需求,即可觀測;各期需求是獨立的,即顧客是短視的;不考慮各產品的成本及商家更換產品價格時產生的成本;存在價格p∞滿足在該價格下所有產品的需求以1的概率收斂到0。

本文首先簡單介紹算法需求函數非參數擬合的理論部分——高斯過程和批量湯普森抽樣,然后提出高斯過程-批量湯普森抽樣算法(Gaussian process-parallel Thompson sampling,GP-PTS)。
高斯過程(Gaussian process,GP)是一種已被廣泛用于回歸、分類等領域的非參數模型,它是多元高斯概率分布的泛化。相比參數固定的模型,非參數模型更加靈活,其參數會隨著數據量的增加而增加,可拓展性高,且使用貝葉斯方法不容易過擬合[16-17]。此外,高斯過程能夠同時預測生成均值和方差的性質,使其非常適合用來解決多搖臂問題。結合上述兩點,本文采用高斯過程來對需求函數進行擬合。
高斯過程是由均值函數v(x)=E[f(x)]和半正定的協方差核函數g(x,x′)=E[(f(x)-v(x))(f(x′)-v(x′))]所決定的,且任意有限的隨機變量都滿足一個聯合高斯分布。為簡化計算,本文假定均值函數v(x)=0,選擇常用的、高靈活性的Matérn協方差函數其中l為反映樣本曲線的平滑度的尺度參數[18]。給定一個高斯過程的先驗及部分觀測值集合(x1,x2,…,xn),y=(y1,y2,…,yn),當存在觀測噪聲,即y=f(x)+ε,且噪聲服從獨立同分布的高斯分布ε~N(0,σ2)時,測試點x*的聯合分布為:

其中,I為單位矩陣,g=g(x,x),g*=g(x*,x),g**=g(x*,x*)。f(x*)的后驗概率分布為:

通過計算所有測試點的后驗的均值和方差,就能得到對于f(x*)的預測結果。
湯普森抽樣是一種從后驗分布中采樣一個采集函數α(d^m;Dt),然后選擇具有最大收益的下一個評估點的隨機策略[19]。由于是根據后驗分布進行隨機采樣取最優,湯普森抽樣能有效解決探索-利用、批量或延遲反饋的問題,其抽樣的隨機性能有效地解決批量抽樣中數據可能相同的問題,但也正是其隨機性使之不能很好地處理高維度的問題。Hernández-Lobato等提出的PDTS將批量貝葉斯優化與順序湯普森抽樣結合起來,本文將該算法與研究的定價問題相結合得到如算法1 所示的偽代碼。在批量從后驗分布中抽樣并評估后,將獲得的批量數據統一加入歷史數據中進行高斯過程的更新。較之順序TS,PDTS在銷售時間有限時能測試更多的數據點,且通過實驗證明算法最終能得到和順序TS 一樣的收斂效果。


本文在Ringbeck 提出的GP-TS(Gaussian process-Thompson sampling)算法的基礎上,將批量湯普森抽樣能在短期測試更多數據點的優勢考慮進來,提出了高斯過程-批量湯普森抽樣算法(算法2)及其加入產品特征ζ來估計需求的變體算法(算法3)。首先在每個銷售期對每個產品的高斯過程進行估計,其次對每個產品進行M次需求函數的抽樣,也即線性規劃部分參照Ferreira 在2018 年所提出的模型,把需求和價格向量作為輸入來求解當前庫存及概率約束下使得期望收益最好的價格。最后一步為觀察線性規劃求解出的最優價格下的真實需求,并對Dt進行更新。


產品需求僅受價格影響的設定在現實生活中是少見的,為了使算法更貼近實際情況,將除價格之外其他影響產品需求的、商家在每期制定價格之前能觀察到的外生特征ζ(t)(ζ∈Z,其中Z為一個離散的特征空間),如季節、天氣、競爭對手行動等信息引入算法中,商家將充分利用ζ(t)來制定p(t)。假設對于任意特征ζ和pk的需求都是根據一個參數未知的已知分布隨意分布的,商家可以觀察到同一個特征ζ在每個產品上的表現情況。是第t期第m次抽樣時的特征是商家在此時選擇的價格向量為pmk時產品i所預測的需求。與算法2 不同,算法3 將特征加入到高斯過程的估計中,即將特征加入需求函數的估計中,且每批次抽樣需求函數之前會對當期的特征進行觀察,并將其加入到后續更新歷史數據中。關于考慮產品特征的GP-PTS變體算法的遺憾值上界,Agrawal 和Goya 在情景湯普森抽樣算法上界的證明得到此時的上界與特征的維度相關,即受到特征數量 ||Z的影響[23]。因此,可以知道本節構建的考慮特征的GP-PTS 算法同樣會收斂至


本文將用數值實驗測試算法2、算法3,并在三種不同的問題設置中將其與相關的基準算法進行比較。首先考慮具有高斯分布需求和庫存約束的單產品設置,然后將算法2的單產品擴展到多產品設置,最后在特征和多產品的參數設置中測試算法3。本文將和GP-TS、BZ(Besbes and Zeevi algorithm)進行比較。GP-TS是本文算法改進的基礎,該算法首次將高斯過程和湯普森抽樣與動態定價相結合,靈活地實現了需求學習的非參數估計。BZ 算法將銷售季節劃分為探索和利用階段,該算法前一階段計算出所有價格的收益情況,在銷售剩余時間內利用此前獲得的知識進行實施。本文參考原作者建議設置的參數,將銷售季節按照τ=T2/3劃分為兩個階段。
在批次的選擇上,本文將參照Alessandro 設置的M=5,10 來進行對比實驗,在數值實驗部分參考GP-TS的數值實驗的需求函數的假設,需求依賴于3個外生的參數(a,b,c),價格(p),當前的產品索引(i),參數γ反映需求函數中前后期特征之間的關系。a=3 000,b=10,c=4,γ=100,i為產品的索引。此外,將隨機因素考慮進去,在需求函數(式(6))上增加一個服從高斯分布的隨機擾動項σ。

數值部分展示了500 個銷售期不同設定下模擬的結果,其中每個圖顯示了在庫存I和批次M的不同組合情況下三種算法在整個銷售期中的性能。最適合衡量需求學習問題績效的方法是每輪產生的收益占最優定價下產生的收益的比例,因此圖中縱坐標1的表現意味著當需求函數先驗已知時,算法所獲得的收益等于最優收益。通過觀察各算法收斂到1的速度,可以了解到各學習算法的性能。
3.1.1 單產品
當商家在有限時間內銷售一種產品時,可以把該產品的庫存視為售出單位產品時產生的資源消耗。在這種情況下,假定初始庫存和銷售期之間存在的函數關系為I=α×T,考慮α=300,700 兩種情況。零售商評估定價決策對高斯分布的每個時期的銷售數量的影響,客戶需求是服從高斯分布的,其均值是價格的函數,參照Ringbeck 的實驗結果,將每個價格的方差σ固定設為150。設定價格為1~100 中的5 個可能的取值,為K={1.0,25.75,50.50,75.25,100.00}。
從圖1結果可以看出,在批量和庫存約束的多種組合下,考慮了批量的GP-PTS性能表現最好,在短期內能迅速獲取價格需求關系并且收斂到最優,批量的取值在該情況下無法看出明顯的優劣。雖不能和GP-PTS一樣快速收斂到最優,隨著銷售期的增長,BZ和GP-TS也會慢慢收斂到最優,二者在探索期表現效果一致,后期由于GP-TS仍在不斷學習,整體效果較BZ更好。BZ在庫存越小時表現越好,原因在于庫存少時銷售前期的歷史數據更具學習意義,在銷售后期商家可能出現供不應求的情況,此時GP-TS 和GP-PTS 無法再獲得探索得到的新經驗來進一步提升性能。
3.1.2 多產品
假定商家銷售四種產品,其余設定和單產品類似,把該產品的庫存視為售出單位產品的資源消耗,對于每一個產品,α=[300,300,300,300],α=[700,700,700,700],價格為1~100 中的5 個可能的取值,每個價格的方差σ固定設為150,即K={[1.0,1.0,1.0,1.0],[25.75,25.75,25.75,25.75],[50.50,50.50,50.50,50.50],[75.25,75.25,75.25,75.25],[100.00,100.00,100.00,100.00]}。由于設定簡單且和單產品相似,如圖2所示的多產品的計算結果表現出和單產品類似的趨勢,整體性能GP-PTS 表現最好,GP-TS次之,BZ第三。由于采用了批量,GP-PTS在短時間內吸收的探索經驗驟增,能以最快的速度收斂,但隨著銷售期的延長,三種算法最終都會收斂到最優。

圖2 定價算法性能比較(多產品)Fig.2 Performance comparison of pricing algorithms(Multiple products)
3.1.3 考慮特征的多產品
在上述兩種設置中,都沒有考慮除價格之外的可能影響需求的特征,為了測試算法3,本文調整多產品設置,加入一個特征向量,需求函數隨機分配特征向量的變動情況,從而模擬影響需求波動的外生因素。以天氣為例,惡劣天氣會使得顧客對在線零售商提供的產品產生更大的需求。假定一個特征向量ζ,向量長度為N,ζi∈[0,1]。在銷售初期,ζ(t)在0~1 之間隨意取值,為0時不受到γ的影響,為1 時需求函數受到γ的影響最大,不同的特征取值下定價問題會得出不一樣的解決方案。為了使得數值實驗更加簡單,假定真實情況下每個產品的特征取值都相等,即ζi=ζj=1。其他的設置與上述第二種的多產品設置保持一致。
如圖3 所示,在考慮產品特征后,各算法在不同的批量和庫存約束組合下表現各異。四種情況下,GP-PTS表現得都更好,GP-TS 次之,BZ 表現相對較差。其中M=10 且庫存較小時GP-TS 曾出現短暫的異常值,BZ則由于前期學習的不穩定且后期不再進行探索性學習,性能無法完全收斂到最佳。整體看來,隨著銷售期的增長,三種算法都會隨著探索經驗的積累慢慢收斂。

圖3 定價算法性能比較(考慮產品特征的多產品)Fig.3 Performance comparison of pricing algorithms(Multiple products considering product characteristics)
觀察銷售前期可以發現,若GP-PTS 在前期(t <50)表現出來的性能好,則在整個銷售期的收益表現都較好,否則,GP-PTS需要通過后期成批的學習來糾正前期需求探索學習中出現的偏差。GP-TS 在每增加一個數據時就對產品的高斯過程進行一次擬合,相較于GPPTS,該算法雖然計算高斯過程更繁重,但在某次抽樣的結果不具代表性時也能使算法更快進行調整,不會產生批量累計誤差的影響。GP-PTS 由于是批量處理數據,若在t期由于異常數據使得產品高斯過程產生的擬合效果不好,則t+1 期時批量抽樣產生的誤差將正比于批量M累計增加,在短期內對收益產生的負面影響更大,此時,GP-PTS只有在更多代表性數據出現時模擬出來的高斯過程才會趨于真實情況做出調整,糾正后的算法也會逐漸收斂。BZ 由于只在(0,τ)內進行探索性學習,算法的整體性能取決于其在探索期內的表現,若在探索期表現不好,后期由于無法再更新經驗會使得算法無法收斂到最佳性能。綜合來看,在考慮產品特征時,GP-PTS能夠更快更好地收斂,相較于其他兩種算法,在銷售期一定時更新探索的數據量更多,在數據量一定時高斯過程的計算復雜度更小,整體性能更好。
本文使用某平臺2017 年4 月在某社區上提供的脫敏后的出行產品相關的歷史數據,整個數據集共計4 000個產品,包括22個產品相關特征、195萬條成交量和成交價格。本文在數據預處理時主要進行了以下幾個步驟的處理:通過描述性分析,發現價格、評分等特征存在異常情況,因此,首先對如價格、評分為負的異常數據進行了刪除;另外,地鐵站距離、火車站距離、市級、經緯度等特征缺失值較多,考慮到有綜合評分的特征,故對上述缺失值較多的特征進行了刪除;通過對單個產品交易形成的時間進行提取,發現每個產品在同一天并無重復交易記錄,故無需去重;考慮到銷售期的問題,本文最終篩選出交易次數大于500的產品進行討論,將產品的綜合評分選為具備代表性的產品特征來進行實例分析。示例中選擇的是銷售數據最多的產品(產品id 為1550,綜合評分為3.5)進行批次為10,銷售期為500 的算法應用模擬。
如圖4 所示,把算法應用到真實數據時,三種算法計算的結果都比真實情況下的收益高,其中GP-PTS 表現最好。算法在此處較數值模擬的結果呈現出波動的原因在于,本文在處理真實數據時僅采用綜合評分這一個特征對價格-需求函數進行擬合,也即,假設了需求只受價格和綜合評分的影響,此時高斯過程模擬出的價格-需求函數與真實需求函數(受到價格、評分、地理位置、日期活動等多個特征影響)之間存在較大偏差,最終由于需求函數學習的準確性問題使得結果呈現出波動。但仍然能夠明顯地看出,若給定一個先驗且只有一個給定特征時,基于算法模擬出來的價格會取得比真實價格更好的收益。

圖4 某平臺數據集模擬Fig.4 Simulation of a platform dataset
本文通過短期內同類型產品的需求函數的學習,考慮批量貝葉斯優化的優點,構建了基于探索-利用的兩階段學習和決策過程的定價模型——高斯過程-批量湯普森抽樣算法(GP-PTS),最終通過數值模擬和某平臺真實數據集的分析得到了如下結論:若給定一個先驗且產品特征完備時,基于GP-PTS 算法模擬出來的價格會取得比目前平臺價格策略更好的收益,但是實際情況中由于特征無法完備,需求函數的學習往往無法使得算法達到完全精準。GP-TS 和GP-PTS 在本質上是相同的,二者都可適用于離散價格集的情況,高斯過程的引入可以學習價格和需求之間的任何函數關系,此外,計算的優化模型都應用于網絡收益管理問題。但本文所使用的批量的思想使得GP-PTS 具備了更多優點。首先,當銷售期T一定時,GP-PTS會使用更多的數據,使得算法在更短的時間快速達到最優性能。其次,當能夠使用的數據一定時,GP-PTS 會進行更少次數的高斯過程的模擬,極大地簡化了模型的計算復雜度。再次,為預防批次抽到相同數據的情況,本文參考Kandasamy的理論證明使用湯普森抽樣內在的隨機性來解決,抽樣的隨機性可以在并行計算時避免冗余函數評估,相較于UCB 和EI為了防止M次中存在抽中同樣的點而引入額外的超參數,計算流程更加便捷有效。最后,GP-PTS還可拓展至捆綁銷售以及時下熱興的盲盒銷售概念中,也即,將各資源看作是單個產品,產品則為各種不同產品的組合。
當然,本文也有許多不足之處。其一,在用真實數據進行擬合時,由于產品特征的缺失值過多,擬合需求函數時只使用了一個產品特征,該真實應用場景的擬合在一定程度上具備很大局限性。其二,雖然本文提出了批量貝葉斯優化的方式來減少高斯過程的計算次數,但估計高斯過程這一步驟本身是非常復雜且耗時的,因此該算法不能拓展至更大的產品數據集。其三,本文僅考慮產品特征,實際生活中商家應該更多地對用戶特征進行分析,為用戶提供更好的購物體驗。因此,考慮更多產品集以及在不違背社會道德,考慮公平的原則下,針對用戶進行定價是本文后續研究的重點。