吳錦超 顧孟迪
(上海交通大學 安泰經濟與管理學院,上海 200030)
由于受2020年席卷全球的疫情影響,人們更接受以線上的行為方式代替線下,例如在線辦公、在線教育、在線會議等,這對于發展成熟的線上銷售模式也是一種較大的利好。以此為契機,線上銷售模式下的問題再次成為研究的熱點。從實踐意義的角度,全新的線上銷售的衍生模式處于不斷探索與發展中,例如利用視頻直播導流與粉絲經濟的直播帶貨模式,以及對于海購服務不斷探索的跨境電商模式。在線上銷售模式的發展與演變過程中,如何切實地提升廠商所獲得的收益尤為值得關注。
本文基于線上銷售的場景,解決的是在給定的銷售周期內廠商應該如何規劃定價方案來獲得預期較高的累計收入的問題。在定價方案的制定上主要利用了動態定價的手段充分地挖掘用戶的消費者剩余,而在方案的實現上則是利用了機器學習的方式,將在多臂賭博機問題中得到廣泛應用的湯普森采樣算法遷移到了動態定價問題上。在該基礎上對用戶群體進行了分群研究,期望針對不同消費能力的用戶制定出不同的價格以最大化消費者剩余。在制定了定價方案后,又對于方案整體的落地可行性進行了進一步研究與分析。
收入管理問題最早起源于航空業,其主要解決的是:針對具有易逝品性質的飛機票,如何在不確定的需求下實現收益最大化的問題。從更寬泛的角度,收入管理問題解決的是:如何在適當的時刻,將適當的產品以適當的價格賣給適當的用戶。傳統的收入管理問題主要是根據歷史數據推斷出需求函數的分布,再在該需求函數的基礎上進行最優化問題的求解。但其主要存在的問題是:需求函數反映的是歷史的需求,而收入管理問題面向的是未來的可能需求,因而在時間拓展性上可能存在估計誤差。而解決該問題所提出的方法為需求學習,即假設需求函數的形式可以從歷史數據中推斷出來,但包含未知參數,并利用銷售的新數據不斷對參數與函數的分布進行更新。對于越來越成熟的線上零售行業,隨著數據實時獲取能力的提升,需求學習方法對于需求函數的估計問題可以實現更高頻的迭代。
作為收入管理的重要實現方式,動態定價也被廣泛采用。動態定價最初來源于經濟學中的價格歧視原理,即同一件產品針對不同消費者制定不同的價格,通過挖掘消費者剩余以增加收入。隨著經濟社會的發展,動態定價的內容也在不斷地拓展,包括相同產品在不同的市場需求下的定價不同,相同產品在不同庫存水平下的定價不同等。Elmaghraby和Keskinocak認為動態定價得到廣泛應用的原因有:1)線上行為產生更多的用戶行為數據,可以更好地輔助決策;2)價格調整的菜單成本在不斷降低;3)更多的算法與模型得到應用,從而更高效地實現策略。
已經有部分文獻針對動態定價在零售業中的應用進行研究。Gabriel和Bitran驗證了針對隨機需求的最優化定價問題可以通過Hamilton-Jacobi-Bellman方程求解,但在實際應用時的效果有限。Elmaghraby與Keskinocak對考慮庫存的零售問題的動態定價進行研究,并按照三個維度劃分問題:1)是否可以補貨(R/NR);2)需求是否隨時間變化(D/I);3)用戶是否短視(M/S)。An和Fromm針對動態定價在電子商務中的應用優勢進行研究。Ferreira和Simchi-Levi則是引入湯普森采樣算法分析了帶庫存約束的收益管理問題并進行后悔值上界的求解。
本文所使用的研究方法參考了針對電子商務領域的研究與Ferreira和Simchi-Levi提出的將湯普森采樣算法遷移至動態定價領域的思想,并在原先研究的基礎上,對用戶群體預先進行分群,從而對不同消費能力的用戶制定不同的價格以最大化收益。在制定了定價方案后,又對方案的落地能力與可行性進行了分析。
在針對多搖臂賭博機問題的研究中,湯普森于1933年提出了一種基于貝葉斯理論的算法,被稱為湯普森采樣算法(Thompson Sampling)。盡管比較早期就已經提出,但是由于其缺乏后悔值上界的理論證明,與后驗分布的反復更新對于計算能力的高要求,而一直未被廣泛采用。直到若干篇文獻提出,對于多搖臂賭博機問題可以采用湯普森抽樣算法進行決策,并與其他的UCB1、MOSS算法等相比,湯普森抽樣算法在模擬實驗中有著更低的后悔值,之后才被較為廣泛地接受與使用。
湯普森采樣的原理是基于貝塔分布,貝塔分布包含兩個參數,一般寫作X~Beta(α,β)。貝塔分布可以理解為事件的概率分布,當事先不了解隨機事件的概率分布時,通過確定合適的參數,該分布可以給出所有事件出現的概率。
湯普森采樣算法針對多搖臂賭博機問題具有較為成熟的理論研究。
多搖臂賭博機問題的描述:賭博機有K個搖臂,在用戶選擇某個搖臂后,賭博機有一定概率吐出一枚硬幣,該概率的數值未知,并且不同搖臂之間的概率值不相等。該優化問題是使得用戶搖動N次搖臂之后,得到的累計硬幣數量盡可能多。
參數假設:決策階段n=1,2,3,…,N;搖臂k=1,2,3,…,K;搖臂k在決策階段n的累計執行成功次數為αk(n);搖臂k在決策階段n的累計執行失敗次數為βk(n);搖臂k在決策階段n的采樣值為θk(n)。
步驟1):對每個搖臂k,令αk(1)=0,βk(1)=0。
步驟2):在每個決策階段n下,根據分布Beta(αk(n)+1,βk(n)+1)進行K次采樣θk(n)。
步驟3):在每個決策階段n下,所選擇的搖臂a(n)= argmax (θk(n)),并記錄回報值rn。
步驟4):若rn=1,則αa(n)(n+1)=αa(n)(n)+1;若rn=0,則βa(n)(n+1)=βa(n)(n)+1。
步驟5):循環步驟2)至步驟4),直至達到最大決策階段N。

本文所分析的是線上零售的業務場景:在一個給定的銷售季度內,零售商通過調整產品的定價與分析用戶畫像來最大化該銷售季度的總收入。
在建模過程中,將一個銷售季度拆分成T個階段,并假設在每個階段零售商銷售N件產品。在產品價格上,假設存在K個定價分別為{p1,p2,…,pk},其中pk是一個長度為N的向量,用來表示所有產品的某種定價策略。具體而言,對于產品i,有pk=(p1k,p2k,…,pNk),其中pik是該策略下對產品i的定價。根據動態定價的文獻,還引入了價格上限p∞,表示在該價格下用戶完全沒有購買產品的需求。記P(t)=(P1(t),P2(t),…,PN(t)) 表示零售商在某一個階段采取的價格,并且滿足P(t)∈{p1,p2,…,pk,p∞}。
用戶則是在每個階段根據零售商的產品價格做出相應的購買決策,記D(t)=(D1(t),D2(t),…,DN(t)) 表示用戶在某一個階段的產品需求量。假定對于給定的P(t)=pk,需求D(t)是根據累積分布函數F(x1,x2,…,xn;pk,θ)形成的概率分布的采樣值,其中θ為未知參數,體現需求分布的類型已知但參數未知。
根據用戶畫像,可以通過該季度前的用戶消費數據,將用戶聚類成M個大類。對于不同類型的用戶群體,假定其需求函數的分布相同但是未知參數θ不同,記θ=(θ1,θ2,…,θM),并且利用價格歧視對每個類型的用戶分別進行定價,從而最大化該季度下每個產品在每個用戶群體中的總收入。
可以將該場景下的零售商的動態定價問題與傳統的多搖臂賭博機問題進行類比,其中零售商對于每類客戶的每個產品的價格簇對應于搖臂,相應的收入則對應于搖動搖臂后的獎勵。

對于每一個群體的收入最大化問題,可以采用湯普森采樣在多搖臂賭博機問題中的應用來進行建模。
先根據用戶在目標季度前的行為數據對用戶群體進行聚類分析,再對每一類用戶采用如下的最優化模型進行求解。
對目標季度內的每一個階段進行如下步驟(t=1,2,…,T):
步驟1):根據歷史數據確定未知參數θ(t)的分布情況Θ(t)。
步驟2):在每個決策階段t下,根據相應分布對未知參數θ(t)進行采樣。
步驟3):對每種定價pk,根據其歷史數據確定產品需求與定價間關系的函數分布類型F(x1,x2,…,xn;pk,θ),代入θ(t)的采樣值后,計算產品的平均需求dk。
步驟4):在每個決策階段t,求解如下的最優化問題,其中xk表示最終價格是給定K個價格的線性組合的形式:
xk≥0,k∈[K]
步驟5):增加當前階段需求的實際值,并更新參數θ(t)的分布情況Θ(t)。
步驟6):循環步驟2)至步驟5),直至達到最大決策階段T。

為了解釋在動態定價場景下探索與利用困境,可以考慮以下簡化場景:對某一類型的用戶,在某個階段,假定采取p1的定價策略在需求函數的先驗分布下可以獲得最高的預期收益,那采取貪婪策略的零售商會以概率為1采取p1的定價策略。但是該做法是在預測的前提下可以獲得最高的收益,但是無法保證在真實的情況下同樣能夠獲得最高的收益,從而引出了探索利用困境的問題,即零售商應該通過何種定價策略,在充分利用當前最優價格的情形下(對應于利用階段),對于非當前最優的價格進行探索實踐(對應于探索階段),從而在平衡利用與探索的過程中進行更優的定價決策。
下面將圍繞一個零售商銷售商品的定價策略的具體數值案例,分析湯普森采樣算法在動態定價中的應用效果。為了簡單起見,考慮零售商在一個銷售周期內只能銷售一種產品,零售商定價方案的集合是已經預先決策的,并且不考慮定價方案間的線性組合。為了對湯普森采樣的結果進行進一步分析,還引入了兩種常見的貪婪算法進行對比。
在數值案例中,假定零售商在一整個銷售周期內只銷售一種產品,并根據產品在市場上的歷史表現與目標客戶的群體畫像,預先制定了定價方案。零售商對于產品在不同價格下的需求函數的類型是已知的,其場景對應的是零售商針對一款具體的產品對用戶進行定價并投放。因為用戶的選擇可以簡化為購買或不購買,所以對于需求函數采用的是二項分布,而二項分布參數的含義則是用戶采取購買行為的概率,也可以理解為用戶期望需求的大小。其流程是針對同類型的用戶,按照先后順序分別對不同的用戶制定不同的價格,以實現獲得的期望總收入最高。
其中,價格的集合為{¥19.8,¥28.8,¥36.8,¥41.8},理論平均需求為d(¥19.8)=0.8,d(¥28.8)=0.6,d(¥36.8)=0.3,d(¥41.8)=0.2。該需求的參數對應的是理論值,在不斷變化定價并觀察用戶反饋的過程中,一步步地對理論值的大小進行預測,從而使預測值更為接近理論值。
在數值檢驗中采用的三種算法如下:
樸素貪婪算法:屬于該問題下的貪婪算法中的一種,在此次數值模擬中該算法也作為所有算法的基準。該算法將銷售周期切分成兩個部分,在第一個周期內全部進行探索,在第二個周期內直接根據之前累計收益最高的定價方案進行應用。這就是被稱為樸素的原因,也使該算法在現實場景下經常被使用。
ε-貪婪算法:基于樸素貪婪算法進行調整,希望對于探索與利用階段的劃分進行平衡。其先在(0, 1)之間選擇一個較小的數值作為ε,每個決策階段是:以ε的概率進行探索,即在所有價格方案中隨機挑選出一個價格;以(1-ε)的概率進行利用,即選擇截至當前平均收益最大的價格方案。該算法在基準貪婪算法的基礎上,進行了探索與利用階段的劃分。
湯普森采樣算法:按照2.3中的建模過程,在每一位新增用戶進行購買選擇之后,會對所有定價下的期望需求值進行預測,并且挑選出價格與期望需求乘積最大的定價方案,并對下一位用戶采用該定價方案。
數值仿真的結果見圖1,其中第一根線代表的是湯普森采樣算法,第二根線代表的是ε-貪婪算法,第三根線代表的是樸素貪婪算法。在參數制定方面,對ε-貪婪算法將ε的數值定為0.3,對樸素貪婪算法將前30%的周期數用于探索階段并且在各個價格方案間平分總次數,將后70%的周期數用于利用階段。

圖1 三種算法的不同定價策略的數值仿真結果
其中,圖1的橫軸代表不同的周期數,并在作圖階段進行了對數處理。圖1的縱軸代表了不同方案的收益占理論最大收益的百分比,在該問題的數據下,單個用戶在不同價格下的理論收益等于價格與對應期望收益的乘積,具體的數值為集合{¥15.84, ¥17.28, ¥11.04, ¥8.36},取最大值¥17.28,其代表理論情況下的最佳方案是對所有用戶都采用¥28.8的定價,而其所對應的理論最大收益則是其與周期總數的乘積,為17.28T。而縱軸的數值則代表了每個方案的收益占理論最大收益17.28T的百分比。為了降低數值計算過程中的隨機性,在具體方案收益的計算中選取的是相應條件下10次取值的平均值。
分析圖1可以得到以下結論:1)在最終的累計收益上,湯普森采樣算法優于ε-貪婪算法、樸素貪婪算法,并且湯普森采樣算法在各個周期數下都具有明顯的優勢。2)不同算法的累計收益均是隨著周期數的增加而遞增的,但是其邊際增長不斷降低。3)對湯普森采樣算法的表現進行具體的分析,當周期數為100時,其預期收益占理論最大收益的百分比已經達到82%;當周期數為1000時,其占比達到了94%;當周期數為10000時,其占比已經高達98%,已經非常接近于理論最大收益,可以作為理論最大收益的一種有效的近似計算方式。
根據仿真的結果可知,湯普森算法相較于其他貪婪算法在最終的效果上有顯著的優勢。在采用湯普森算法之前,同樣可以根據用戶在目標季度前的行為數據對用戶群體進行聚類分析,再對每一類用戶進行單獨求解,并對于每一類型的用戶制定不同的定價策略,從而利用價格歧視的方式為零售商獲得更高的總收入。
考慮為購買力更強的用戶制定出更高的定價策略方案。假定可以通過用戶的歷史行為數據將用戶分成低端用戶、中端用戶、高端用戶三類,并且類型占比分別為70%、20%、10%。簡單起見,不再新增其他的價格方案,仍舊沿用原先的定價策略集合{¥19.8,¥28.8,¥36.8,¥41.8},但是對在每個價格下的理論平均需求的大小進行調整,具體數值見表1。

表1 不同類型用戶在不同定價下的理論平均需求的數值
數值的設定需要滿足按照不同類型用戶的權重加權后的用戶總體需求與原先的設定保持一致,即對于用戶總體的理論平均需求的大小滿足d(¥19.8)=0.8,d(¥28.8)=0.6,d(¥36.8)=0.3,d(¥41.8)=0.2。而在算法的選擇上,直接采取效果較優的湯普森采樣算法對于不同用戶類型各自按照上節中的數值仿真方式預測其收益,具體的數值仿真結果見圖2與圖3。圖2與圖3中橫坐標均是周期數的對數值,不同的是各自的縱坐標。圖2的縱坐標是不同類型用戶的預期收益占其各自理論最大收益的百分比,因而均小于100%;圖3的縱坐標則為了之后的累加操作而進行了基數的調整,其代表的是不同類型用戶的預期收益占原先用戶總體理論最大收益的百分比,考慮到中端與高端用戶的消費能力更強,其相應的理論最大收益均高于原先用戶總體的理論最大收益,因而其縱坐標取值會大于100%。

圖2 用戶分群后的預期收益情況

圖3 用戶分群后的預期收益情況 (調整基數后)
根據圖3中調整基數后的低端用戶、中端用戶與高端用戶的預期收益占比,按照其相應的權重{0.7,0.2, 0.1}進行加權累加后,作為聚類方式下用戶總體的預期總收益,并將其與原先的用戶總體的預期總收益進行對比,結果見圖4。從圖4中可以發現聚類后用戶總體的預期總收益均高于聚類前的結果,增加幅度達到了10%以上,因而可以部分驗證廠商根據歷史行為數據對用戶進行分類后的預期收益會顯著更高。

圖4 聚類前后用戶總體的預期總收益對比
在方案的落地性分析中聚焦于兩點:1)如何讓用戶在價格歧視下,降低對于價格的感知能力;2)如何在現實應用中實現多次定價。
針對問題一,目前行業內的做法主要是在產品的統一原始價格上進行價格的再次包裝,從而降低用戶對于產品價格的感知能力。包裝價格的手段有隨機抽取優惠券、完成任務獲得額外補貼等形式。具體分析數值案例中產品的階梯定價有{¥19.8,¥28.8,¥36.8,¥41.8},而可以采用的手段則是將產品的原始價格定為¥50,再分別設立4折、5.8折、7.4折、8.4折的優惠券供用戶隨機抽取,從而實現階梯定價的目的。在該場景下,這樣就可以更好地讓用戶接受同一產品不同定價的設定。

本文具體分析了在有限的銷售周期內基于動態定價的收入管理問題,其解決的問題場景是:使得零售商在該銷售周期內獲得盡可能高的累計收入。為了更貼近現實場景,假定了零售商在銷售周期開始之前并不知曉各個價格下的用戶平均需求,但可以通過用戶群體的歷史購買行為得到包含未知參數的需求函數的分布。本文的主要貢獻在于遷移應用了湯普森采樣算法,通過動態定價的方式設計了一套定價策略以幫助零售商實現更高的累計收入,在該基礎上采取了預先的用戶聚類,并提出了方案的落地方式。在數值仿真的過程中,采用湯普森采樣算法的預期總收入好于傳統的啟發式算法,展現了以湯普森采樣為代表的機器學習算法在收入管理領域中的應用價值,并且采取預先用戶聚類的方案也顯著好于原方案。根據本文的算法所提出的定價策略是:在每一個單位定價周期內,通過算法選擇出隨機數的最大值所對應的候選項作為該階段的定價,并更新該候選項的貝塔分布。循環給定次數之后,完成該優化問題的完整定價策略。而在策略的可落地性上,可以采用包裝后的價格歧視方案來降低用戶的價格感知能力,并且對于用戶群體采取分批逐次定價的方式更好地實現了價格的多次調整。
對未來的工作還存在一些可以繼續深入研究的方向:其一是進一步針對用戶群體劃分的準確度與最終預期總收入之間的定量關系;其二是進一步考慮情境關系下的湯普森采樣算法(Contextual Thompson Sampling)在收入管理問題上的應用,并與傳統的湯普森采樣算法進行對比分析;其三是與零售商合作進行實證研究,進一步探索該策略在實際場景下的有效性。