M08.05|A/B 測試:用實驗驗證 AI 的效果
不要相信直覺 — 讓數據告訴你哪個版本更好
本講學習重點
A/B 測試:隨機分實驗組(新版本)和控制組(舊版本),比較兩組在目標指標上的差異
假設檢定:零假設 H₀(無差異)vs 對立假設 H₁(有差異),p 值是 H₀ 成立時觀測到至少如此極端結果的機率
p < 0.05 表示在 H₀ 成立的前提下,看到這個差異的機率低於 5%,通常拒絕 H₀
型一錯誤(False Positive,α):H₀ 為真但錯誤拒絕;型二錯誤(False Negative,β):H₁ 為真但未能拒絕
樣本量計算需要:效應量(期望的最小可偵測效果,MDE)、α(顯著性水準)、1-β(統計效力,通常 80%)
多重比較:同時測試 20 個假設,即使所有 H₀ 都為真,預期會有 1 個意外 p < 0.05(Bonferroni 校正)
辛普森悖論在 A/B 測試中:整體看 B 更好,但按子組分析 A 更好,需分層分析
🎙️ Podcast(中文)
一句話搞懂
A/B 測試是讓數據代替直覺做決策的標準工具——把用戶隨機分成兩組,一組看舊版(A),一組看新版(B),收集足夠的資料後用統計方法判斷兩組的差異是真實效果還是隨機巧合;在 AI 系統上線前後,這是驗證「模型真的有幫到用戶」最不偏頗的方式。
白話解說
為什麼直覺和事前分析不夠
假設你是一家電商的產品經理,你把購物車頁面的結帳按鈕顏色從灰色改成綠色,然後觀察到「改版後第一周」的轉換率從 3.2% 上升到 3.8%,你會興奮地宣布「綠色按鈕讓轉換率提升了 19%」嗎?
這個分析有幾個致命問題:改版的同一周,你的平台恰好發了一個折扣優惠郵件,這個促銷活動獨立提升了轉換率,和按鈕顏色無關;這一周剛好是長假前夕,消費者本來就更願意購物;樣本量可能不夠,3.2% 到 3.8% 的差距在統計上可能完全是正常的隨機波動。直覺告訴你「有效」,但直覺無法排除所有其他可能的解釋。
A/B 測試(A/B Testing)的設計,正是為了解決這個問題。它的核心機制是隨機化(Randomization):把用戶隨機分配到兩組(或多組),確保兩組在所有已知和未知的因素上(年齡分佈、購買習慣、進站時間……)都大致相同;然後讓兩組分別看不同的版本,在同一時間段內收集結果。因為隨機化,任何非干預因素(折扣郵件、假期效應)都會同等地影響兩組,所以最後兩組之間的差異,才能被解讀為干預(按鈕顏色改變)的因果效果,而不是其他因素的混淆。
假設檢定:給「這是巧合嗎?」一個數字
A/B 測試結束後,你有兩組數據:A 組(控制組,舊版本)轉換率 3.2%,B 組(實驗組,新版本)轉換率 3.7%。問題是:這個差距是真實效果,還是隨機誤差?如果你只有 100 個用戶,A 組 3 人購買、B 組 4 人購買,這種程度的波動純粹靠機率就可能發生,根本說明不了什麼。
假設檢定(Hypothesis Testing)提供了一個嚴謹的框架來回答這個問題:
零假設(Null Hypothesis, H₀):新舊版本的轉換率沒有真實差異,任何觀測到的差異都是隨機波動。
對立假設(Alternative Hypothesis, H₁):新舊版本的轉換率有真實差異(或具體說:B 版本優於 A 版本)。
p 值(p-value)是假設檢定的核心輸出,定義為:在假設 H₀ 為真的前提下,觀測到「至少如此極端的差異」的機率。如果 p = 0.03,意思是:如果新舊版本真的沒有差異(H₀ 成立),那麼純靠隨機波動就得到 0.5% 以上差距的機率只有 3%。因為這個機率很低(通常以 α = 5% 作為閾值,即 p < 0.05 時「拒絕 H₀」),我們認為「有足夠的統計證據說明這個差距不太可能是純粹的隨機」,也就是認為 B 版本的效果是真實的。
p 值最容易被誤解:p 值不是「B 版本效果為真的機率」(這個誤解非常普遍)——它是在 H₀ 成立的條件下看到這份數據的機率,兩者是完全不同的東西(貝葉斯思考 vs 頻率主義思考的根本差異)。同時,p < 0.05 是一個慣例閾值,不是自然規律;在醫藥研究中通常要求 p < 0.01 甚至 p < 0.001,而在探索性分析中有時 p < 0.1 就值得繼續深入研究。
型一和型二錯誤:兩種犯錯的方式
假設檢定面臨兩種可能的錯誤,它們之間存在不可避免的取捨:
型一錯誤(Type I Error,偽陽性):H₀ 實際上是真的(兩個版本真的沒有差異),但我們錯誤地拒絕了 H₀,聲稱「B 版本更好」。型一錯誤率等於顯著性水準 α。如果 α = 0.05,那麼即使新舊版本完全相同、差異純屬隨機,長期重複測試的情況下每 20 次實驗就有 1 次會「錯誤地發現顯著效果」。
型二錯誤(Type II Error,偽陰性):H₁ 實際上是真的(B 版本確實更好),但我們未能偵測到,結果沒有拒絕 H₀,放棄了一個真正有效的改進。型二錯誤率 β,對應的「統計效力(Statistical Power)= 1-β」代表「當真實效果存在時,正確偵測到的機率」。業界通常要求效力至少 80%(即 β ≤ 0.20)。
這兩種錯誤是此消彼長的關係:降低 α(要求更嚴格的 p 值閾值)可以減少型一錯誤,但代價是更難偵測到真實效果(型二錯誤增加);反之亦然。解決之道是在設計階段就計算足夠的樣本量,確保在期望的效應量下,統計效力能達到 80% 或更高。
樣本量計算:實驗前最重要的步驟
在 A/B 測試開始之前,最關鍵的一步是計算所需的樣本量(而不是等數據收集完了再來看「夠不夠」)。計算樣本量需要確定三個輸入:
基準轉換率(Baseline Rate):目前的指標是多少?例如當前轉換率是 3.2%。
最小可偵測效果(Minimum Detectable Effect, MDE):你希望能偵測到多小的改善?如果你期望新版本至少要有 10% 的相對提升(也就是轉換率從 3.2% 提升到 3.52%),所需樣本量比期望偵測 50% 提升大得多——更微小的效果需要更多數據才能從噪音中分辨出來。
顯著性水準(α)和效力(1-β):通常設定 α = 5%、效力 = 80%(即 β = 20%)。
粗略計算公式(雙比例 Z 檢定)所需的每組樣本量大約是:n ≈ 16σ² / δ²,其中 σ² 是結果的方差,δ 是你想偵測的效應大小。實踐中通常用統計工具(如 evan miller 的線上 A/B 測試計算器)直接輸入參數得到樣本量。一個常見的陷阱是:算出「需要 50,000 個用戶」後,立刻開始實驗,看到 10,000 個用戶時 p 值碰巧 < 0.05 就停下來聲稱「顯著了」——這就是危險的提早停止(Peeking Problem),大幅增加了型一錯誤的機率。正確做法是在實驗前確定樣本量,嚴格等到達到樣本量後再做一次性的統計檢定。
從 A/B 測試到更複雜的實驗設計
標準的 A/B 測試(一個控制組 vs 一個實驗組)是最基礎的形式,但實際的 AI 產品驗證往往需要更複雜的設計:
A/B/n 測試(多變體測試):同時測試多個版本(A、B、C、D……)。優點是能在同一時間段比較多個選項,節省時間;缺點是引入了多重比較問題(Multiple Comparison Problem)——如果同時測試 20 個版本,即使所有版本效果相同,預期也會有 1 個版本在純隨機下達到 p < 0.05 的假顯著(1/20 = 5%)。解決方案是 Bonferroni 校正(把 α 除以測試數量,例如測試 5 個版本時,每個版本的顯著性閾值從 0.05 降到 0.01)或 False Discovery Rate(FDR)控制方法。
多層次測試(Hierarchical Testing):例如先測試「整體版面大改版」(粗粒度),確認方向有效後,再分別測試「標題措辭」「按鈕位置」「圖片風格」(細粒度)。這樣的分層設計能有效控制多重比較問題,同時兼顧效率。
Interleaving(交叉實驗):在推薦系統評估中,標準的 A/B 測試需要非常大的樣本量才能偵測到細微的排名效果差異(因為每次只評估一個完整的推薦結果)。Interleaving 的做法是把兩個模型的推薦結果交叉混合呈現給同一個用戶,根據用戶的點擊行為判斷哪個模型的推薦更受歡迎,這樣的設計大幅減少了所需樣本量,Netflix 和 Spotify 都廣泛使用這種方法進行推薦系統的快速迭代評估。
應用場景
| 場景 | 干預(B 版本) | 主要指標 | 注意事項 |
|---|---|---|---|
| 電商首頁改版 | 新的推薦算法 vs 舊算法 | 點擊率(CTR)、購買轉換率、每人平均訂單金額 | 排除季節性效應;新用戶和回訪用戶分層分析 |
| App 推播通知策略 | 個人化推播時間 vs 固定時間推播 | 推播開啟率、7 日留存率 | 避免「效果新鮮感(Novelty Effect)」,實驗期至少 2 週 |
| AI 客服機器人部署 | AI 先回應 vs 人工直接回應 | 問題解決率、用戶滿意度評分、首次聯絡解決率 | 需要同時監控「逃脫率」(用戶要求轉接人工的比例) |
| 信用評分模型更新 | 新模型 vs 舊模型 | 違約率、核准率、假陽性(誤拒好客戶)率 | 風控類實驗需要 6–12 個月才能觀察到違約結果 |
| UI 文字措辭測試 | 「立即購買」vs「加入購物車」按鈕文字 | 轉換率 | 效應量通常很小,需要數萬到數十萬的樣本量 |
| 廣告出價策略 | 自動出價 AI vs 人工出價 | ROAS(廣告支出回報率)、CPA(每次獲客成本) | 廣告系統的自我學習效應需要「暖機期(Learning Period)」 |
| 內容推薦算法 | 協同過濾 vs 內容相似度算法 | 播放完成率、每次工作階段的內容消費數量 | 考慮用 Interleaving 替代傳統 A/B 以提高效率 |
常見誤區
誤區 1:「p 值 < 0.05 就代表效果很大,可以直接推廣」
統計顯著性(p < 0.05)只告訴你「這個差異很可能不是純粹的隨機」,它完全不告訴你這個差異在業務上有多重要。一個有數百萬用戶的平台,即使是轉換率 0.01% 的微小差異,也可能達到 p < 0.001 的高度統計顯著性——但 0.01% 的提升,業務價值可能根本不值得為此進行產品改動的工程成本。反過來,一個在小規模測試中顯示 10% 提升但 p = 0.08 的改進,可能因為樣本量不足而未達顯著,但效應量(Effect Size)本身已很實質。解決之道是同時報告和關注效應量(Effect Size,如 Cohen’s d 或相對提升百分比)以及信賴區間(Confidence Interval)——後者告訴你「真實效果最可能落在什麼範圍」,是比單一 p 值更豐富的資訊。決策應基於「業務價值是否足以覆蓋風險和成本」,而不只是「是否 p < 0.05」。
誤區 2:「實驗開始後,看到 p < 0.05 就停下來,這樣效率最高」
這就是「提早停止(Peeking Problem)」,是 A/B 測試最危險的操作之一,也是很多企業 A/B 測試結果不可靠的主要原因。問題在於:如果你在實驗過程中不斷查看 p 值,並在 p 值偶然跌破 0.05 時就停止,你的實際型一錯誤率遠高於設定的 5%。模擬研究顯示,如果你計劃測試 1,000 個用戶,但每 100 人就看一次 p 值,並在 p < 0.05 時停止,即使兩個版本完全相同(H₀ 為真),這種「持續監控並提早停止」的策略會讓你在約 25%–50% 的情況下錯誤地聲稱「有顯著差異」,遠超過 5% 的 α。正確做法:在實驗設計階段確定樣本量,嚴格執行到達到預定樣本量後再做唯一一次統計檢定。若業務需求確實需要即時監控,應改用循序假設檢定(Sequential Testing)方法(如 O’Brien-Fleming 邊界),這類方法從設計之初就考慮了多次查看的問題。
誤區 3:「A/B 測試說 B 版本更好,就直接推廣給所有人」
A/B 測試的結論是「在測試期間、對測試用戶群體、B 版本比 A 版本好」,但這個結論不一定能安全地外推到所有情境。幾個重要的考量:新鮮感效應(Novelty Effect)——用戶對任何改變的初始反應往往比長期反應更誇張(正面或負面),如果實驗期只有一周,新按鈕設計的吸引力可能是短暫的,長期使用後效果回落。需要運行足夠長的時間(至少覆蓋用戶的完整使用週期)。辛普森悖論(Simpson’s Paradox)——整體 B 更好,但在某個特定的子族群(如行動裝置用戶、老年用戶)中 A 更好;如果這個子族群規模大且重要,盲目全面推廣 B 可能傷害這群用戶。正確做法:推廣前,對關鍵的用戶分群(裝置類型、地區、用戶活躍程度)做分層分析(Subgroup Analysis),確認沒有被總體效果掩蓋的子群體傷害。長尾效應——某些指標(如用戶滿意度)需要更長時間才能充分展現,短期測試的轉換率提升,不代表長期的用戶留存和口碑會同步改善。
小練習
練習 1:評估一個 A/B 測試方案
一家電商平台的產品經理提出以下 A/B 測試方案,請找出所有的設計問題並提出改進建議:
測試方案:
- 目標:驗證新的 AI 推薦算法是否提升購買轉換率
- 測試期間:2025 年 11 月 1 日–2025 年 11 月 30 日(整個 11 月)
- 分組方式:11 月 1 日–15 日所有用戶看 A 版本,11 月 16 日–30 日所有用戶看 B 版本
- 觀察指標:每日購買轉換率
- 判斷標準:若 11 月後半的平均轉換率高於前半,且差異超過 0.5 個百分點,視為 B 版本有效
- 計劃:若 11 月 20 日的累積數據顯示 B 版本轉換率比 A 高 1%,立刻停止測試並宣布 B 版本勝出
查看答案
這個測試方案有五個嚴重問題: **問題 1:未隨機化分組(最根本的設計錯誤)** 這不是 A/B 測試,而是前後對比(Before-After Comparison)。11 月 1–15 日和 11 月 16–30 日的用戶並非同一群人的隨機分配,而是「不同時間段」的不同用戶群。11 月是台灣的「雙 11」購物節,後半段(16–30 日)緊接著雙 11 後期的優惠延伸活動、補購行為的高峰,本來就和前半段的消費行為不同。任何觀測到的差異都可能是「時間段」本身的效應,而非 AI 推薦算法的效果。 正確做法:在同一時間段內,隨機將用戶分成兩組(如按用戶 ID 的奇偶數),同時讓一半人看 A、另一半看 B,消除時間因素的混淆。 **問題 2:11 月是一個非常糟糕的測試時間窗口** 雙 11(11/11)在前半段,這是電商全年最大的促銷節點,用戶在這一天的購買意願遠超平日,轉換率會出現明顯的異常高峰。這個特殊效應本來就會讓 A 版本(前半段)的平均轉換率被拉高,讓後半段的 B 版本看起來「更低」(即使 B 版本其實更好)。 正確做法:避開重大促銷節點進行 A/B 測試,選擇相對穩定的「普通」時間段;或使用分時段配對(每天隨機重新分配)來均勻化節日效應。 **問題 3:判斷標準不基於統計顯著性** 「差異超過 0.5 個百分點」是一個任意設定的閾值,沒有考慮到統計顯著性——即這個差異有多大機率是隨機波動?如果用戶數量只有幾千人,0.5 個百分點的差異很可能在統計上並不顯著(p > 0.05),不能用來支持業務決策。 正確做法:在測試前計算所需樣本量(根據基準轉換率、MDE、α=5%、效力=80%),以 p 值(或信賴區間)作為判斷標準,而非任意閾值。 **問題 4:計劃在 11 月 20 日提早停止——Peeking 問題** 「若 11 月 20 日看到 1% 差異就停止」是典型的提早停止(Peeking),會嚴重虛增型一錯誤率。在測試進行中反覆查看並根據中間結果決定是否停止,使得實際型一錯誤率可能達到 25% 以上(而非設定的 5%)。 正確做法:在實驗設計階段確定「何時停止」(達到預定樣本量),嚴格執行一次性統計檢定,不基於中間數據提早停止。 **問題 5:只看轉換率,沒有設定護欄指標(Guardrail Metrics)** AI 推薦算法可能確實提升了購買轉換率,但同時導致「推薦的商品退貨率更高」(因為過度推薦用戶不真正需要的商品)、「用戶長期留存率下降」(因為推薦結果令人失望)。只看短期轉換率而忽略這些護欄指標,可能做出長期傷害平台的決策。 正確做法:同時設定主要指標(轉換率)和護欄指標(退貨率、7 日留存率、客服投訴率),若護欄指標顯著惡化,即使主要指標改善,也不應全面推廣。練習 2:計算樣本量並分析結果
一個線上教育平台想測試新的 AI 個人化學習路徑是否能提升課程完課率。目前的基準完課率是 25%,平台認為如果新算法能帶來至少 5 個百分點的絕對提升(即完課率從 25% 提升到 30%),就值得工程成本投入。
使用以下簡化公式(雙比例 Z 檢定,α = 5%,效力 = 80%):
每組所需樣本量 ≈ (Z_α/2 + Z_β)² × [p₁(1-p₁) + p₂(1-p₂)] / (p₁-p₂)²
其中 Z_α/2 = 1.96(α=0.05,雙尾),Z_β = 0.84(效力 80%),p₁ = 0.25,p₂ = 0.30。
- 計算每組所需的樣本量(概略計算,取整數)。
- 平台日均新用戶 500 人,如果實驗組和控制組各佔 50%,這個 A/B 測試需要跑幾天?
- 實驗跑完後,假設實驗組完課率為 28%,控制組為 25%,p 值為 0.14。請解讀這個結果,並說明下一步行動建議。