傾向得分匹配(PSM)的原理以及應用
該文章主要介紹傾向得分匹配(PSM, Propensity Score Matching)方法的原理以及實現。這是一種理論稍微複雜、但實現較為容易的分析方法,適合非演算法同學的使用。可用於(基於觀察資料的)AB實驗、增量模型搭建等領域。
文章主要分為四部分:前置知識(因果推斷)介紹、傾向得分計算與匹配與匹配質量檢驗、匹配示例與增量計算還有一些補充的小知識點。對因果推斷有簡單瞭解的同學可以跳過第一部分,直接從第二節開始閱讀。
前置知識介紹
對因果推斷概念有所瞭解或想直接學習PSM的同學可跳過這一節。
▐ 概念一:干預效果 Treatment Effect
干預效果(Treatment Effect): 干預下的潛在結果 減去 未乾預時的潛在結果 (Rubin框架),即:
其中 表示潛在結果,1和0代表是否受到干預。
舉個例子:我們想知道我養狗給我提升了多少幸福度,理想情況下就是用我養狗時的幸福度減去我不養狗時的幸福度。
▐ 概念二:ATT Average Treatment Effect on the Treated
相較於個人的干預效果,我們更希望瞭解人群整體的干預效果,畢竟我們通常用策略干預的是一個人群。
應用PSM,我們通常希望計算得到 被幹預的使用者的平均干預效果 ,即ATT(average treatment effect on the treated),即
其中變數 代表是否收到干預。
可以看到 代表被幹預的使用者假如不被幹預的情況下的潛在結果,是一個無法觀測的數值。倘若可以建立AB測試,我們可以利用對照組得到該結果,在無法進行AB測試的情況(例如 是一個主動的行為)我們可以通過PSM擬合一個虛擬的對照組進行計算。
▐ 計算ATT所需滿足的假設
這裡引入一個新的概念, 傾向性得分(Propensity Score) ,即使用者受到(參與)干預的概率
-
條件獨立假設 CIA (Conditonal Independence Assumption)
給定一系列可觀測的協變數,潛在結果和干預分配相互獨立。
可認為所有影響到干預分配與潛在結果的變數都同時被觀測到。此時 可能是高維度的。
若上式成立,則干預分配與潛在結果基於 同樣條件獨立[可證明],即:
-
共支撐 Common Support
在一些文獻中,該條件也被稱為strong ignotability.
除了獨立外的另一個條件是存在重疊的部分,即:
這個條件能夠排除掉——給定 時能準確確定 的情況(也因為如此才有匹配的空間)。
▐ 估算ATT
在滿足CIA和common support的情況下,我們能夠對ATT進行估算:
即:在common support 上,以傾向分為權重、對實驗組與對照組平均值的差值進行求和。
PSM實現
傾向得分匹配的實現步驟其實就如其名稱中提到的,主要有兩步:傾向得分的計算,以及基於傾向得分的匹配。
▐ 傾向得分預測
預測使用者被幹預的概率,其實就是一個常見的二分類問題,常見的機器學習模型都可以在這裡使用。
-
特徵選擇
需要注意的是在 特徵選擇 上,具體需要哪些特徵呢?有兩個基本的原則是需要遵守的:
-
同時影響干預分配和結果的變數應該被包括(使CIA成立);
-
被幹預項影響的變數應該排除(變數需要在干預項前計算)。
而至於特徵的量級,不同的文獻中有不同的說法:
-
不應使用過多的引數,因為會導致如下兩個問題:
-
惡化support問題,導致存在某些使得
-
不會增加bias但會增加variance,因為匹配困難一些treatment樣本會被丟棄、或control樣本被重複使用
-
儘可能使用更多的引數以滿足CIA假設,除非有明確的共識特徵與干預無關。
為方便起見,通常在實際應用中我們會 選取儘量多的特徵 ,同時也會用到一些機器學習中常規的特徵篩選方法。
-
重要特徵
當我們已知一些特徵十分重要(對干預、結果)時,我們可能通過一些方式加強這些特徵對匹配的影響:
-
在匹配時在該特徵上兩組一致,如男性只跟男性匹配
-
在子人群中做匹配(男性、女性分別做匹配)
換句話說:就是在重要特徵上做完全匹配,再輔助傾向分匹配(當預期在不同分組上會有不同的ATT時尤其推薦這麼做)。
▐ 匹配演算法
當不使用propensity score時,可以直接基於協變數進行匹配,直接計算兩個樣本協變數之間的(馬氏距離(Mahalanobis Distance) - 知乎 (zhihu.com)),這種方式通常稱為CVM(Coviate Matching)。
完成傾向分模型及預測後,每個樣本會得到一個propensity score,此時便可以進行匹配步驟了: 為每個被幹預的樣本匹配一個(或多個)虛擬的對照樣本 。
匹配的基礎思路很簡單,即找到一個距離最近的樣本,實現的具體方法按照漸進的順序闡述如下:
-
Nearest Neighbour Matching 最近鄰匹配
這是最直接的一種方法,即:對干預組中的使用者,選取對照組中在傾向分上相差最小的使用者做匹配。
實現上,會有 有放回 和 無放回 兩種實現方式:
-
有放回(對照組樣本可重複使用):此時整體匹配質量上升,bias下降,當干預組與對照組傾向分分佈差異較大時推薦應用。此時使用的對照組樣本數會減少,導致variance上升;
-
無放回:此時匹配結果與匹配順序有關,順序需要保證隨機。
除了是否放回之外,還有一個可調整的地方在於對單個使用者是否可匹配多個樣本(over-sampling):通過匹配最近的多個鄰居降低了variance,提升了匹配的穩定性。但此時需要給每個鄰居賦予權重(eg. 按距離衰減)。
-
Caliper and Radius Matching 有邊界限制的半徑匹配
當最近的鄰居也相距很遠的時候,NN匹配會存在低質匹配的風險。很自然的,我們想到可以限定樣本間分數差值的上限,即Caliper。
-
Caliper Matching:匹配時引入傾向分差值的忍受度,高於忍受度的樣本丟棄。理論上通過避免低質量匹配降低了bias,但在樣本數量較少時也可能因為匹配過少而升高了variance;
-
Radius Matching:不止匹配caliper中的最近樣本,使用caliper中的所有樣本進行匹配。這種方法的優勢在於,當有高質量匹配時使用了更多的樣本、而當缺乏高質量匹配時則使用較少的樣本。
-
Stratification and Interval Matching 分層區間匹配
分層匹配可以看作radius matching的一種相似版本,即將傾向得分分成多個區間,在每個區間內進行匹配。需要注意的是,分層的依據除了propensity score,也可以用一些我們認為重要的特徵(如性別、地區),在相同特徵的使用者間進行匹配。
▐ 匹配示例SQL
在計算複雜度不太高的情況下,我們通常能夠使用sql進行匹配演算法的實現,示例如下:
with matching_detail as (
select t1.user_id as treatment_userid,
t1.score as treatment_pscore,
t2.user_id as control_userid,
t2.score as control_pscore,
row_number() over (partition by t1.user_id order by abs(t1.score-t2.score) asc) as rn
from propensity_score_treatment t1
left join propensity_score_control t2
-- 分層匹配
on t1.gender = t2.gender and round(t1.score, 1)*10 = round(t2.score, 1)*10
where abs(t1.score-t2.score) <= 0.05 -- caliper matching
)
select * from matching_detail where rn = 1 # rn大於1時為多鄰居/radius匹配
上述的三種方法實際上都只使用了對照組中的部分樣本,若希望使用對照組中的所有樣本可對對照組中的樣本整體賦權,計算整體的差值。
▐ 匹配質量檢驗
鑑於我們基於傾向分做匹配,需要檢測其他特徵在實驗組與對照組之間的分佈是否相近。
理論依據:因為 ,在給定 的情況下, 與 應該相互獨立。也就是說傾向得分相同時, 的分佈應該趨近一致。
-
可量化的指標——標準化偏差 Standardised Bias
通過標準化偏差我們可以衡量 在實驗組與對照組分佈的差異大小,通常我們認為低於5%的偏差是可以接受的(當然越小越好)。
我們也可以在匹配前後分別計算該值,去看看通過匹配讓Standardised Bias減少了多少。
-
對樣本均值的假設檢驗——T檢驗
我們也可以通過雙側T檢驗去判斷兩組的變數均值 是否有顯著差異。缺點是匹配前後偏差的減少量無法很直觀的感受到。進一步的,我們也可以基於傾向分先做一個分層,再進行T-Test。這樣可以看到不同分值下匹配的質量。
-
聯合顯著性/偽
另一種思路是我們把特徵當作自變數,是否干預當作因變數,計算判定係數 。在完成匹配後,兩組間的協變數 應該不存在系統性差異(即無法通過 預測是否干預),從而 應該很低。類似的,可以對所有變數做一個聯合F-Test,匹配有效的話,匹配後會拒絕假設(即解釋變數對被解釋變數的共同影響不顯著)。
除此之外,我們可以通過QQplot的視覺化、計算匹配後兩組方差的比值、計算匹配前後傾向分偏差減小量等方式衡量匹配質量。但總體來說還是推薦前兩種方式——計算SB和T檢驗,兼具了可解釋性和可量化性。假如匹配的質量達不到要求,那麼我們就要回到上一步對匹配演算法進行調整。
匹配結果+增量計算
示例資料均為虛擬構造資料,僅用於參考說明方法。
▐ 匹配結果示例
匹配之後,常見的趨勢會如下圖一所示:
-
在干預之前,匹配後的實驗組和對照組呈現幾乎相同或平行的趨勢(匹配質量較好的情況下)
-
在干預後,兩組使用者在目標指標上會開始出現差異,可以認為是干預帶來的影響
▐ 增量計算
因為滿足平行趨勢假設,我們可以用雙重差分法(DID)去計算干預帶來的增量;需注意的是,計算實驗組與對照組的差異時,我們通常需要取一段時間的均值,避免波動帶來的影響。
最終得到的結論類似於: 使用者在購買商品後,能夠給來訪率帶來1.5%(30天日均)的提升 。
▐ 其他情況
在一些情況下,也會有其他結果的出現。
-
無顯著增量
使用者在干預之後來訪率有一個短暫的提升,但隨著時間的推移兩組使用者趨於一致。這種情況下我們通常認為干預並沒有給使用者來訪帶來顯著的提升。為了識別出這種情況,我們也可以通過假設檢驗或計算差值中位數的方式進行驗證。
-
不滿足平行趨勢假設
從下圖可以看到,左側區域實驗組與對照組的趨勢不一致(不平行),這代表我們前面完成的匹配質量較差,需要優化匹配模型。對於平行趨勢的檢驗,除了圖示法(肉眼看是否平行)我們也可以通過T檢驗的方式來驗證。
其他值得一提的點
▐ ATT與ATE的區別
-
ATE:average treatment effect
-
ATT:average treatment effect on the treated
可以認為ATE是人群整體的干預增量效果,而ATT是實際被幹預人群的干預增量效果。通常我們通過PSM+DID計算的是ATT,因為ATE還會涉及人群的干預率。更詳細的解釋可以參考stackexchange上的這個回答:http://stats.stackexchange.com/questions/308397/why-is-average-treatment-effect-different-from-average-treatment-effect-on-the-t
▐ Bias與Variance
在匹配演算法的步驟,我們有提到bias與varianc:
-
Bias 偏差:期望預測與真實結果之間的偏離程度,刻畫演算法本身的擬合能力
-
Variance 方差:同樣大小訓練集的變動所導致的學習效能變化,刻畫資料擾動所造成的影響
可以認為bias代表演算法本身的擬合能力而variance代表演算法的穩定性,在匹配的不同方法中它們也存在trade-offs:
演算法 |
Bias |
Variance |
NN+多鄰居 |
+ |
- |
NN+最近鄰 |
- |
+ |
+邊界值 |
- |
+ |
無邊界值 |
+ |
- |
有放回 |
- |
+ |
無放回 |
+ |
- |
▐ 敏感性測試 Sensitivity Analysis
在前置知識介紹的部分有提到,做PSM需要滿足兩個假設——條件獨立和共支撐。
對於第一個條件,其含義便是我們需要觀測到所有同時影響到treatment和outcome的特徵,否則估算的ATT會存在偏差。對於common support,我們實際上計算的是傾向得分重疊區域的ATT,其實際上也可能是有偏的。在這種情況下,我們需要去進行sensitivity analysis。換句話說,我們計算得到的增量結果其實是不穩健的,我們可以通過納入不確定性的來估算一個ATT的區間,使之穩定性得到提升。
總結
在文章的最後,我們對PSM的整體流程進行一個梳理(可以看到真的不復雜),同時對PSM的優點與缺點進行簡單的介紹。
▐ 完整流程
-
選擇同時影響treatment與outcome的特徵,基於特徵對treatment進行二分類建模,得到傾向分;
-
在支撐集上,基於重要特徵與傾向分進行匹配,為被幹預使用者找到匹配的樣本;
-
對匹配結果的質量進行檢驗,檢驗通過的話進入下一步,否則返回第二步進行匹配的優化;
-
基於匹配的結果進行平行趨勢驗證,驗證通過後通過雙重差分法進行增量計算。
▐ PSM的優缺點
-
優點
-
在無法進行隨機試驗的情況下,可構建虛擬的對照組並對增量進行可信的估算;
-
實現較為容易,實驗組的樣本能夠充分的利用。
-
缺點
-
PSM最主要的一個缺點是——使用者永遠無法保證所有的混淆變數都被包含在建模用的特徵當中;
-
但可通過敏感性分析校驗:如增減混淆變數後重復完成計算步驟觀測結果是否一致,或通過納入不確定性對估算增量的區間值
-
當支撐集(實驗、對照組的傾向分交集)較小時,PSM+DID估計的區域性樣本的增量,可能無法代表整體。
整體來說,若不過分追求準確性,PSM+DID是一個對因果增量預估的較為靠譜的方式。當實現過程中存在卡點或假設無法滿足時,除了優化模型還可以嘗試看看逆概率加權和合成控制法等其他方法。
參考文獻
-
Evaluating the performance of propensity score matching methods
-
Some Practical Guidance for the Implementation of Propensity Score Matching
團隊介紹
大淘寶技術使用者平臺數據洞察團隊,利用資料科學能力助力淘寶使用者增長、提升使用者價值,從使用者視角洞察使用者需求,實現使用者與平臺的雙贏。
✿ 拓展閱讀
作者 | 八卜
編輯| 橙子君
- 淘寶直播PC客戶端的hybrid探索
- iOS繪製物理按鈕 - 透明圓角漸變邊框
- SIGIR2022 | 流行度偏差如何利用?探索解耦域適應無偏召回模型
- 多模態技術在淘寶主搜召回場景的探索
- 合理使用執行緒池以及執行緒變數
- CVPR 2022 | GEN-VLKT:基於預訓練知識遷移的HOI檢測方法
- 大淘寶使用者平臺技術團隊單元測試建設
- 淺入淺出代理模式與Spring事務管理
- 內容推薦場景中自監督學習的應用
- 下一代響應式Web設計:元件驅動式Web設計
- 淘系使用者平臺技術團隊單元測試建設
- CVPR2022 | 開源:基於間距自適應查詢表的實時影象增強方法
- 建設下一代 Web 開放技術——WebContain
- MaxCompute中的JSON資料處理
- 無盡流場景優化總結
- 淺談 TS 標稱型別介紹及社群實現
- 2022大淘寶技術工程師推薦書單
- Flutter 新一代圖形渲染器 Impeller
- 面向前端與未來標準的Node.js Web 框架再進化
- 無線運維的起源與專案建設思考