因果推斷——準實驗法評估App新版本整體效果

背景

做A/B實驗相關(guān)工作中遇到一些問題送丰,其中之一就是如何判斷新版本對用戶影響吹截,以前的做法:
1.所有新功能都預埋開關(guān)(默認關(guān))措伐,對新版本用戶隨機分桶后對實驗組開啟侦另,用標準A/B實驗方法評估秩命。但是這在需要很高開發(fā)成本尉共,而且容易出錯;
2.同時構(gòu)建兩個新版本弃锐,a版本不包含任何新功能袄友,b版本包含全部新功能,對用戶隨機分桶后霹菊,分別開放不同版本的升級剧蚣,之后對a版本用戶、b版本用戶用隨機實驗法進行評估旋廷。這也需要較高成本鸠按,而且對第三方渠道不能自由控制用戶是否可以,僅能用在灰度發(fā)布階段饶碘,樣本量較写纭;
3.隨機分桶后熊镣,僅對實驗組開放升級,之后與對照組對比募书,并可對實驗組中升級用戶作為訓練集绪囱,通過機器學習方法判斷對照組中愿意升級的用戶,對他們進行評估莹捡。本方法同樣存在2中的問題鬼吵,只是免去了打a版本發(fā)布的過程。

上述問題都有實現(xiàn)難度篮赢、成本方面齿椅、樣本量的問題,那么有沒有辦法不改變發(fā)布流程启泣,科學的評估效果呢涣脚?有,LinkedIn用準實驗方法做過相同的事情:Evaluating Mobile Apps with A/B and Quasi A/B tests寥茫。下面記錄下我的個人理解遣蚀。

準實驗是什么?

眾所周知,相關(guān)不一定等于因果纱耻,判斷因果效應(yīng)的黃金工具是隨機實驗芭梯。準實驗是在沒有辦法進行隨機實驗時,對觀測數(shù)據(jù)因果推斷的方法弄喘。一個詳細的介紹可以參考:https://www.scribbr.com/methodology/quasi-experimental-design/玖喘。

為什么需要準實驗?

LinkedIn發(fā)布了一個大的更新版本蘑志,沒有辦法把所有的功能做成開關(guān)累奈,而且他們不能自己灰度升級發(fā)布贬派。因此需要用準實驗方法來進行評估。目的是研究版本效果差異费尽,對比的是新版本用戶與舊版本用戶數(shù)據(jù)赠群,但是用戶是否會升級與個人意愿、是否有wifi旱幼、渠道策略等因素有關(guān)查描,直接做diff是有偏的,需要采用因果推斷中的準實驗法柏卤。

怎么做準實驗冬三?

1. 常用的準實驗技術(shù)

  • OLS類方法
    假設(shè)指標服從線性模型:Y = \beta_0 + Z\beta_1 + X\beta_2 + \epsilon
    其中Y = (Y_1,...Y_n)^T是每個用戶的結(jié)果數(shù)據(jù), Z = (Z_1,...Z_n)^T為0/1代表是否接受干預缘缚,X = (X_1,...X_n)^TYZ所有相關(guān)協(xié)變量的矩陣勾笆。在此模型下,\beta_1是干預的影響效果桥滨。
    此時如果忽略X窝爪,\beta_1的OLS估計是有偏的,偏差為:bias = (D^TD)^{-1}D^TX\beta_2, D = (1, Z)
    如果將影響Z齐媒、Y的協(xié)變量作為X帶入公式蒲每,偏差就可以變小,但是無法證明所有影響因子都包含在了X中喻括。

可以優(yōu)化的點:

  1. 效果可能是非線性的邀杏,在擬合模型前做Box-Cox transformation;
  2. 泛化為endogenous switching model唬血,對升級和不升級分別擬合:
    Y_1 = X_1 \beta_1 + \epsilon_1\ if\ Z=1
    Y_0 = X_0 \beta_0 + \epsilon_0\ if\ Z=0
  • 基于傾向的方法
    偏差基于用戶升級的概率進行修正望蜡。傾向得分一般通過邏輯回歸估計:P(Z=1|X=x) = \frac{e^{x\beta}}{1 + e^{x\beta}}
    分數(shù)可以用于:1.匹配或分類,可以構(gòu)建分層拷恨,使每層X與Y相關(guān)性減弱脖律;2.計算權(quán)值,用逆概率加權(quán)方法腕侄,將\frac{ 1 }{P(Z_i=1|X)}作為升級用戶權(quán)值状您,將\frac{1}{P(Z_i=0|X)}作為非升級用戶權(quán)值,構(gòu)建反事實輸出兜挨。

LinkedIn的實踐

1. iOS的升級研究

由于當時蘋果市場只支持全量發(fā)布膏孟,是否升級對是用戶自身影響因素決定的,所以是一個經(jīng)典的準實驗問題拌汇,可以用上述方法解決柒桑。關(guān)于方案效果測試,可以對之前沒有附帶新功能的版本進行"A/A"噪舀,看能否有效消除偏差魁淳。

AUC of the propensity model

兩個值得注意的點:

  • wifi的影響
    測試發(fā)現(xiàn)飘诗,很多用戶在有wifi的情況下,會自動或者主動升級界逛。有無wifi是一個隨機不可預測的時間昆稿,所以用戶什么時候會升級也不可預測。導致上圖的紅色曲線息拜,7天來看AUC較高溉潭,短期來看AUC較低。此時將預測升級概率很高但是沒有升級的用戶作為噪音移除少欺,可以得到綠色曲線喳瓣。
  • 選擇正確的特征
    比如將設(shè)備版本信息從特征集中移除,曲線就會變成藍色那條赞别,效果很差畏陕。


    Bias of various quasi methods evaluated for the iOS release

測試結(jié)果:
從上圖可看到,bias大幅降低仿滔,endogenous OLS模型效果最好惠毁。

2. Android的升級研究

谷歌市場可以分階段配置發(fā)布比例,提供給老用戶和新用戶下載安裝崎页,這依然不符合A/B實驗要求鞠绰。
Illustrate how adoption bias exists even in Google staged roll out.

圖中A1、B1代表愿意升級的用戶实昨,其它為不愿意升級用戶,而A1盐固、A2代表有資格升級的用戶(在分階段發(fā)布里命中)荒给,也就是僅有A1群體成功升級。在用戶意愿和分階段發(fā)布共同作用下刁卜,上述iOS的方案會表現(xiàn)很差志电。
這種機制帶來了另一種好處,比如在20%放量階段蛔趴,對每個升級者來說挑辆,期望有4個與他相似的用戶。如果我們識別出其它相似用戶孝情,那就可以近似為隨機實驗鱼蝉。所以需要一種低假陽性的識別方法,哪怕假陰性較高(因為有4個相似用戶箫荡,召回率沒有那么重要)魁亦。

假設(shè)有個選擇標準S用于識別升級用戶,將它用于A1羔挡、A2 + B1 + B2洁奈。在高假陽性间唉,低假陰性情況下:
S(A_1) = A_1
S(A_2 + B_1 + B_2) = S(A_2) + B_1 + S(B_2) > B_1
但是如果低假陽性,高假陰性:
S(A_1) \subset A_1
S(A_2 + B_1 + B_2) = S(B_1) \subset B_1

由于A1與B1是可比較的利术,S(A1)與S(B1)也是可以比較的呈野,下面介紹兩種基于此的策略。

2.1. 幾何分布模型

思路是將愿意升級用戶B1從未升級用戶中識別出印叁,不同于iOS那邊將升級用戶參與模型訓練被冒,這里僅使用歷史數(shù)據(jù)來訓練,對識別出的用戶再按是否升級喉钢,判斷是否屬于B1姆打。
由于隨著時間推進,用戶升級的概率越來越高肠虽,我們需要建模獲取P_{it}幔戏,代表i個用戶t日升級概率。假設(shè)每日概率恒定為P_i税课,則:
P_{it} = (1 - P_i)^{a_{it} - 1}P_i闲延,其中a_{it}代表活躍天數(shù)。
基于歷史數(shù)據(jù)韩玩,可以計算P_i的最大似然估計:
\hat{P_i} = \argmax_{P_i}\prod ^s_{j=1}(1 - P_i)^{k_{ij} - 1}P_i^{I_{ij}} = \frac{\sum_jI_{ij}}{\sum_jI_{ij} + \sum_jk_{ij}}
k_{ij}代表用戶i在可以升級版本j到升級版本j前的活躍天數(shù)垒玲,I_{ij}代表用戶i是否升級了版本j。
最后找颓,在發(fā)布新版本后合愈,每個用戶每天計算累計概率1 - (1 - \hat{P_i})^{a_{it}}。選擇超過閾值的用戶認為是會升級用戶击狮。

Bias of the geometric distribution model.

測試結(jié)果看佛析,一周來看幾乎可以矯正所有的選擇性偏差。但是開始幾天精度比較低彪蓬。

2.2. Doubly Robust with Matching

由于非升級組有更多的用戶與升級用戶相似寸莫,直接通過協(xié)變量將他們與升級用戶匹配變得更容易。最基礎(chǔ)的兩種匹配方法:

  • 精準匹配:用協(xié)變量的值精準匹配档冬;
  • Nearest neighbor匹配:選擇與升級用戶距離最近的潛在升級用戶膘茎。幾種方法:(1)局部貪心方法選擇最匹配那一個,但是這會與升級用戶順序相關(guān)酷誓;(2)全局最優(yōu)方法披坏。

兩種策略都不容易通過GPU運算,尤其在有大量協(xié)變量時盐数,帶來性能上的問題刮萌。
因此,LinkedIn采取了“Doubly Robust” 方法娘扩,先進行匹配算法着茸,在其基礎(chǔ)之上進行線性回歸壮锻。第一階段僅適用10個重要的連續(xù)變量進行匹配分桶,線性回歸階段有大量的協(xié)變量涮阔,對偏斜進行補償猜绣。此方法可以從第一天起就有不錯的表現(xiàn),是LinkedIn的最終方案敬特。

具體步驟:

  1. 選擇不被升級影響的變量掰邢;
  2. 對于所有變量,確保采用者和非采用者群體的共同支持伟阔;
  3. 選擇10個用于執(zhí)行精準匹配的變量辣之;
  4. 用于精確匹配的協(xié)變量被分桶以減少它們的基數(shù);
  5. 利用endogenous switching model 對匹配的樣本中的升級用戶皱炉、非升級用戶分別進行加權(quán)線性回歸怀估,訓練得到兩個模型。在將全部匹配用戶帶入兩個模型合搅,兩個模型的輸出帶入反事實框架多搀。最終結(jié)果估計:
    DRE = \frac{1}{\sum^n_{i=1}w_i} (\sum^m_{i=1}w_i({y_i - \hat{y_i}^{0}}) + \sum^n_{i=m+1}w_i({ \hat{y_i}^{1} - y_i}) )
    其中w_i權(quán)重來自匹配階段,不是一般性1~m代表升級用戶灾部。
Bias of the doubly robust with matching model. Both are for Android 20% roll out.

結(jié)果看起來很棒康铭,在第一天也只有很小的偏差。

3. 新奇效應(yīng)

大的變更會有強的新奇效應(yīng)赌髓,用戶開始階段會進行很多探索从藤。
需要判斷兩個問題:1.是否有新奇效應(yīng);2.新奇效應(yīng)持續(xù)多久锁蠕?
標準ab實驗中夷野,可以觀測隨著效果隨著時間的推移是否變?nèi)酰源藖砼袛嗄渑妗T跍蕦嶒灧椒ㄖ猩ㄔ穑Y(jié)合上文相關(guān)方法榛鼎,也可以進行類似的判斷逃呼。

后記

在量化分析、數(shù)據(jù)決策上國外領(lǐng)先的者娱,Netflix的實驗平臺在18年就對準實驗進行了一些支持抡笼。
Netflix實驗平臺架構(gòu)

對因果推斷來說,隨機實驗總是第一選擇黄鳍,但有時隨機成本過高或者根本不可能推姻。準實驗方式是流行病學、經(jīng)濟學等領(lǐng)域常常用到的方法框沟,它不失為不能A/B實驗時的一種很好補充藏古。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末增炭,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子拧晕,更是在濱河造成了極大的恐慌隙姿,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,997評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件厂捞,死亡現(xiàn)場離奇詭異输玷,居然都是意外死亡,警方通過查閱死者的電腦和手機靡馁,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,603評論 3 392
  • 文/潘曉璐 我一進店門欲鹏,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人臭墨,你說我怎么就攤上這事赔嚎。” “怎么了裙犹?”我有些...
    開封第一講書人閱讀 163,359評論 0 353
  • 文/不壞的土叔 我叫張陵尽狠,是天一觀的道長。 經(jīng)常有香客問我叶圃,道長袄膏,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,309評論 1 292
  • 正文 為了忘掉前任掺冠,我火速辦了婚禮沉馆,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘德崭。我一直安慰自己斥黑,他們只是感情好,可當我...
    茶點故事閱讀 67,346評論 6 390
  • 文/花漫 我一把揭開白布眉厨。 她就那樣靜靜地躺著锌奴,像睡著了一般。 火紅的嫁衣襯著肌膚如雪憾股。 梳的紋絲不亂的頭發(fā)上鹿蜀,一...
    開封第一講書人閱讀 51,258評論 1 300
  • 那天,我揣著相機與錄音服球,去河邊找鬼茴恰。 笑死,一個胖子當著我的面吹牛斩熊,可吹牛的內(nèi)容都是我干的往枣。 我是一名探鬼主播,決...
    沈念sama閱讀 40,122評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼分冈!你這毒婦竟也來了圾另?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,970評論 0 275
  • 序言:老撾萬榮一對情侶失蹤雕沉,失蹤者是張志新(化名)和其女友劉穎盯捌,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蘑秽,經(jīng)...
    沈念sama閱讀 45,403評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡饺著,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,596評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了肠牲。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片幼衰。...
    茶點故事閱讀 39,769評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖缀雳,靈堂內(nèi)的尸體忽然破棺而出渡嚣,到底是詐尸還是另有隱情,我是刑警寧澤肥印,帶...
    沈念sama閱讀 35,464評論 5 344
  • 正文 年R本政府宣布识椰,位于F島的核電站,受9級特大地震影響深碱,放射性物質(zhì)發(fā)生泄漏腹鹉。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,075評論 3 327
  • 文/蒙蒙 一敷硅、第九天 我趴在偏房一處隱蔽的房頂上張望功咒。 院中可真熱鬧,春花似錦绞蹦、人聲如沸力奋。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,705評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽景殷。三九已至,卻和暖如春澡屡,著一層夾襖步出監(jiān)牢的瞬間猿挚,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,848評論 1 269
  • 我被黑心中介騙來泰國打工挪蹭, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留亭饵,地道東北人休偶。 一個月前我還...
    沈念sama閱讀 47,831評論 2 370
  • 正文 我出身青樓梁厉,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子词顾,可洞房花燭夜當晚...
    茶點故事閱讀 44,678評論 2 354

推薦閱讀更多精彩內(nèi)容