- 產品
- 產品解決方案
- 行業解決方案
- 案例
- 數據資產入表
- 賦能中心
- 伙伴
- 關于
時間:2022-02-28來源:不屑瀏覽數:341次

導讀:因果推斷在智能營銷場景有著廣泛的應用。在哈啰出行酒店營銷業務中,自研Tree-based因果推斷模型通過修改分裂準則,使得模型目標和業務目標的一致性更高,在智能補貼模塊中取得了較好的效果。
本文的主要內容包括:
背景介紹,簡單介紹智能補貼及其中的一些問題;
因果推斷的應用,主要是Uplift建模,即增量預估;
因果推斷在哈啰智能補貼場景的應用,包括一些創新;
問題的思考和未來的規劃。
1.?天降紅包場景
哈啰出行的基本業務是兩輪共享出行業務,包括單車和助力車。同時,也有針對用戶需求而推出的服務和產品,例如酒店業務。

以酒店業務促銷為例,這一業務的目標是使總效用最大化。想要提高總效用,通常會給用戶以發優惠券的形式做補貼,從而促使用戶轉化。

2.?智能補貼
從用戶層面進行下鉆分析。左圖按照經典的營銷人群四象限,從“是否發券”和“是否購買”兩個維度,將用戶分為了四類人群。其中:
營銷敏感人群指對價格比較敏感,沒有優惠就不會購買、有優惠才會購買的人群;
自然轉化人群是指無論是否有優惠都會購買的人群;
無動于衷人群是指無論是否有優惠都不會購買的人群;
反作用人群是指沒有優惠活動觸達時會購買,但有優惠活動觸達時反而不會購買,對營銷活動比較反感的人群。
我們進行補貼的目的通過發放優惠券,促使本來不會購買的用戶發生轉化,從而提高總效用,我們要做的就是提高補貼效率。顯然,我們的目標人群是四象限中的營銷敏感人群。

用戶對價格的接受程度是不一樣的,并且在用戶量龐大的情況下,是不可能給所有用戶都發放優惠券的。
以往是依照運營的經驗,根據用戶的需求來制定發放策略。后來有了算法的介入,使用機器學習算法來預估用戶的購買概率。最初使用的是CTR預估模型,也就是Response模型的相關性模型,雖然模型策略相對運營策略而言有一定的提升,但也存在一些問題。

從具體case來看,左表中假設現在有兩個用戶。通過Response模型的預估,我們得到了在發券情況下兩個用戶的購買概率,同時我們也知道他們在不發券情況下的購買概率??梢钥吹?,發券之后兩個用戶的購買概率都是提升的,并且用戶2的購買概率(1.5%)要高于用戶1的購買概率(1.3%)。如果按照這種結果,我們是否可以決策應該給用戶2發放優惠券?
前面我們也提到過,我們的目標是提升補貼效用,所以需要再從效率的角度再來計算一下。右圖中,假設用戶1和用戶2各有一萬人,商品的原價是10元,優惠券的金額是2元,那么如何發券會使效率最大化呢?我們可以計算一下效率的期望。以總人數乘以購買概率,再乘以價格,就可以得到如下的效率情況:
都不發券時,總效用是2200;
都發券時,總效用是2240;
用戶1不發券,用戶2發券時,總效用是2000;
用戶1發券,用戶2不發券時,總效用是2400。
若按照前述Response模型預估的結果進行發券,即用戶1不發券,而用戶2發券,總效用只有2000,反而比都不發券時更低。這里是為了方便大家理解與結果相悖的發券策略舉了一個極端的例子,可以看出用Response模型的結果獲得的補貼效用并不是最大的。

我們再來看一下用戶1和用戶2在發券后的購買概率變化的差值,也就是新增的這一列Uplift的值??梢钥吹桨l券后用戶1的購買概率提升了0.5%,用戶2的購買概率提升了0.1%,可以看出發券對用戶的影響效果大小是不一樣的。它可以預測用戶的購買概率,但是它無法告訴我們用戶是否因為發放優惠券而產生購買,也就無法識別出營銷敏感人群。
表格中顯示了Response模型和因果推斷的關系。從發券到購買是有因果關系的,此時就要用到因果推斷技術。
相關性模型是基于觀測結果得到的,比如觀測到了什么、購買概率是怎樣的,主要用應用在搜索廣告推薦等場景。然而補貼場景中的發券動作,可以看作是對用戶的一次干預行為,有無法觀測到的異常,我們稱之為反事實。也就是說在有干預存在的情況下,相對于沒干預的情況下,它是什么情況?比如說如果我當時沒有給用戶發券,它的結果會是怎樣?這是因果推斷所研究的問題。
在營銷領域的應用主要是增量預估,也就是我們所說的Uplift建模,可以通過增量的大小來識別出營銷敏感人群。
接下來我們看一下Uplift建模,這部分主要會講一些常用的建模方法,還包括一些離線評估的方法。

通過前面部分的介紹我們已經知道相關性和因果性是不一樣的,我們這里再舉一個例子。在數據統計網站中有很多有趣的相關性的統計,其中有一個是尼古拉斯凱奇參演電影數量和當年度泳池溺水身亡人數的相關性統計,這兩條曲線的重合度非常高,是不是可以得出結論——因為尼古拉斯凱奇演電影導致人溺水呢?顯然不是。還有很多這樣的例子,主要為了說明相關性和因果性并不一樣的問題。

1.?因果推斷
回到正題,Response模型和Uplift模型主要的區別可以用這兩個公式來描述。Response模型主要是預估用戶的購買概率,Uplift模型主要預估因為某種干預后用戶購買的概率。因果推斷技術在營銷場景的主要應用,就是基于Uplift建模來預測營銷干預帶來的增益。

2.?因果效應
那么Uplift模型是如何做到增量預估的呢?我們在這里介紹因果效應的概念。假設有n個用戶,Yi1表示對用戶i進行干預的結果,Yi0表示對用戶i無干預的結果,那么用戶i的因果效應就可以表示為Yi1減Yi0。在我們的場景中,Y1和Y0就分別代表了發券和不發券。但是要注意的是存在反事實的問題,因為對同一個用戶,我們不可能既得到他發券的結果,又得到他不發券的結果。后面我們會講到反事實問題目前的解決思路,Uplift建模的目標因果效應,也即應用場景中發券帶來的增量收益。

3.?Uplift建模方法
接下來介紹Uplift建模的常用方法。這里建模用到的數據都是包含有干預的數據和無干預的數據的。
T-Learner,其中T代表two的意思,也即用兩個模型。它的主要思想是對干預數據和無干預數據分別進行建模,預估時數據進入兩個模型,用兩個模型的預測結果做差值,來得到預估的增量。該方法的優點是原理比較簡單直觀,可以快速實現。但缺點是,因為兩個模型的精度不一定非常高,所以兩個模型的誤差會有疊加,并且因為有差分的操作,這是間接計算的增量。
S-Learner,其中S代表single,也即用一個模型。它的主要思想是把干預作為特征輸入模型,在預測時,同樣是用有干預的結果和無干預的結果做差,得到預估增量。和Response模型比較像,就相當于特征里面有“是否干預”這樣的特征,它的優點是,相比T-Learner減少了誤差的累積,但缺點同樣是間接的計算增量。
X-Learner,它的思想是先分別對有干預、無干預數據進行建模,再用兩個模型來交叉預測,得到干預數據和無干預數據分別的反事實結果。因為這是訓練數據,它是有真實label的,再用真實label和剛才預測的反事實結果做差,得到增量;把增量再作為label,再針對增量進行建模。同時對有無干預進行建模,得到干預的傾向分,并在預測增量的時候引入傾向分權重。方法的優點在于,可以對前面我們預測出來的增量建模時加入先驗知識進行優化,來提高預測的準確性,另外還引入了傾向分權重來減少預測的誤差。但它的缺點也是多模型的誤差,可能會有累積,并且歸根結底也是間接得到預測增量。
上面這幾種方法都是間接得到預測增量,當然,也有直接對增量進行建模的方法,比如基于決策樹的模型Tree-based Model。近幾年也有一些深度學習的方法,比如DragonNet。時間關系,這里不詳細介紹。

4.?評估方法
那么Uplift模型應該如何評估呢?這里我們可以看到,因為有反事實問題的存在,我們是沒有真實的增量標簽的,傳統算法的評估方法,如AUC、準確率、RMSE等都是依賴真實標簽的評估方法,在該場景中無法使用。Uplift模型的離線評估使用的指標是AUUC,它的含義是Uplift曲線下的面積??梢钥匆幌掠疑辖菆D中藍色Uplift的曲線,AUUC的指標對曲線做積分,求它曲線下的面積。問題又來了,Uplift曲線是如何得到的呢?我們可以看一下公式。這里我還列了一下AUUC的計算流程,幫助大家理解。
第一步,測試集進入模型,輸出Uplift Score;
第二步,所有測試樣本根據Uplift Score做降序排序;
第三步,進行分桶,每個桶的序號記為t;
第四步,計算每個t的累計增益。其中,Y表示分組的正例的數量,T代表是有干預,C代表無干預,YT表示有干預組的正例的數量,再除以NT有干預組總的樣本數量。假設label是“是否轉化”,我們就可以看到YT除以NT是干預組的轉化率。同樣,YC除以NC是無干預組的轉化率。可以看到公式左邊是干預組相對無干預組的轉化率的增量,右邊是樣本的總數量,公式計算了收益,也即干預組相對無干預組提升了多少轉化。
第五步,求積分,計算曲線下的面積。
Uplift Score 越準,第一步對樣本的排序越準,排序越靠前的桶實驗組和對照組的指標的差值會越大。這表現為曲線的拱形。所以AUUC相對越高,就說明相對而言模型越好。
接下來介紹一下因果推斷在哈啰是如何應用的,主要是Tree-based模型。這部分會詳細講解Tree-based模型和一些創新應用。還有離線和線上的效果的展示。

1.?紅包補貼
這部分應用主要是在酒店營銷場景中的紅包補貼模塊,屬于整個算法鏈路中的一環。前面已經提到過,我們的目標是使補貼效用最大化。主要看的指標是人均效用,即總效用除以人群的人數。
我們的模型是基于Tree-based的Uplift模型做了一些改進。

2.?Tree-based?Model
我們把基于決策樹的Uplift模型和普通分類決策樹放在一起做個比較,這樣方便理解。
二者主要不同在分裂的準則和目標。普通的決策樹的分裂準則是信息增益,這樣使得葉子節點的信息熵最少、類別的不確定性最小,以達到分類的目的;而基于決策樹的Uplift模型的分類準則是分布散度,比如常用的有kl散度、卡方散度,這樣可以使葉子節點中干預組和無干預組的分布差異最大,來達到提升增益的目的。
從右邊的示意圖可以看出基于決策樹的Uplift的模型是如何做到區分營銷敏感人群的,每個葉子節點的圖標表示的是葉子節點中占絕大多數的人群。這樣我們就可以比較容易地區分出營銷敏感人群。
那么我們為什么要選擇基于決策樹的模型呢?主要有兩點考慮:
① 樹模型解釋性比較強,這點對業務的應用比較有幫助。
② 直接對增量建模的準確性更高,對業務的提升是我們最關心的事情。
接下來看一下我們是如何改進基于樹的Uplift模型的,從而實現以增量收益最大化為目標的Treelift模型。剛才已經提到,樹模型最重要的點是分裂準則和目標的一致性。我們可以通過修改分裂準則,來使得模型的目標和業務目標一致性更高。
目前業界主流的用法還是在用戶轉化上,也就是說樣本的label為0或者1,因此就可以使用kl散度作為節點的分裂準則。而我們的目標是人均效用,用kl散度并不太合適,因為kl散度是衡量概率分布的,因此我們改進了分裂準則來匹配業務目標。

3.?以增量效用為目標的TreeCausal
這里我們是以效用作為樣本的label,那么以干預組和無干預組的人均效用的差值的平方作為節點的分裂準則,這里的目標是最大化人均效用差值的平方。
算法流程:
第一步,假設分裂前的數據集為theta,那么計算分裂前發券組和無券組樣本人均效用的差異。這里我們效用的差異是這樣定義的。G是每一個用戶的label。我們對有干預組的每個人的效用做求和,再除以干預組的樣本數,得到人均效用,再減去無干預組。這個差值做平方,這樣可以計算出分裂前的效用差異。
第二步,根據某個特征f將數據集theta分成左右兩個子集theta1和theta2,計算分裂后的人均效用差異,可以看一下右邊的示意圖。如果特征的值等于f,就可以分到左子集,如果不等于f,可以得到右子集。接著對每一個子集都計算人均效用的差異,再根據每一個子集的樣本比例作為權重,加權求和,最終得到計算差異。
第三步,計算增益。分裂后的人均效用差異減去分裂前的人均效用差異,得到增益。
第四步,遍歷數據集theta中所有的特征值,重復進行第二步、第三步,我們會得到很多對應不同特征值的增益。我們取增益最大時對應的特征值,作為節點的分裂值,將數據集分為左子集和右子集。
第五步,遞歸調用,對左子集和右子集再重復上述步驟,生成Treelift模型。

4.?隨機試驗
接下來是關于訓練數據的。
前面我們提到過,由于反事實的存在,我們無法同時觀測到同一用戶發券和不發券的結果。那么如何讓模型學習到發券帶來的增益呢?如果說我們站在人群的角度上來考慮群體增益,那么只要保證是否發券與用戶的特征相互獨立,就可以分析發券的群體相對不發券的群體帶來的增益。
這里很容易就可以想到,可以通過隨機實驗來獲得滿足需求的數據,但隨機實驗的成本比較高。當然也還有一些其他的解決方法,比如說傾向性得分的匹配,這也是目前研究比較多的點。但是根據需求考慮到,我們需要驗證因果推斷方法的業務效果,最終還是選擇了小流量隨機實驗來獲取符合要求的數據。如右圖所示,我們通過分流平臺做了兩次分流,第一次分流是切除隨機實驗用的小流量,第二次分流則是隨機將用戶分到實驗組(發券組)和對照組(不發券組)。

5.?實時決策
接下來是紅包補貼模塊的核心部分,分為離線和線上兩部分。
線上部分,依然是通過流量分配時請求進入算法組、運營組或者是隨機補貼組。其中:
運營組是人工策略;
隨機補貼組是前面提到的小流量隨機實驗,從小流量隨機實驗得到的訓練數據用來建模,可以得到Treelift模型,進行一鍵評估,最后部署到線上;
算法組的流量由模型來決策發券。
模型的離線評估部分測試了不同的模型,最后得到的結果是我們經過改進后的Treelift模型的AUUC是最優的??梢钥匆幌掠疑辖遣煌P椭g的對比,我們對比了T-model、S-model,還有Treelift模型,以及我們在正則方面的一些嘗試的模型對比。從線上效果來看,Treelift模型相比人工策略有4.7%的提升,相對于我們之前用過的Response模型也有2.3%的提升。從結果來看,優勢是非常明顯的,Uplift模型在智能補貼場景的應用前景還是比較廣闊的。
以上是因果推斷技術在哈啰應用案例的介紹,希望能給大家一些啟發。
最后是我在應用過程中遇到的一些問題和思考,以及未來的規劃。
首先是訓練數據的問題。前面我們也提到了,是通過小流量隨機實驗來得到訓練數據的,但是這種方法的成本確實很高。如何充分利用觀測數據是一個難題,我們也會去嘗試業界的先進經驗,比如說傾向性得分匹配法等。
另外是樹模型本身的問題,訓練速度偏慢。另外像剪枝、正則目前我們還沒有特別的優化。這部分未來是也是可以深入研究的。目前已經有了一些深度學習的方法,也是后續嘗試的方向。
業務方面,因為我們是將補貼金額算到了樣本的label中,從而簡化了成本問題。但實際上很多場景中成本是需要單獨考慮的,因此券金額的分配也將是問題。這里可以通過整數規劃來求解全局最優,我們未來可以也會在其他的場景上進行一些嘗試。
以上是我今天分享的所有內容,主要希望通過我們的應用案例給大家一些啟發。這是我們的技術公眾號,會不定期分享一些技術應用,歡迎大家關注和交流。
問題:為什么AUUC能反映反事實轉化效果?

我們可以看一下Uplift曲線是怎么計算的。首先它的變量是t,t是根據Uplift Score降序排序之后,進行分桶得到的。以圖為例,0.2就代表20%,根據排序之后,我們取前20%的數據,取出來這樣的數據,來計算后面的公式。左邊因子這部分YT除以NT這一部分是代表的是實驗組(發券組)的轉化率,YC除以NC代表的是對照組(不發券組)的轉化率,差值是發券相對不發券帶來的轉化率的提升的幅度差值,再乘上總的樣本數量,就比較清楚了。假設所有人都發券,和所有人都不發券相比,額外提升的幅度就是對于增量的預估。
上一篇:大數據湖體系規劃...