A/B 測試模型改動:樣本數與統計顯著性
看到「新版好 2%」就全量上線,很可能只是雜訊。這篇給實用的判斷方法。
模型改動的效果通常不大,而使用者行為的變異很大。沒有足夠樣本就下結論,等於在讀雜訊。
先確定主要指標
只能有一個主要指標,其餘是護欄指標。同時盯十個指標,總會有一個「顯著」——那是多重比較造成的假陽性。
- 主要指標:例如任務完成率。
- 護欄指標:延遲、成本、客訴率。這些不能變差。
需要多少樣本
# 粗估:偵測基準率 p、相對提升 r 所需的每組樣本數
# n ≈ 16 × p × (1 − p) / (p × r)²
p, r = 0.60, 0.05 # 基準完成率 60%,想偵測 5% 相對提升
n = 16 * p * (1 - p) / (p * r) ** 2
print(f'每組約需 {n:,.0f} 個樣本') # 約 4,267算出來的數字常常讓人意外——想偵測小幅提升需要的樣本量很大。如果你的流量在合理時間內達不到,就不該用 A/B 測試決策,改用人工評估或更明顯的改動。
三個常見錯誤
- 偷看到顯著就停:每天看一次、看到 p<0.05 就收工,假陽性率遠高於 5%。事先決定樣本量與結束時間。
- 分流不穩定:同一使用者忽 A 忽 B,體驗混亂且統計失效。用穩定雜湊分流。
- 只跑一兩天:週間與週末的使用者行為不同,至少跑滿一週。
護欄指標要設自動停損。新版成本翻倍卻只提升 1% 完成率時,實驗應該自動中止,而不是等人來看報表。