如何在因果推斷中更好地利用資料?
導讀:本次分享題目為《如何在因果推斷中更好地利用資料?》,主要介紹團隊近期在因果上已發表論文的相關工作。本報告從兩個方面來介紹我們如何利用更多的資料來做好因果推斷,一個是利用歷史對照資料來顯式緩解混淆偏差,另一個是多源資料融合下的因果推斷。
全文目錄:
因果推斷背景
糾偏因果樹 GBCT
因果資料融合
在螞蟻的業務應用
一、因果推斷背景
常見的機器學習預測問題一般設定在同樣的系統裡面,如通常會假設獨立同分布,比如預測吸菸的人中得肺癌的機率、圖片分類等預測問題。而因果的問題則關心的是資料背後的機制,常見的問題如“吸菸是否導致肺癌”,類似的問題則為因果的問題。
在因果效應估計問題裡有兩類很重要的資料:一類是觀測資料,另一類則為隨機對照實驗產生的實驗資料。
觀測資料是我們實際生活或產品積累下來的資料。比如抽菸的資料,有的人喜歡抽菸,觀察資料則是抽菸者的相關資料,最終抽菸者中的一部分人得癌症。機器學習預測問題就是估計條件機率P(得肺癌|吸菸),即給定吸菸的條件下,觀察吸菸者得肺癌的機率。在上述的觀測資料中,抽菸的分配實際上並不是隨機的:每個人抽菸的偏好不同,同時也會受環境的影響。
回答因果問題最好的方式是進行隨機對照實驗。實驗資料是透過隨機對照的實驗得到的。在隨機對照實驗中,treatment 的分配是隨機的。假設需要透過做實驗的方式得到“吸菸是否會導致肺癌”的結論,首先需要找到足夠多的人,強制其中一半人抽菸,同時強制另一半人不抽菸,並觀察兩組人得肺癌的機率。雖然隨機對照試驗在部分場景下受制於道德、政策等因素而不可實現,在部分領域中隨機對照實驗仍可進行,比如在搜推廣中的 A/B test 等。
因果估計問題 E(Y|do(X)) 問題和傳統的預測或分類問題 E(Y|X) 之間的主要區別在於:給定的條件中出現了 Judy Pearl 提出的干預表示符號 do。透過干預,強制將 X 變數設定為某個值。本次報告分享中的因果效應估計主要指的是從觀測資料中估計因果效應。
在因果推斷中如何更好地利用資料?本次報告將以兩個團隊近期已發表論文為例子去介紹這樣一個話題。
第一個工作是如何更好地利用歷史對照資料。比如在某個時間點舉行了一個營銷大促的活動,在這個時間點之前的時間稱為“干預前”,在這個時間點之後的時間稱為“干預後”。我們希望在干預前就知道採取干預將帶來多少實際的效果,進而輔助我們做下一步決策。在這次營銷活動開始之前,我們擁有使用者的歷史表現資料,第一個工作主要就是介紹如何利用好“干預前”的資料,輔助資料糾偏工作以更好地評估干預的效果。
第二個工作主要是介紹如何更好地利用多源異構資料。機器學習中也經常會涉及此類問題,常見的問題如 domain adaptation、transfer learning 等。在今天的報告中,將從因果的視角去考慮多源異構資料的利用問題,即假設在有多個資料來源的情況下,如何更好地估計因果效應。
二、糾偏因果樹 GBCT
1、傳統的因果樹
樹演算法主要由兩個模組組成:
分裂準則:根據分裂準則將一個節點分裂成兩個子節點
引數估計:分裂完成後,比如最終停止分裂,根據引數估計的方法在葉子節點上預測新樣本或群體的因果效應
一些傳統因果樹演算法是根據因果效應的異質性進行分裂的,基本思想是希望分裂之後的左子節點和右子節點的因果效應差異較大,透過分裂捕捉到不同資料分佈的因果效應異質性。
傳統因果樹的分裂準則,比如:
uplift tree 的分裂準則為最大化左右子節點的因果效應差異,差異的度量使用歐氏距離、KL 散度等距離度量;
causal tree 分裂準則可直觀地解釋為最大化因果效應的平方。可透過數學證明,該分裂準則等價於最大化葉子節點因果效應方差。
常見的引數估計做法是直接在分裂後的葉子節點上將實驗組的平均 outcome 減去對照組的平均 outcome,以此作為因果效應的估計值。如果是隨機對照實驗,則 treatment 的分配機制是隨機的,由此計算得到的平均差值即為因果效應。隨機分配機制保證實驗組和對照組的資料分佈是相同的,即稱之為同質。
因果樹中分裂得到子節點,可以保證分裂得到的左子節點和右子節點的分佈是同質的嗎?
2、糾偏因果樹 GBCT
傳統的 causal tree、uplift tree 並不能保證分裂後的左子節點和右子節點的分佈是同質的。因此上一節提到的傳統估計 是有偏的。
我們的工作關注於去估計實驗組(treatment組)上的平均因果效應 CATT。CATT 的定義為:
進一步,可將傳統的因果效應估計拆分成兩部分:
選擇偏倚(selection bias/confounding bias)可定義為:
其直觀含義為在實驗組中 treatment=0 時的估計值,減去在對照組中 treatment=0 時的估計值。在傳統的因果樹中上述的 bias 是沒有被刻畫的,選擇偏倚可能會影響我們的估計,從而導致最終的估計是有偏的。
我們的思路是利用產品或平臺上積累的歷史對照資料,從而顯式地減少選擇偏倚。具體操作是基於兩個假設:
假設1:可觀測到干預之前實驗組和對照組在 treatment=0 的狀態下的 outcome 的表現。以金融信貸產品中信用卡產品提額操作為例,在提額之前,我們可觀察到使用者平時的使用表現,即實驗組和對照組在不提額狀態下(treatment=0)的 outcome 的表現是可獲得的;
假設2:假設 outcome 的 y 在干預前後滿足一定的連續性。直觀理解為一個使用者或群體行為的變化在干預前後不會太劇烈。
具體的做法:
① 分裂準則
分裂準則的第一部分與傳統因果樹類似,透過擬合曆史資料的 outcome 從而降低經驗損失。比如在不提額狀態下透過函式擬合使用者行為。
分裂準則的第二部分是使用混淆熵。混淆熵相對於均方誤差而言,可以捕捉高階資訊。公式:
的直觀含義是:在實驗組中,使用對照組的模型進行估計;在對照組中,使用實驗組的模型進行估計;使這兩部分的估計儘量接近,從而使得實驗組和對照組的分佈儘量接近一致。混淆熵的使用是我們這個工作的主要貢獻之一。
最終損失為以上兩部分的加權和。注意到損失中主要使用的是干預前 的資料(經驗損失部分仍會使用干預後的資料來擬合),即用干預前的資料進行輔助糾偏。
② 引數估計
引數估計使用的是干預後(t≥τ)的資料進行因果效應的估計。主要使用干預前的資料糾偏學習得到一個樹結構,在葉子節點中使用干預後的資料進行因果效應的估計,由於使用干預前的資料進行了顯式地糾偏,因此在使用干預後的資料計算得到的估計會更加準確。
(PPT 的右側)由右圖所示,黃色的線代表實驗組,藍色的組代表對照組。業務中的一些策略可能會導致實驗組和對照組的分配不是隨機的,兩者的分佈存在明顯的差異。經過 GBCT 糾偏後,葉子節點上干預前的實驗組和對照組的資料分佈基本是對齊的,從某種意義上達到了類似模擬隨機對照實驗的效果,因此使用干預後的資料估計因果效應(黃線下的面積減去藍線下的面積)會更加準確。
傳統的樹模型的整合包括 bagging、boost 等方法。uplift forest 或 causal forest 使用的整合方法為 bagging 法,uplift forest 的整合為直接求和,而causal forest 的整合需要求解一個損失函式。
由於在 GBCT 中設計了顯式糾偏的模組,從而 GBCT 支援使用 boosting方法進行整合。基本思想與 boosting 類似:在第一棵樹糾偏完之後,第二棵樹進行糾偏,第三棵樹進行糾偏……
實驗方面做了兩部分實驗:
① 模擬實驗。在含有 ground truth 的模擬實驗下,檢驗 GBCT 的方法是否能夠達到預期的效果。模擬實驗的資料生成分為兩部分(表格中的第一列Φ表示選擇偏倚,Φ值越大,對應的選擇偏倚就越強;表格中的數值為 MAE,MAE 值越小表明方法越好):
第一部分是混淆變數已觀測。在混淆變數都已觀測的情況下,檢驗 GBCT 的方法相對於傳統方法是否更加魯棒。由表中資料可得出結論,選擇偏倚越大,傳統方法(meta learner、causal forest 等)表現越差。
第二部分是存在未觀測的混淆變數。此時很多傳統方法的效果會顯著地變差。對 GBCT 而言,在存在未觀測混淆變數時表現比較穩定,同時穩定地比其他方法表現得好。
表格中最後兩列(GBCT-ND, GBCT-B)是消融實驗,即去掉一些模組的 GBCT 的弱化版本,進而說明我們提出的每個模組都是有用的。
② 真實信用卡提額資料。進行隨機對照的實驗,同時根據隨機對照實驗構造了有偏資料。在不同的設定下,GBCT 方法比傳統的方法穩定地好,尤其是在有偏的資料上,顯著比傳統的方法表現得好。
三、因果資料融合
第二個工作是因果資料融合,即在擁有多個資料來源的情況下,如何更好地估計因果效應。
主要的符號:是多個資料來源,Y 是outcome,A 是treatment,X 是關注的協變數,Z 是除 X 了外每個資料來源(域)的其他協變數,S 是域的indicator用於表示屬於哪個域,μ 是潛在結果的期望值。將outcome拆解成如下表示式:
target function δ 用於估計每個域上的因果效應,另外 nuisance functions 包括主效應、傾向性評分、域傾向性評分、效應的方差等。
一些傳統的方法,比如 meta learner 等都是假設資料是同源的,即分佈是一致的。一些傳統的資料融合方法可以處理在跨域之間人群的異質性,但是無法顯式地捕捉到干預結果跨域的異質性以及因果作用跨域的異質性。我們的工作主要是處理更復雜的跨域間的異質性,包括干預結果跨域之間的異質性以及因果作用跨域之間的異質性。
WMDL 演算法的框架圖如上圖所示。主要的模組為:
propensity scores
outcome models
causal information-aware weighting module
三個模組綜合起來就得到了最終的估計。WMDL 演算法的三個亮點為:
如何刻畫不同程度的跨域之間的異質性
如何設計 weighting 的模組以用上更多的資訊
如何得到一個 doubly robust 的估計
在本次工作中不是透過估計實驗組的 outcome 和對照組的 outcome,然後作差得到因果效應的估計,而是直接估計因果效應,即 Direct Learning。Direct Learning 的好處是可以避免實驗組和對照組中較高頻的噪聲訊號。
左邊部分假設了多個域之間因果效應是一樣的,但其 outcome 可能存在異質性;右邊部分假設每個域之間的因果效應不一樣,即在不同的域之間,即使它的協變數一樣,其因果效應也不同。
公式是根據拆解式推導得到的,outcome Y 減去 main effect 除以treatment,估計的是 I(X),得到的優解即為 δ(X)。 中的分子是後面將要提到的 causal information-aware weighting module,是我們本次工作的一個主要貢獻點;分母則類似於 doubly robust 方法中的傾向性得分,只不過本次工作中同時考慮了域的資訊。如果不同域之間的因果效應不一樣,會同時考慮域的 indicator 資訊。
本次工作三方面的優勢:
① 透過不同的設計,不僅能處理干預結果的異質性,同時可以處理因果作用之間的異質性;
② 具有 doubly robustness 性質。在論文中給出了證明,只要域的傾向性評分模型或主效應模型兩者之一的估計是無偏的,最終得到的估計就是無偏的(實際情況略複雜一點,細節見論文);
③ 本次工作主要設計了半參模型框架。其中模型的每一個模組都可以用任何機器學習的模型,甚至可以將整個模型設計進神經網路中,實現端到端的學習。
Weighting 的模組是從統計學中的 efficiency bound theory 推導得到的。主要包含兩方面資訊:
① 是域之間分佈差異平衡轉換的模組; 是因果相關的資訊量模組。可透過左邊三幅圖來輔助理解:如果源域(source domain)和目標域(target domain)之間分佈的差異較大,則優先給與目標域(target domain)較接近的樣本以較大的權重;
② 透過分母上的傾向性評分函式的設計,給實驗組和對照組中存在重疊(overlap)的這部分樣本以較大的權重;
③ 透過 V 刻畫資料中的噪聲。由於噪聲在分母上,噪聲小的樣本將得到較大的權重。
透過巧妙地將上述三部分結合在一起,可以將不同域之間的分佈差異以及不同因果資訊的表現對映到統一的域中。
不管在同質的因果效應還是異質的因果效應下,WMDL(Weighted Multi-domain Direct Learning)方法都有較好的效果。右圖則是對 weighting 模組進行了消融實驗,實驗表明了 weighting 模組的有效性。綜上所述,WMDL 方法穩定地比其他方法效果好,估計的方差比較小。
四、在螞蟻的業務應用
在金融信貸風控場景中,干預的手段如提額、降價等,希望得到預期的效果如餘額或風險的變化量。在一些實際的場景中,GBCT 的糾偏工作會利用提額前一段時間內的歷史表現(實驗組和對照組在不提額下的狀態可獲得),透過歷史的資訊進行顯式糾偏,使得干預後的估計會更加準確。GBCT 分裂到一個子節點,使得干預前行為對齊,則干預後的因果效應就比較容易估計了。(糾偏後得到的)圖中紅色為提額組,藍色為不提額組,中間的灰色區域即為估計的因果效應。GBCT 幫助我們更好地做出智慧決策,控制信貸產品的餘額及風險。
來自 “ DataFunTalk ”, 原文作者:崔卿 博士;原文連結:http://server.it168.com/a2023/0109/6785/000006785247.shtml,如有侵權,請聯絡管理員刪除。
相關文章
- 如何在 JavaScript 中更好地使用陣列JavaScript陣列
- 因果推斷與中介效應
- 【因果推斷】中介因果效應分解 彙總與理解
- 因果推斷在騰訊遊戲中的應用遊戲
- [譯文] 如何在 JavaScript 中更好地使用陣列JavaScript陣列
- 「深度」A/B測試中的因果推斷——隨機化分流隨機
- 大模型視角下的因果推斷大模型
- 「深度」A/B測試中的因果推斷——潛在結果模型模型
- 【因果推斷經典論文】Direct and Indirect Effects - Judea Pearl
- 淺談因果推斷與在內容平臺的實踐
- 貝葉斯統計和因果推斷在轉轉估價中的落地實踐
- VARCHART XGantt系列教程:如何在分組檢視中更好地顯示節點
- ACM BCB 2018 CausalTriad: 從醫學文字資料中推斷出新的因果關係假設ACM
- Node 中如何更好地打日誌
- 【因果推斷論文】中國新冠死亡率更高?- 新冠死亡率的辛普森悖論
- 騰訊如何用因果推斷擴大遊戲帝國海外版圖?遊戲
- 更好地使用 ViewControllerViewController
- 如何在Windows下利用Apche檢視MySQL資料庫?WindowsMySql資料庫
- Ascend2:利用營銷資料制定更好的決策報告
- Adjust談交叉推廣與iOS 14.5+:如何在後IDFA時代利用IDFV和歸因資料iOS
- 在 Visual Studio 中更好地進行搜尋
- 如何更好地使用 telescope
- 如何在敏捷開發中實現更好的需求管理敏捷
- 如何在Java中判斷是否為空Java
- 如何在weka中連線資料庫資料庫
- 五個步驟幫助你更好地處理工資單
- 資料的相關性或因果關係 - KDnuggets
- 如何在 Vue 中優雅地使用 CSS Modules?VueCSS
- 【譯】更好地設計 React 元件React元件
- js判斷json中資料的真假JSON
- 如何在團隊中推動Code ReviewView
- 如何在YAML中為POJO中Map配置資料? | BaeldungYAMLPOJO
- 【譯】如何在React Hooks中獲取資料?ReactHook
- 【大資料 Spark】利用電影觀看記錄資料,進行電影推薦大資料Spark
- 工具推薦 - 專案經理如何向客戶更好地彙報專案情況
- Spark SQL:Parquet資料來源之自動分割槽推斷SparkSQL
- 美團內部講座 | 清華大學崔鵬:因果推斷技術最新的發展趨勢
- java判斷mysql中資料庫是否存在JavaMySql資料庫