因果推斷綜述


最近一段時間由於業務需要,對因果推斷進行研究,針對精准營銷、用戶增長、廣告、模型可解釋性等領域都有比較廣泛的應用。本文主要從原理+實踐角度去講解一下相關的因果推斷的工具或方法。以下是主要內容:

一、雙重差分法

二、Uplift Model

三、Causal ML

四、EconML

五、Dowhy

六、模型可解釋性

1、ShapleyValue

2、Lime

----------------------------------------------------------------------------------------------------------------------------------------

一、雙重差分法(DID):DID(difference-in-differences model)也叫雙重差分模型。

1、主要原理:

(1)通過將樣本數據分成實驗組和對照組,實驗組是施加干預的一組,對照組是未施加干預的一組。

(2)通過對上述兩組樣本進行觀察指標(也稱目標指標)分析其變化,一般是轉化率等KPI指標

(3)分別計算干預前后實驗組和對照組對應的目標指標的差分結果

(4)計算兩組最終的差分結果。

如下圖所示:

                   

 

   雙重差分的結果:ATE=(A2-A1)-(B2-B1)

2、工業實踐:

  根據公示的推導,雙差分模型方程式可以寫成下面表達式:

            

 

  如果按照時間差分,則得到如下結果

              

 

  再次按照干預前后進行差分,得到結果如下:

              

 

  由此可見,交叉項的系數就是我們需要求解的因果效應ATE的值。

  工業中一般實現的方式如下:

import statsmodels.formula.api as smf
import pandas as pd

v1 =[0.367730,0.377147,0.352539,0.341864,0.29276,0.393443,0.374697,0.346989,0.385783,0.307801]
t1 = [0,0,0,0,1,0,0,0,0,1]
g1 =[1,1,1,1,1,0,0,0,0,0]
tg1 = [0,0,0,0,1,0,0,0,0,0]
aa = pd.DataFrame({'t1':t1,'g1':g1,'tg1':tg1,'v1':v1})
X = aa[['t1', 'g1','tg1']]
y = aa['v1']
est = smf.ols(formula='v1 ~ t1 + g1 + tg1', data=aa).fit() 
y_pred = est.predict(X)
aa['v1_pred'] = y_pred

print(est.summary()) 

print(est.params)
View Code

  輸出結果如下所示:

            

 

  交叉項的系數就是DID結果,處理效應。P>| t |為其P值,小於0.05表示差異顯著。

二、Uplift Model (增益模型)

1、基本原理:Uplift models預測增量值,也就是Lift的部分:

            [公式]

  在營銷領域中,我們經常會將人群划分成四個象限,橫坐標表示無干預下用戶購買情況,縱坐標是用戶在有干預下的購買狀況。如下圖所示:

                

 

 

(1)第1類人群的購買狀況在干預后發生了正向變化,如果我們不對這類人群進行干預,那他有可能是不購買的,但是干預之后的購買概率有極大提升,所以這類人群是我們真正想要觸達的用戶,即營銷敏感人群。

(2)第 2 類和第 3 類,在干預前后的購買狀況沒有變化,所以預算花費可能是浪費。

(3)第4類比較特殊的人群,雖然其在干預前后的狀態有跳變,但這種跳變不是我們希望看到的,因為確實有一些人群對營銷是反感的,所以對這類人群我們應該極力避免觸達。

Uplift Model 正是為了識別我們想要的營銷敏感人群。其主要方法有:

(1)Two-Model Approach:分別通過模型對實驗組和對照組的目標指標進行擬合,最后兩個模型的差值則為Lift。

          

(2)One-Model Approach:模型直接以實驗組與對照組的差值作為目標進行擬合

          

(3)樹模型

問題1:Uplift Model 與 Response Model之間的區別:

(1)Response Model 的目標是估計用戶看過廣告之后轉化的概率,這本身是一個相關性,但這個相關性會導致我們沒有辦法區分出自然轉化人群;

(2)Uplift Model 是估計用戶因為廣告而購買的概率,這是一個因果推斷的問題,幫助我們鎖定對營銷敏感的人群。所以 Uplift Model 是整個智能營銷中非常關鍵的技術,預知每個用戶的營銷敏感程度,從而幫助我們制定營銷策略,促成整個營銷的效用最大化。

(4)模型的評價指標:AUUC

AUUC實際上跟AUC有點類似,也是對應曲線下面的面積,如下圖所示:

          

 

其中,虛線表示隨機試驗的結果,曲線則是按照模型的方式打分分成10等分,計算對應的增益的值(uplift gain)。兩條曲線中間的面積就是AUUC,該指標越大表明模型表現越好。

2、代碼實踐

import numpy as np, matplotlib as mpl, matplotlib.pyplot as plt, pandas as pd
from pylift import TransformedOutcome
from pylift.generate_data import dgp
# Generate some data.
df = dgp(N=10000, discrete_outcome=True)


up = TransformedOutcome(df, col_treatment='Treatment', col_outcome='Outcome', stratify=df['Treatment'])

from pylift import TransformedOutcome
up.randomized_search(n_iter=100,n_jobs=10,random_state=100) # 對所有參數grid search,十分耗時,使用時注意限制參數searching的數量
up.fit(**up.rand_search_.best_params_)

up.plot(plot_type='aqini', show_theoretical_max=True) # 繪制aqini曲線
print(up.test_results_.Q_aqini)  #AUUC

三、Causal ML

  其實casual ml是一個實現uplift model的python開源工具包,項目地址:https://github.com/uber/causalml;相關的資料可以詳細參考對應的文檔說明即可。

四、EconML

  econml同樣是一個實現uplift model的開源工具包,文檔地址:https://econml.azurewebsites.net/;項目地址:https://github.com/Microsoft/EconML;

五、Dowhy

  Dowhy是集成causal graph 和potential outcome 兩個框架。項目地址:https://github.com/microsoft/dowhy;主要包含四步:

六、模型可解釋性

1、ShapleyValue:項目地址:https://github.com/slundberg/shap;

shapleyvalue主要是計算每個特征對應的邊際貢獻度的方法來對模型進行解釋。

2、Lime

Lime主要是通過假設局部是線性的方法來局部擬合原模型。

 

 

 

 

 

 

 

 

 

 

 

       

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM