傾向得分匹配(PSM)的原理以及應用

語言: CN / TW / HK

該文章主要介紹傾向得分匹配(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) ,即使用者受到(參與)干預的概率

  1. 條件獨立假設 CIA (Conditonal Independence Assumption)

給定一系列可觀測的協變數,潛在結果和干預分配相互獨立。

可認為所有影響到干預分配與潛在結果的變數都同時被觀測到。此時 可能是高維度的。

若上式成立,則干預分配與潛在結果基於 同樣條件獨立[可證明],即:

  1. 共支撐 Common Support

在一些文獻中,該條件也被稱為strong ignotability.

除了獨立外的另一個條件是存在重疊的部分,即:

這個條件能夠排除掉——給定 時能準確確定 的情況(也因為如此才有匹配的空間)。

   估算ATT

在滿足CIA和common support的情況下,我們能夠對ATT進行估算:

即:在common support 上,以傾向分為權重、對實驗組與對照組平均值的差值進行求和。

PSM實現

傾向得分匹配的實現步驟其實就如其名稱中提到的,主要有兩步:傾向得分的計算,以及基於傾向得分的匹配。

   傾向得分預測

預測使用者被幹預的概率,其實就是一個常見的二分類問題,常見的機器學習模型都可以在這裡使用。

  • 特徵選擇

需要注意的是在 特徵選擇 上,具體需要哪些特徵呢?有兩個基本的原則是需要遵守的:

  1. 同時影響干預分配和結果的變數應該被包括(使CIA成立);

  2. 被幹預項影響的變數應該排除(變數需要在干預項前計算)。

而至於特徵的量級,不同的文獻中有不同的說法:

  1. 不應使用過多的引數,因為會導致如下兩個問題:

    • 惡化support問題,導致存在某些使得

    • 不會增加bias但會增加variance,因為匹配困難一些treatment樣本會被丟棄、或control樣本被重複使用

  1. 儘可能使用更多的引數以滿足CIA假設,除非有明確的共識特徵與干預無關。

為方便起見,通常在實際應用中我們會 選取儘量多的特徵 ,同時也會用到一些機器學習中常規的特徵篩選方法。

  • 重要特徵

當我們已知一些特徵十分重要(對干預、結果)時,我們可能通過一些方式加強這些特徵對匹配的影響:

  1. 在匹配時在該特徵上兩組一致,如男性只跟男性匹配

  2. 在子人群中做匹配(男性、女性分別做匹配)

換句話說:就是在重要特徵上做完全匹配,再輔助傾向分匹配(當預期在不同分組上會有不同的ATT時尤其推薦這麼做)。

   匹配演算法

當不使用propensity score時,可以直接基於協變數進行匹配,直接計算兩個樣本協變數之間的(馬氏距離(Mahalanobis Distance) - 知乎 (zhihu.com)),這種方式通常稱為CVM(Coviate Matching)。

完成傾向分模型及預測後,每個樣本會得到一個propensity score,此時便可以進行匹配步驟了: 為每個被幹預的樣本匹配一個(或多個)虛擬的對照樣本

匹配的基礎思路很簡單,即找到一個距離最近的樣本,實現的具體方法按照漸進的順序闡述如下:

  • Nearest Neighbour Matching 最近鄰匹配

這是最直接的一種方法,即:對干預組中的使用者,選取對照組中在傾向分上相差最小的使用者做匹配。

實現上,會有 有放回無放回 兩種實現方式:

  1. 有放回(對照組樣本可重複使用):此時整體匹配質量上升,bias下降,當干預組與對照組傾向分分佈差異較大時推薦應用。此時使用的對照組樣本數會減少,導致variance上升;

  2. 無放回:此時匹配結果與匹配順序有關,順序需要保證隨機。

除了是否放回之外,還有一個可調整的地方在於對單個使用者是否可匹配多個樣本(over-sampling):通過匹配最近的多個鄰居降低了variance,提升了匹配的穩定性。但此時需要給每個鄰居賦予權重(eg. 按距離衰減)。

  • Caliper and Radius Matching 有邊界限制的半徑匹配

當最近的鄰居也相距很遠的時候,NN匹配會存在低質匹配的風險。很自然的,我們想到可以限定樣本間分數差值的上限,即Caliper。

  1. Caliper Matching:匹配時引入傾向分差值的忍受度,高於忍受度的樣本丟棄。理論上通過避免低質量匹配降低了bias,但在樣本數量較少時也可能因為匹配過少而升高了variance;

  2. 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匹配

上述的三種方法實際上都只使用了對照組中的部分樣本,若希望使用對照組中的所有樣本可對對照組中的樣本整體賦權,計算整體的差值。

   匹配質量檢驗

鑑於我們基於傾向分做匹配,需要檢測其他特徵在實驗組與對照組之間的分佈是否相近。

理論依據:因為 ,在給定 的情況下, 應該相互獨立。也就是說傾向得分相同時, 的分佈應該趨近一致。

  1. 可量化的指標——標準化偏差 Standardised Bias

通過標準化偏差我們可以衡量 在實驗組與對照組分佈的差異大小,通常我們認為低於5%的偏差是可以接受的(當然越小越好)。

我們也可以在匹配前後分別計算該值,去看看通過匹配讓Standardised Bias減少了多少。

  1. 對樣本均值的假設檢驗——T檢驗

我們也可以通過雙側T檢驗去判斷兩組的變數均值 是否有顯著差異。缺點是匹配前後偏差的減少量無法很直觀的感受到。進一步的,我們也可以基於傾向分先做一個分層,再進行T-Test。這樣可以看到不同分值下匹配的質量。

  1. 聯合顯著性/偽

另一種思路是我們把特徵當作自變數,是否干預當作因變數,計算判定係數 。在完成匹配後,兩組間的協變數 應該不存在系統性差異(即無法通過 預測是否干預),從而 應該很低。類似的,可以對所有變數做一個聯合F-Test,匹配有效的話,匹配後會拒絕假設(即解釋變數對被解釋變數的共同影響不顯著)。

除此之外,我們可以通過QQplot的視覺化、計算匹配後兩組方差的比值、計算匹配前後傾向分偏差減小量等方式衡量匹配質量。但總體來說還是推薦前兩種方式——計算SB和T檢驗,兼具了可解釋性和可量化性。假如匹配的質量達不到要求,那麼我們就要回到上一步對匹配演算法進行調整。

匹配結果+增量計算

示例資料均為虛擬構造資料,僅用於參考說明方法。

   匹配結果示例

匹配之後,常見的趨勢會如下圖一所示:

  1. 在干預之前,匹配後的實驗組和對照組呈現幾乎相同或平行的趨勢(匹配質量較好的情況下)

  2. 在干預後,兩組使用者在目標指標上會開始出現差異,可以認為是干預帶來的影響

   增量計算

因為滿足平行趨勢假設,我們可以用雙重差分法(DID)去計算干預帶來的增量;需注意的是,計算實驗組與對照組的差異時,我們通常需要取一段時間的均值,避免波動帶來的影響。

最終得到的結論類似於: 使用者在購買商品後,能夠給來訪率帶來1.5%(30天日均)的提升

   其他情況

在一些情況下,也會有其他結果的出現。

  1. 無顯著增量

使用者在干預之後來訪率有一個短暫的提升,但隨著時間的推移兩組使用者趨於一致。這種情況下我們通常認為干預並沒有給使用者來訪帶來顯著的提升。為了識別出這種情況,我們也可以通過假設檢驗或計算差值中位數的方式進行驗證。

  1. 不滿足平行趨勢假設

從下圖可以看到,左側區域實驗組與對照組的趨勢不一致(不平行),這代表我們前面完成的匹配質量較差,需要優化匹配模型。對於平行趨勢的檢驗,除了圖示法(肉眼看是否平行)我們也可以通過T檢驗的方式來驗證。

其他值得一提的點

   ATT與ATE的區別

  1. ATE:average treatment effect

  2. 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:

  1. Bias 偏差:期望預測與真實結果之間的偏離程度,刻畫演算法本身的擬合能力

  2. Variance 方差:同樣大小訓練集的變動所導致的學習效能變化,刻畫資料擾動所造成的影響

可以認為bias代表演算法本身的擬合能力而variance代表演算法的穩定性,在匹配的不同方法中它們也存在trade-offs:

演算法

Bias

Variance

NN+多鄰居

+

-

NN+最近鄰

-

+

+邊界值

-

+

無邊界值

+

-

有放回

-

+

無放回

+

-

   敏感性測試 Sensitivity Analysis

在前置知識介紹的部分有提到,做PSM需要滿足兩個假設——條件獨立和共支撐。

對於第一個條件,其含義便是我們需要觀測到所有同時影響到treatment和outcome的特徵,否則估算的ATT會存在偏差。對於common support,我們實際上計算的是傾向得分重疊區域的ATT,其實際上也可能是有偏的。在這種情況下,我們需要去進行sensitivity analysis。換句話說,我們計算得到的增量結果其實是不穩健的,我們可以通過納入不確定性的來估算一個ATT的區間,使之穩定性得到提升。

總結

在文章的最後,我們對PSM的整體流程進行一個梳理(可以看到真的不復雜),同時對PSM的優點與缺點進行簡單的介紹。

   完整流程

  1. 選擇同時影響treatment與outcome的特徵,基於特徵對treatment進行二分類建模,得到傾向分;

  2. 在支撐集上,基於重要特徵與傾向分進行匹配,為被幹預使用者找到匹配的樣本;

  3. 對匹配結果的質量進行檢驗,檢驗通過的話進入下一步,否則返回第二步進行匹配的優化;

  4. 基於匹配的結果進行平行趨勢驗證,驗證通過後通過雙重差分法進行增量計算。

  PSM的優缺點

  • 優點

  1. 在無法進行隨機試驗的情況下,可構建虛擬的對照組並對增量進行可信的估算;

  2. 實現較為容易,實驗組的樣本能夠充分的利用。

  • 缺點

  1. PSM最主要的一個缺點是——使用者永遠無法保證所有的混淆變數都被包含在建模用的特徵當中;

    • 但可通過敏感性分析校驗:如增減混淆變數後重復完成計算步驟觀測結果是否一致,或通過納入不確定性對估算增量的區間值

  1. 當支撐集(實驗、對照組的傾向分交集)較小時,PSM+DID估計的區域性樣本的增量,可能無法代表整體。

整體來說,若不過分追求準確性,PSM+DID是一個對因果增量預估的較為靠譜的方式。當實現過程中存在卡點或假設無法滿足時,除了優化模型還可以嘗試看看逆概率加權和合成控制法等其他方法。

參考文獻

  1. Evaluating the performance of propensity score matching methods

  1. Some Practical Guidance for the Implementation of Propensity Score Matching

團隊介紹

大淘寶技術使用者平臺數據洞察團隊,利用資料科學能力助力淘寶使用者增長、提升使用者價值,從使用者視角洞察使用者需求,實現使用者與平臺的雙贏。

✿    拓展閱讀

作者 | 八卜

編輯| 橙子君