因果推薦技術在營銷和可解釋性上的應用
一、Uplifit 增益敏感度預測
關于 Uplift 增益,通用的業務問題可以總結為,在圈定的人群中,營銷人員會想知道,新的營銷動作 T=1 相比較原始的營銷動作 T=0,能帶來多少的平均收益(lift,ATE,Average Treatment Effect)。大家會關注新的營銷動作是否比原來的更有效。
在保險場景下,營銷動作主要指的是保險的推薦,比如推薦模塊上透出的文案和產品,目標是在各種營銷動作和約束條件限制下,找到因營銷動作而增益最多的群體,去做定向投放(Audience Targeting)。
先做一個比較理想且完美的假設:對于每一個用戶 i ,都能知道他對營銷動作 t 是不是買賬。如果買賬,可以認為公式中的 Di 為正,且 value 比較大;如果不買賬,且對營銷動作很反感,Di 可能就會比較小,甚至是負向的。這樣就能夠得到每個用戶個體對于 treatment 的效果。
關于人群劃分,可以看到上圖中的營銷四象限,我們最關注的肯定是左上角 Persuadables 的人群。結合公式,該人群的特點是當有一些營銷動作的時候,會很買賬,也就是 Yi > 0 ,且值比較大。如果對該人群不去做營銷動作則是負的,或者是比較小,等于 0,這樣的人群的 Di 就比較大。
再看另外兩個象限的人,Sure things,指無論是否營銷,這些人都會買,那么營銷投到這一人群上的收益率是比較低的。Sleeping dogs,是指去做營銷反而會起到一些負面作用。這兩部分群體最好不要進行營銷投放。
但是這里也存在一個反事實的困境:Di 沒有那么完美。我們不可能同時知道一個用戶對 treatment 是否感興趣,即無法知道同一用戶在同一時間對不同 treatment 下的反應。
最通俗的一個例子是:假設有一個藥物,給 A 吃了之后,會得到 A 對藥物的反應。但卻不知道,如果 A 不吃的結果,因為 A 已經將藥吃下去了,這其實就是一個反事實的存在。
對于反事實,我們進行了近似的預估。ITE(Individual Treatment Effect )預估的方式,雖然找不到一個用戶,實驗其對兩個 treatment 的反應,但可以找到相同特征的用戶群來預估反應,比如具有相同 Xi 的兩個人,可以假設在同一特征空間下,近似等同為一個人。
這樣,Di 的預估分成了三塊:(1)Xi 在 T=1 的營銷動作下的轉化率;(2)Xi 在 T=0 的營銷動作下的轉化率;(3)lift 是一個差值,計算兩個條件概率下的差異。用戶群體的 lift 值越高,則說明該人群更買賬。如何讓 lift 更高呢?在公式中,是將 Xi 在 T=1 的營銷動作下的轉化率變大,Xi 在 T=0 的營銷動作下的轉化率越小即可。
在建模方式上,結合上文的公式,做一些歸納:
(1)T 變量的數量,如果不只是一個營銷動作,而是有 n 個營銷動作,則為多變量 Uplift 建模,否則是單變量 Uplift 建模。
(2)條件概率 P 以及 lift 的預估方式:① 通過差分建模,預估 P 值,然后找到 lift 值,這是間接的建模。② 通過直接建模,比如標簽轉化模型,或者是因果森林,比如 Tree base 、LR、 GBDT 或者一些深度模型。
二、增益敏感度的應用
增益敏感度主要做了三方面的應用:保險產品的推薦,紅包推薦,以及文案的推薦。
首先來介紹一下,旅游保險在飛豬上是什么樣的定位。旅游保險是旅行商品中的一個種類,但它更多的是出現在主營商品的搭售鏈路上。比如我們去訂機票、酒店的時候,主要購買意圖是:酒店、機票、火車票,這個時候 APP 會問你要不要買一個保險。所以保險是屬于一個輔營業務,但是其目前已經成為交通和住宿行業一個非常重要的商業性收入來源。
本文講的主要作用域在彈窗頁:彈窗頁是飛豬 APP 下拉收銀臺的時候會彈出的一個頁面,這個頁面只會展示一種創意文案,只能展示一種保險商品,這一點與前面詳情頁可以展示多個類型的商品,以及保險的價格不同。所以這個頁面,會讓用戶的注意力足夠的聚焦在這里,并且可以做一些拉新促活,甚至是一些用戶教育培養的營銷動作。
目前遇到的業務問題為:在彈窗頁面,我們需要去推薦一個最佳的保險產品或者紅包,使得整體的轉化或者收益最大化。更具體的是去做一個拉新,或者是更高轉化的業務目標。而業務收益目標是在收益不降低的情況下,提高轉化率。
在以上的約束條件下,有幾個營銷項:(1)給用戶推薦一個入門級低價保險;(2)另外一個 treatment,推薦一些紅包,主要是去做一些拉新的操作。而 Base 就是原價的保險。
建模的時候,有一些假設的條件:條件獨立的假設。指 treatment 營銷動作,在建模 uplift 采集的時候,樣本服從假設條件獨立,用戶的各個特征是相互獨立的。比如發紅包,不能在年齡上有不同的分布,例如,在年輕人上少一點,老年人上發的多一點。這個會導致樣本有偏。所以提出的解法是讓用戶隨機地去曝光商品。同樣的,也可以計算傾向性得分,得到同質的用戶群,去做對比。
在實驗設計上,AB 實驗:A 是按原來的策略去投放,可能是 40 塊錢的保險,也可能是運營來進行保險的定價,或者原始模型的一個定價。B 桶,低價保險投放。
Label :用戶是否轉化成交。
模型:T/S/X-learner 以及各類的這種 Meta 模型。
樣本構造:訴求是要刻畫用戶到底對這種低價保險是否更感興趣,就需要有足夠多的特征去刻畫用戶對價格的敏感性。但實際上像輔營產品,沒有一個比較強的意圖性。所以我們很難從用戶的歷史瀏覽購買記錄當中,看到用戶到底喜歡多少塊錢的保險,或者是他會購買多少錢的保險。我們只能從主營或者用戶流瀏覽的一些其他的飛豬 APP 域內的數據上去看,也會看用戶紅包的使用頻率和紅包消費比例,比如用戶會不會只有在發紅包的前幾天,才在飛豬上進行轉化。
基于以上的特征樣本的構造,同樣進行特征重要性和可解釋性的分析。通過 Tree base 模型可以看到,在一些時間、價格變量、年齡變量特征上是比較敏感的。
評估指標的計算方式:Gini 和 Accumulated Gini。將 Uplift 分成 n 組,每一組去計算一個 Gini 分,如上圖第一個公式所示,在該分組下得到用戶映射到 test 桶和 base 桶之后的轉化率,再去算 Gini。同理類推到 Uplift Gini,通過計算不同的閾值下的收益分,輔助我們去做閾值的一個判定。
通過離線可得,表現最好的模型是 LR+T-Learner,其實不太符合原始的預期。后來思考了這個問題,也許問題出在用戶對保險相關的價格特征的構建上,并不太足夠去刻畫。因為我們也去做了一些用戶調研,比如用戶的性格,對保險的敏感程度,這種 APP 域內的一些用戶畫像數據,能看到用戶對一個無實物商品的感興趣程度。但最終,還是基于這樣的分數,去劃定人群做投放,線上的 base 桶相對提升 5.8%。
在紅包推薦上,我們也可以在 40 元的保險的 base上,發一個 3/5/8/10 塊錢的保險。
我們有一個業務目標就是增量 ROI,公式定義是:test 桶的 GMV 減去 base 桶的 GMV,得到的增量 GMV,能不能 cover 掉在 test 桶的營銷費用。如果增量 ROI 大于1,就意味著營銷是不虧的。所以在該場景下,我們的要求是不虧。在我們在用 Uplift 模型之前,運營同學會先去做一波投放,在他們的種子人群上,ROI 在 0.12-0.6 之間,所以對我們的一個要求就是要比這個 ROI 高,且不虧本。
通過上述目標的拆解,問題最后又轉化為用戶的轉化率的預估以及 Uplift 預估,如上圖下面的公式所示。
最后經過一系列的變化,實際上又回到了去求解 Uplift 值以及未購概率。未購概率是指用戶在不發券時候的轉化率,如果想使得剛剛提到的 ROI 越高,就意味著需要找到一個用戶群,P0 越小越好,且 Uplift 值越高越好。
第一版模型是半智能的決策模型:根據在不同券額下計算得到的 Uplift 值,再通過觀察 treatment 上線之后的效果,卡定閾值,每個卡定的閾值是為了能夠 cover 掉成本。
第二版是智能定價模型:借鑒了對偶問題的求解,約束條件是發券要小于等于 1 即 Xij <=1,同時要符合發券時的最大預算。通過使用拉格朗日對偶問題方法求解,得到 Lambda 。最后將 Lambda 帶入 argmax 公式計算,得到每個用戶 Xij 應該是以什么樣的值去投放。
使用定價模型相比原來運營桶的紅包投放,增量 ROI 能達到 1.2。
在文案的推薦上,跟之前的產品推薦和紅包推薦有相似的思路。我們會發現一些用戶對不同風格的文案有不同的偏好,所以將其結構化出來,比如溫馨類的“帶份平安保障”,或者一些提示風險。還會發現,在不同細分人群上,存在比較大的明顯的差異,從特征重要性上來看,溫馨的語句,可能對 80 后或者是一些年紀偏長的人有效,而偏理由性質的文案,對年輕人會比較適用。從細分人群的特征重要性上,同時也做文案的個性化嘗試,有 5%~10% 的相對提升。
三、貝葉斯因果網絡
貝葉斯因果網絡主要是表征事務間因果關系,有向五環圖的結構。先簡單介紹一下為什么要使用貝葉斯網絡。在不同的推薦文案下,我們想知道用戶為什么對文案感興趣,或者說為什么能轉化,其背后到底有哪些隱藏的變量。所以做可解釋性網絡的構建,頂點主要是觀測變量,或者隱含變量;邊是指兩個頂點之間存在的因果關聯,關聯可以通過節點之間的條件概率去計算。在貝葉斯網絡當中,通過每個頂點,在所有父節點條件之下的概率值相乘,得到最終的網絡結構。
在網絡結構中有 4 類模型學習的問題:
① 結構學習:基于樣本,怎樣才能學習一個比較優的貝葉斯網絡,主要是基于后驗,如上圖公式,如果 structure 的概率值越高,則認為網絡學的最優。
② 得到結構之后,怎樣知道網絡里節點上的條件概率值,以及它的參數。
③ 推斷:當事件 A 發生的時候,事件 B 發生對概率。
④ 歸因:當事件 A 發生的時候,導致 A 發生的原因有哪些。
四、畫像決策路徑構建及可解釋性應用
上文中提到,保險推薦場景與搜索推薦不太一樣,保險推薦是個輔營業務,用戶不帶有主觀,也就是在來到這個模塊之前,他在 APP 域內的瀏覽記錄,跟用戶對什么樣的保險或文案感興趣,沒有同質的關聯性。而在搜索中,輸入親子酒店,就知道用戶對親子標簽的酒店有需求。在輔營場景,需要復雜的推理過程,才能知道什么樣的 Treatment 動作是有效的。舉個例子,通過網絡挖掘會發現,在天氣惡劣的情況下,可能延誤險的銷量會比較好。
如何建模,把網絡里的節點和邊構建成如下的幾種:
① 用戶節點,將年齡、性別這種用戶畫像的基礎信息作為一個離散變量,成為一個節點。
② 事件節點,因為保險場景對事件的敏感性要高于很多其他的商品推薦,比如在天氣或者節日下,用戶可能會對延誤險,或者某些有特定屬性的保險比較敏感。
③ 創意節點,比如溫馨類引導性文案、動態數字文案等都會有不同的效果。
基于以上三大類節點,做條件概率計算,完成圖的構建。
剛剛提到的用戶,通過構建場景和事件的理解和創意理解。最后,把所有的節點類型都統一到如上圖所示的結構中。
得到節點之后,進行結構學習,使用 Hockman scoring function + grade search 。這個過程主要是在給定數據和網絡結構之后,計算得到網絡的后驗概率值,評估這個網絡到底有沒有效。
在做 Hockman scoring function 的時候,可能有多種變量,離散型或者連續型。在構建時都變成一種離散變量,方便后續的解釋和建模。我們會假設每一個變量符合狄利克雷分布,施加于樣本上去做后驗的更新,再計算每個節點的后驗的值,把節點之間的概率相乘,得到結構的打分。比較通用,大家如果有興趣,可以后面詳細了解下這個方法。由于網絡結構比較復雜,所以在整個網絡中選用 greedy search 的方法。參數估計比較簡單,根據樣本對節點的條件概率表做更新。
可解釋的應用,基于結構以及參數的更新,可以做兩部分的事情:
① 基于各類的 evidence 推斷用戶可能會做哪種決策,就像上文中提到的那些例子??梢允褂?Likelihood weighting 或者 Loopy Belief Propagation,這些是比較常見的一些方法。
② 歸因,上圖中里面顯示的是健康類的保險,比如意外險突然熱銷,我們很想知道背后的原因,是因為有人喜歡買,可能用戶的消費力比較高,還是因為用戶是個新人以前不怎么坐飛機,或者是用戶的目的地存在高原屬性,因為害怕心理導致購買。
最后進行一下總結,因果推斷在保險產品推薦、紅包和文案營銷的人群和推薦策略中起到了很大的效果。同時,結合貝葉斯因果圖的構建和可視化的解釋,可以給業務提供一些比較有意義的決策,讓他們可以持續更新策略或者文案,或者進行一些方向性的變更。通過貝葉斯因果圖,也為特征的選擇提供了新的思路。
五、問答環節
Q1:飛豬保險營銷采取的 Uplift model 是否在落地后進行過驗證?在導入因果推斷模型前,飛書保險營銷采用的是什么技術?局限性在哪里?導入這個因果推斷模型后,最明顯的改善在什么地方?
A1:① 驗證是有的,因為已經在線上的 AB 上得到了效果提升。
② 在導入因果模型之前,舉個例子,在紅包場景最開始的策略是轉化率預估。如果能預估到一個用戶群體,它本來是不轉化的,對他們進行營銷操作,可以保證的是,營銷的成本是能被控制的。
③ 局限性,用戶的轉化率可能不高,意味著即使你給他紅包,他也會不轉化。所以是我們之前遇到的一些問題。
④ 導入因果模型推斷之后,最明顯的改善在應該是用戶彈性上。在使用因果推斷技術之后,可以對用戶有個更清晰的理解,對用戶群種子有更清晰的判斷。
Q2:因果推斷模型的特征怎么選擇?哪些特征在場景下是最重要的?
A2:第一步如果大量的特征進行選擇,效果可能不太好。在初始選的時候,我們使用單變量,看變量和增益之間有沒有特別強的相關性,有才會把它放進去。當然,后面在樹模型上可以看到對特征進行打分,然后篩選,是我們去判斷的一個依據。
Q3:差分建模時數據出現 selection bias 嗎?T-Learner 是不能應對這種問題?評估時為什么沒有使用 AUUC ?貝葉斯因果網絡的隱變量是指什么?
A3:① 差分建模,它會導致一個誤差累積。
② T-learner 主要是通過離線的評估。這個問題當時我們也比較困惑,總結下,覺得可能是在特征上,沒有一個非常強的特征,直接對增益進行刻畫。所以后面在一些傳統的模型上,得到的效果也不是很差。這里只是復雜模型和簡單模型的一個評估,簡單模型可能在魯棒性上會強一點。
③ AUUC 其實我們也有用到的,其實是差不太多。
④ 觀測變量可能是指數據上可觀測的變量,而隱藏變量是指我們在觀測到的數據上面可以去刻畫的隱含的變量。比如性格這種,當然網絡里面還沒有用到。
Q4:在實踐中是否嘗試過使用 matching method 后跟隨一個回歸的方?如果有,效果如何?
A4:還沒有嘗試。
Q5:你們后續的探索是在什么方向?比如現在是在保險的推薦探索的方向。
A5:因果推斷是我們去年的一個工作,今年主要是在創意文案的推薦上。