背景
做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è)指標服從線性模型:
其中是每個用戶的結(jié)果數(shù)據(jù),
為0/1代表是否接受干預缘缚,
是
和
所有相關(guān)協(xié)變量的矩陣勾笆。在此模型下,
是干預的影響效果桥滨。
此時如果忽略窝爪,
的OLS估計是有偏的,偏差為:
,
如果將影響齐媒、
的協(xié)變量作為
帶入公式蒲每,偏差就可以變小,但是無法證明所有影響因子都包含在了
中喻括。
可以優(yōu)化的點:
- 效果可能是非線性的邀杏,在擬合模型前做Box-Cox transformation;
- 泛化為endogenous switching model唬血,對升級和不升級分別擬合:
![]()
-
基于傾向的方法
偏差基于用戶升級的概率進行修正望蜡。傾向得分一般通過邏輯回歸估計:
分數(shù)可以用于:1.匹配或分類,可以構(gòu)建分層拷恨,使每層X與Y相關(guān)性減弱脖律;2.計算權(quán)值,用逆概率加權(quán)方法腕侄,將作為升級用戶權(quán)值状您,將
作為非升級用戶權(quán)值,構(gòu)建反事實輸出兜挨。
LinkedIn的實踐
1. iOS的升級研究
由于當時蘋果市場只支持全量發(fā)布膏孟,是否升級對是用戶自身影響因素決定的,所以是一個經(jīng)典的準實驗問題拌汇,可以用上述方法解決柒桑。關(guān)于方案效果測試,可以對之前沒有附帶新功能的版本進行"A/A"噪舀,看能否有效消除偏差魁淳。
兩個值得注意的點:
- 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實驗要求鞠绰。圖中A1、B1代表愿意升級的用戶实昨,其它為不愿意升級用戶,而A1盐固、A2代表有資格升級的用戶(在分階段發(fā)布里命中)荒给,也就是僅有A1群體成功升級。在用戶意愿和分階段發(fā)布共同作用下刁卜,上述iOS的方案會表現(xiàn)很差志电。
這種機制帶來了另一種好處,比如在20%放量階段蛔趴,對每個升級者來說挑辆,期望有4個與他相似的用戶。如果我們識別出其它相似用戶孝情,那就可以近似為隨機實驗鱼蝉。所以需要一種低假陽性的識別方法,哪怕假陰性較高(因為有4個相似用戶箫荡,召回率沒有那么重要)魁亦。
假設(shè)有個選擇標準
用于識別升級用戶,將它用于A1羔挡、A2 + B1 + B2洁奈。在高假陽性间唉,低假陰性情況下:
但是如果低假陽性,高假陰性:
由于A1與B1是可比較的利术,S(A1)與S(B1)也是可以比較的呈野,下面介紹兩種基于此的策略。
2.1. 幾何分布模型
思路是將愿意升級用戶B1從未升級用戶中識別出印叁,不同于iOS那邊將升級用戶參與模型訓練被冒,這里僅使用歷史數(shù)據(jù)來訓練,對識別出的用戶再按是否升級喉钢,判斷是否屬于B1姆打。
由于隨著時間推進,用戶升級的概率越來越高肠虽,我們需要建模獲取幔戏,代表i個用戶t日升級概率。假設(shè)每日概率恒定為
税课,則:
闲延,其中
代表活躍天數(shù)。
基于歷史數(shù)據(jù)韩玩,可以計算的最大似然估計:
代表用戶i在可以升級版本j到升級版本j前的活躍天數(shù)垒玲,
代表用戶i是否升級了版本j。
最后找颓,在發(fā)布新版本后合愈,每個用戶每天計算累計概率。選擇超過閾值的用戶認為是會升級用戶击狮。
測試結(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的最終方案敬特。
具體步驟:
- 選擇不被升級影響的變量掰邢;
- 對于所有變量,確保采用者和非采用者群體的共同支持伟阔;
- 選擇10個用于執(zhí)行精準匹配的變量辣之;
- 用于精確匹配的協(xié)變量被分桶以減少它們的基數(shù);
- 利用endogenous switching model 對匹配的樣本中的升級用戶皱炉、非升級用戶分別進行加權(quán)線性回歸怀估,訓練得到兩個模型。在將全部匹配用戶帶入兩個模型合搅,兩個模型的輸出帶入反事實框架多搀。最終結(jié)果估計:
其中權(quán)重來自匹配階段,不是一般性1~m代表升級用戶灾部。
結(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年就對準實驗進行了一些支持抡笼。對因果推斷來說,隨機實驗總是第一選擇黄鳍,但有時隨機成本過高或者根本不可能推姻。準實驗方式是流行病學、經(jīng)濟學等領(lǐng)域常常用到的方法框沟,它不失為不能A/B實驗時的一種很好補充藏古。