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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

我們可以看一下Uplift曲線是怎么計算的。首先它的變量是t,t是根據(jù)Uplift Score降序排序之后,進行分桶得到的。以圖為例,0.2就代表20%,根據(jù)排序之后,我們?nèi)∏?0%的數(shù)據(jù),取出來這樣的數(shù)據(jù),來計算后面的公式。左邊因子這部分YT除以NT這一部分是代表的是實驗組(發(fā)券組)的轉(zhuǎn)化率,YC除以NC代表的是對照組(不發(fā)券組)的轉(zhuǎn)化率,差值是發(fā)券相對不發(fā)券帶來的轉(zhuǎn)化率的提升的幅度差值,再乘上總的樣本數(shù)量,就比較清楚了。假設所有人都發(fā)券,和所有人都不發(fā)券相比,額外提升的幅度就是對于增量的預估。
今天的分享就到這里,謝謝大家。
本文經(jīng)授權(quán)發(fā)布,不代表增長黑客立場,如若轉(zhuǎn)載,請注明出處:http://allfloridahomeinspectors.com/quan/59034.html