貝葉斯統計和因果推斷在轉轉估價中的落地實踐

架構師修行手冊發表於2023-10-27

來源:轉轉技術

  • 一、業務背景

    • 1.1、為什麼需要智慧估價模型

    • 1.2、什麼是理想的估價模型

    • 1.3、一些相關的嘗試

  • 二、基於貝葉斯統計和因果推斷的定價方案

    • 2.1、基礎原理

    • 2.2、利用貝葉斯統計實現sku粒度定價

    • 2.3、使用因果推斷實現商品粒度定價

  • 三、總結

  • 四、參考資料


一、業務背景

轉轉作為一個主打手機+3C數碼品類的電商平臺,每天都有著數以萬計的商品上架到B2C賣場,這其中既包括三方商戶依託平臺流量進行售賣的商品,也包括了轉轉自身C2B回收業務回收後進行售賣的商品。在上架的過程中,價格必然是繞不開的一個需求,如何給每一臺商品制定更貼合市場供需和更匹配使用者購買需求的價格策略,同時又不傷害商戶及平臺自身利益,是平臺需要重點關注的問題。

1.1、為什麼需要智慧估價模型

基於轉轉平臺當前的體量,多樣的貨源結構,每日以萬計的上架量,不斷變化的市場環境和供需結構,僅僅透過人工對商品的價格進行管控,是有一定的侷限性,同時也需要大量的人力成本。透過一個智慧估價模型來制定價格策略,在投入更少人力成本下,對於不同型號,不同機況的手機及3C數碼做更精細化的價格運營,並且更加靈活自動地捕捉和適應外部市場和供需結構的變化,對於平臺自身營收和使用者的購物體驗,都是非常重要的。

1.2、什麼是理想的估價模型

同大多數分類迴歸模型需要有所區別的是,一個理想的估價模型的衡量指標,就不再僅僅是全域性的準確率。全域性的準確率高的估價模型也無法避免出現模型出價遠遠偏離商品實際價值的情況,而即使是極少數的bad case,對業務和使用者來說也是難以接受的;同時,由於業務運營人員的需要,理想的估價模型需要有別於傳統深度學習模型的黑盒模式,當人工需要參與到價格策略的制定時,是能夠從中找到抓手的,因為儘管模型的出價是對當前市場價格的合理預測,但業務基於對市場的考量和業務需要,需要有對價格進行整體或區域性微調的能力。因此,模型需要具備更多的確定性和可控性,而不再是一個完全的黑盒。

1.3、一些相關的嘗試

  1. 儘管透過人工對每一臺商品進行定價具有極大的難度,在但在一定粒度的屬性上進行人工定價,比如對同一型號,運存,成色的商品,以同樣的價格進行上架是可行的。該方案可控性高,可以一定程度避免bad case的產生,但卻無法進行更細粒度的定價,並且價格的調整和維護帶來更高的人力成本。
  2. 利用深度模型進行迴歸,以歷史的成交樣本進行訓練,成交價為訓練的目標,將商品的屬性、質檢資訊、歷史的成交統計資訊作為特徵。該方案儘管能夠精細地對每一個商品進行估價,但是作為一個黑盒的模型,無法避免bad case的出現。
  3. 在方案1基礎上進行調整,同樣是人工定價方案,但僅僅只對部分的sku進行定價,同時維護一套不同商品屬性之間的價格差,兩者結合對所有的sku進行定價,儘管商品的價格是波動的,但不同屬性之間的價格差相對穩定。該方案相對來說降低了人力維護的成本,但與方案一一樣,同樣無法更細粒度定價。

二、基於貝葉斯統計和因果推斷的定價方案

2.1、基礎原理

在經典的貝葉斯理論中,我們透過觀測能夠得到樣本X,同時我們需要進行估計的未知量為 ,對該未知變數的描述可以用一個機率分佈來概括,也就是以下的公式:

其中, 分別為先驗分佈,似然函式和後驗分佈,而對應到我們的場景中,如果我們的價格滿足於某一個數學分佈,而則是該分佈的引數,那麼我們的問題就是可以透過計算 得到的估計值來得到解決,我們往往會採用以下兩種方法來進行求解:

極大似然估計(MLE)

即找到似然函式的最大值,找到一組引數估計,使得目前觀察到的樣本資料的機率最大。

最大後驗機率估計(MAP)

計算引數的後驗分佈,選擇最高機率對應的作為最終估計值。

MCMC

我們可以用上述的方法試圖去求解,正如我們曾經嘗試的用機器學習的最佳化方法進行求解一樣,但無論是MAP還是MLE,一方面將會帶來一定的計算開銷,另一方面也有適用的條件。實際上,我們可以透過對後驗分佈進行取樣的方法,來近似擬合真實的後驗分佈。馬爾可夫鏈蒙特卡洛(MCMC)的metropolis-Hastings方法被證明是一種在已知後驗可靠的取樣方法:

  1. 我們對後驗機率 進行取樣,首先指定取樣的初始值,設定狀態轉移次數閾值,需要的樣本數量

  2. for =0 to + -1:

    a. 從條件機率分佈中取樣得到樣本,這裡可以假定服從正態分佈

    b. 從均勻分佈取樣 中隨機生成一個, 與接受機率進行比較,如果,則接收本次取樣後的結果為新的取樣值, 反之則拒絕此次取樣,取樣值仍然為

  3. 保留最近的個取樣值作為本次取樣的結果

因果推斷

貝葉斯統計和因果推斷在轉轉估價中的落地實踐

因果推斷是基於某一事件發生的條件得出關於因果聯絡結論的過程。例如,對一件商品進行發券或者的行為,會不會直接促進商品由難以成交的狀態即刻被買下,並且成交的原因不是因為其他因素的改變。這裡需要給出一些因果推斷中的關鍵定義:

  1. 處理變數(T):即受策略開發者控制的變數,上面案例中商品是否被投放優惠券以及投放優惠券的金額,可以當做處理變數。
  2. 響應變數(Y):即希望最佳化的目標變數,上面案例中商品是否成交可以當做響應變數。
  3. 處理效應():即處理變數帶來的增益(uplift),上面案例中是優惠券帶來的商品轉化的增量。
  4. 協變數(X): 影響處理效應的關鍵特徵(季節,流量)

一般性地,假設處理變數是多元的,即T=0,1,2,...,k,令T=0為參考值,其餘處理值對應的處理效應可以被定義為

最大處理效應所對應的處理值就是我們所需要求解的,可以看到,因果推斷相較於一般的機器學習模型所不同的是,它不聚焦於對結果變數的推斷,而是分析處理變數的改變如何影響著結果變數。
因果推斷的重要一環是透過隨機對照試驗來獲得樣本,該試驗需要將實驗物件根據處理變數的不同分到對照組和實驗組當中,兩個組的條件和環境保持一致,從而對結果變數進行研究。然而,當缺乏隨機對照試驗的環境時,就需要考慮別的方案。假設目前我們只有觀測資料,傳統的做法是做傾向性評分,可以對每一條觀測樣本的協變數,建模一個對於其處理變數的預測機率(簡單的線性模型就可以滿足需求),這就是傾向性評分,然後將該評分透過匹配或加權的方式,建立實驗組和對照組之間更為平衡的比較基礎。
這裡我們引入一種基於深度網路來解決因果推斷問題的模型,同時該模型不需要事先進行隨機對照試驗。

貝葉斯統計和因果推斷在轉轉估價中的落地實踐

Dragonnet是一個處理二元因果推斷的三頭網路,它的工作原理如下:

  1. 透過來訓練表徵協變數X,的網路引數是共享的。
  2. 基於的輸出來預測T和Y。Q分別由一個雙層的全連線網路構成,T=0的樣本只透過來訓練,而T=1的樣本只透過來訓練,一條樣本只會透過其中的一頭,且只更新對應的網路引數。作為傾向性評分網路,由一個簡單的sigmoid函式構成,其功能就是透過協變數來訓練得到傾向性得分
  3. 損失函式為

2.2、利用貝葉斯統計實現sku粒度定價

如前所述,我們可以用貝葉斯的理論,結合MCMC的方法進行取樣,構建出一套sku粒度的估價模型。在我們的方案中,我們將相同機型、容量、成色的機器,認為是同一個sku。在之前使用機器學習模型進行迴歸估價的方案中,實際上我們所求解的是這樣的一個問題:

其中 y是我們所需要估計的價格,x可以認為是需要估價的商品的一系列特徵,而 則是模型的引數,我們可以透過訓練得到得到 以及其對應的 ,但這是一個黑盒的過程,我們並不能直觀去控制 是一個怎樣的函式,尤其是當我們採用的是深度神經網路等高階非線性的模型的情況下。反映在實際的場景中就是,當一個商品輸入到 中作為入參,儘管透過訓練,我們在測試樣本集上得到了非常理想的MSE,但對於 輸出的值域範圍我們是難以把控的。
但是如果我們能夠根據先驗的知識定義出 的機率模型,那麼我們的問題顯然就能得到解決。假設商品的特徵x和y 服從某種已知的機率分佈,而該分佈的機率密度函式也是已知的,那麼我們只需要利用剛剛介紹的MCMC的方法透過取樣得到機率分佈的引數。由於 是我們預先給定的,顯然我們能夠清楚地知道模型的邊界和可能出現的風險。
但是需要構建出 的機率模型,並不現實,探究商品的海量特徵和價格之間的分佈,顯然需要花費更大的精力。因此,不妨我們轉換一下思路,我們或許可以探索價格與成交之間的關係,因為對於價格和成交,其實我們是具備一些先驗的認知的。很顯然,剛釋出的iphone 15系列手機絕對不可能以1000元的價格上架,那樣平臺的庫存必然立馬就告罄了,同樣,一個高於新機的價格,同樣會使得商品無法被成交,價格的波動是在一定範圍內波動,且價格越高,越難以促進成交,價格越低,則越容易促進成交。所以我們可以將問題轉變為求解以下的機率:

我們以iPhone 12 Pro 128GB 95新為例,下面是該sku下價格與成交之前的關係:

貝葉斯統計和因果推斷在轉轉估價中的落地實踐

在上圖中,我們選用了最近一週的成交的資料,1代表成交,0代表未成交,我們可以看到,當商品的價格低於2900之後,只有成交的樣本,而當商品價格高於3800,所有的樣本都是未成交樣本。在中間密集區域以外的部分,則是價格越高,成交的樣本越少,而價格越低,成交的樣本越多,中間的密集區域,是大部分樣本集中的部分,也就是市場價格主要所出的位置,符合我們期望的價格極有可能落在這個區域。
觀察這個資料分佈,我們可以聯想到其與logistic函式的曲線具有一定的相似性,如下圖所示:

貝葉斯統計和因果推斷在轉轉估價中的落地實踐

因此,我們不妨假設價格與成交之間的關係服從Logistic分佈,即

其中,

我們對樣本中的價格進行歸一化的處理,並且上取樣明顯高於低於該機型市場價位的價格樣本,分別打上對應的y,價格過高則為未成交,價格過低則為成交,此舉是為了更好地擬合我們的分佈,因為觀測資料中並不一定會有這些不合理的定價,而為了讓我們的價格分佈中能考慮到這些bad case並防止它們的發生,指定,進行MCMC取樣。

貝葉斯統計和因果推斷在轉轉估價中的落地實踐

如上圖所看到的那樣,引數都成功得到了收斂,我們選擇取樣點的均值來作為最終兩個引數的估計值, 與價格的分佈如下:

貝葉斯統計和因果推斷在轉轉估價中的落地實踐

根據的計算方法,我們再對價格進行計算:

注意在這個公式中,除了已經透過取樣得到的之外,也成為了確定的變數,它的取值可以透過業務的自身考慮進行給定,當庫存堆積,需要以更快的流速來清理庫存,那麼可以被指定為一個大於0.5的值;當庫存告罄,市場需求增加,需要減慢銷售的速率的時候,可以被指定為一個小於0.5的值。

2.3、使用因果推斷實現商品粒度定價

如前所述,我們已經實現了在sku上構建了一套價格的計算方式,它滿足了我們所期望的對於價格的可控性,因為價格的分佈是已知的,同時我們也可以根據對於銷售節奏的預期,透過不同的得到不同的定價。
但上述方案並沒有能夠很好地滿足我們的另一個期望——更細粒度地在商品上進行定價。即使是同一個sku,隨著質檢狀況、購買渠道、外觀情況等等的區別,在價格上也同樣需要有所區別。因此我們以貝葉斯統計在sku粒度上的定價為基礎,利用Dragonnet進行商品維度的定價,該定價方案的關鍵步驟描述如下:

  1. 圈選出所有的需要估價的sku,使用2.2中貝葉斯統計的方法構建每個sku下價格與成交的機率模型,並且令,計算出每個sku對應的價格
  2. 範圍內取樣M個價格,將作為參照值,不同的M個價格作為不同的處理值。我們利用商品成交/未成交資料作為訓練樣本,樣本包含了商品的一系列特徵,同時將商品價格轉化為與其數值上最為接近的處理變數。
  3. 建模Dragonnet模型,此時需要對網路結構進行修改,因為我們的問題已經不再是二元的問題,因此除了繼續保留來進行傾向性評分,我們還需要搭建M+1頭網路,它們分別透過參照值和不同處理值的樣本來進行更新。同樣,我們以樣本是否成交來作為結果變數y,此時我們的損失函式為
  1. 訓練完成後,當我們需要對商品進行估價時,首先我們需要尋找到處理效應最大的處理變數

根據,我們不難得出最大處理變數所對應的價格取樣點,將此作為商品的定價。
就像2.2中所描述的,我們可以根據對銷售速度的期望的不同,來給定的取值,從而得到期望的價格參照值。更重要的是,透過上述因果推斷的方案,我們透過規定不同的價格取樣點作為處理變數,尋求成交增益最大的取樣點,實現了在商品維度上更細粒度的定價。同時,由於處理變數是圍繞價格參照值周圍進行取樣,而不像一般的深度模型是在一個不受限制的值域上進行價格推斷,因此價格更為可控,更大限度地避免了異常價格的出現。

三、總結

第一節中,我們介紹了商品估價的業務背景,關鍵問題,和對其應用於轉轉平臺的要求,同時也介紹了當前業務為實現一套有效的商品估價機制所進行的一些嘗試。

在第二節中,我們詳細的介紹了貝葉斯統計和因果推斷的相關原理,並將其與轉轉平臺所面臨的在商品估價上的關鍵問題相結合,在此之上提出了兩種不同粒度的估價方案。

四、參考資料

【1】最大似然估計和最大後驗估計:
【2】PyMC3機率程式設計及模型搭建,入門篇:
【3】Markov Chain Monte Carlo in Python:
【4】廣義因果森林的構造以及在線上交易市場的應用:https://mp.weixin.qq.com/s/Jaue3mxbayaMUvFc3MrNdw
【5】Shi, C., Blei, D. M., & Veitch, V. NeurIPS (2019). Adapting Neural Networks for the Estimation of Treatment Effects


關於作者

樊漢勤,轉轉演算法工程師,多年搜尋、推薦演算法開發經驗,目前負責轉轉價格策略的演算法開發工作,微訊號:fanhanqin

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70027824/viewspace-2991410/,如需轉載,請註明出處,否則將追究法律責任。

相關文章