數據科學的基礎:A/B測試

2019-11-06     AI公園

作者:Tony Yiu

編譯:ronghuaiyang

導讀

使用一個簡單的例子來解釋A/B測試的複雜細節(也就是假設檢驗)。

自從我開始寫博客,我發現寫一個概念,並試圖把它教給讀者會迫使我更深入地去學習這個概念。

因此,在接下來的幾周,我將逐一介紹每個數據科學家應該具備的核心能力,以便我們都能在面試中取得好成績(祝好運)!現在進入今天的話題!

偽裝的假設檢驗

如果你有統計學背景,在某個時候你可能會想,「A/B測試和假設檢驗是一回事嗎?」沒錯,就是一回事!因此,讓我們通過一個簡單的例子來探究假設檢驗是如何工作的,從而得出A/B測試。

假設我們的客戶,裝了一個非常成功的個人理財應用程式,帶著以下問題來找我們:

「Tony,我們重新設計的應用程式目的在幫助人們存下更多省下來的錢。但它真的有用嗎?請幫助我們解決這個問題,這樣我們才能決定是否部署它。」

所以我們的工作是弄清楚人們是否會因為新的應用程式而存更多的錢。首先,我們需要弄清楚我們是否擁有所需的數據。我們問,「您收集了哪些可能有用的數據?」

原來我們的客戶已經做了一個實驗,收集了一些數據:

  • 6個月前,我們的客戶隨機選擇1000名新註冊用戶,將其中500名分配給對照組,500名分配給實驗組。
  • 對照組繼續使用當前的應用程式。
  • 同時,實驗組使用重新設計的app。
  • 所有用戶開始時的儲蓄率為0%。
  • 1000名用戶只占該應用總用戶的一小部分。

6個月後,我們的客戶記錄了實驗中所有1000名用戶的儲蓄率。儲蓄率是指每個用戶每月儲蓄的工資的百分比。她發現了以下內容:

對照組的平均儲蓄率由0%提高到12%,標準差為5%

實驗組的平均儲蓄率由0%提高到13%,標準差為5%

我們的實驗結果在直方圖上看起來是這樣的:

對照組和實驗組的儲蓄率直方圖

與對照組相比,實驗組的成員在六個月後的儲蓄率確實有所提高。那麼,僅僅繪製這個柱狀圖,把它展示給我們的客戶,然後結束就足夠了嗎?

不,因為我們仍然不能確定我們所觀察到的儲蓄增長是真實的。幸運的是,我們本可以用這樣一種方式為我們的實驗抽樣用戶,即那些希望節省更多錢的人最終都進入了實驗組。為此,我們需要提出以下問題:

我們從隨機事件中觀察到的結果得到的可能性有多大

回答這個問題是假設檢驗(以及A/B檢驗)的關鍵。

零假設

想像一下,在現實中,新的應用程式設計並沒有幫助用戶節省更多。然而,即使新設計是一個無用的,仍然有可能在我們進行實驗時觀察到儲蓄率的增加。

怎麼會這樣呢?這是因為我們在抽樣。例如,如果我從成千上萬的人群中隨機選出100個人,計算他們的平均身高,我可能得到5英尺8英寸。如果我再做幾次,下次可能得到5英尺10英寸,之後可能得到5英尺7英寸。

因為我們是用樣本而不是整體來計算統計量的,所以我們計算的每個樣本均值都是不同的。

知道抽樣會導致變化,我們可以把上面的問題重新組織成:

如果新的應用程式設計真的對人們的儲蓄沒有影響,那麼觀察到儲蓄像隨機增加一樣大的機率是多少

正式地說,我們的零假設是:對照組儲蓄率的增加等於實驗組儲蓄率的增加

我們現在的工作是檢驗零假設。我們可以用機率思維實驗來做。

一次又一次的進行模擬實驗

想像一下,我們可以輕鬆地、即時地一次又一次地進行我們的實驗。此外,我們仍然處於一個並行的世界,在那裡,新的應用程式設計是一個無用的,對用戶的省錢沒有任何影響。我們會觀察到什麼?

對於好奇的人來說,我們是這樣模擬的:

  • 取與對照組統計特徵相同(均值= 12%,標準差= 5%)的兩個正態分布隨機變量各抽取500個人(我們的對照組中有500名用戶,實驗組中有另外500名用戶)。這些將是我們的對照組和實驗組(同樣的意思,因為我們在這個世界上,我們的新設計沒有任何影響)。在這裡使用泊松分布隨機變量在技術上更正確,但為了簡單起見,我們使用正態分布隨機變量。
  • 記錄各組間的平均儲蓄差異(即我們用實驗組的平均儲蓄減去對照組的平均儲蓄)。
  • 這樣做一萬次。
  • 繪製各組間平均節約量差異的柱狀圖。

當我們這樣做時,我們得到下面的直方圖。柱狀圖顯示了由於隨機性(由抽樣驅動),組間的平均儲蓄率差異有多大。

紅色的豎線顯示了我們在客戶進行實驗時實際觀察到的平均儲蓄率差異(1%)。直方圖紅線右邊的百分比是我們想要的——隨機抽取時省下來的錢增加1%的機率(我們這裡做了一個單次實驗,因為它是更容易理解和想像)。

顯示10,000次模擬中組間平均值差異的直方圖(假設新設計對儲蓄率沒有影響)

在這種情況下,這個值非常低——在我們運行的10,000個實驗中只有9個(假設新設計對節省沒有影響)。

這意味著由於隨機性,觀測到的值和我們所觀測到的值一樣高,只有0.09%的變化。

0.09%的機會就是p值。

我們的目標,一如既往,是建立一個直觀的理解。這些工具如何工作,為什麼工作。因此,一般來說,我們將避免術語,而喜歡簡單的解釋。然而,p值是一個關鍵的概念,你會在數據科學世界中遇到很多,所以我們必須面對它。p值(我們在上面的模擬中計算的0.09%的值)表示:

如果零假設成立,我們觀察到的機率。

因此,p值是我們用來檢驗零假設是否成立的數字。根據它的定義,看起來我們想要一個儘可能低的p值。p值越低,我們在實驗中幸運的可能性就越小。在實踐中,我們將設置一個p值截止值(稱為alpha),低於這個值,我們將拒絕原假設,並得出觀察到的效果/影響最有可能是真實的(統計上顯著的)。

現在我們來研究一個統計特性,它可以讓我們快速計算p值。

中心極限定理

現在我們來談談統計的基礎概念之一:中心極限定理。該定理指出,如果你把獨立的隨機變量加起來,其和的歸一化趨於正態分布。即使隨機變量本身不是正態分布,中心極限定理也成立。

翻譯一下:如果我們計算一系列的樣本均值(假設我們的觀測值是相互獨立的,就像拋硬幣是相互獨立的一樣),所有這些樣本均值的分布就是正態分布

看一下我們之前計算的平均值差異的直方圖。看起來像正態分布,對吧?我們可以使用Q-Q plot來做可視化,如果我們的分布是正態的,它會緊緊地粘在紅色的45度線上。確實如此,酷斃了!

所以當我們一遍又一遍地做儲蓄實驗時,這就是中心極限定理的一個例子!

那麼為什麼這很重要呢?

還記得我們之前是如何通過10000次實驗來檢驗零假設的嗎。聽起來是不是很累?實際上,重複進行實驗既累人又昂貴。但由於中心極限定理,我們不需要這麼做!

我們知道重複實驗的分布是什麼樣子的—正態分布,我們可以用這個知識來統計推斷10000個實驗的分布,而不需要實際去做這麼多實驗!

我們複習一下我們目前所知道的:

  • 我們觀察到對照組和實驗組的平均儲蓄率有1%的差異。我們想知道這是一個真實的差別還是僅僅是統計上的噪音。
  • 我們知道我們需要對實驗結果持保留態度,因為我們只對客戶的總用戶基數中的一小部分進行了測試。如果我們在一個新的樣本上再做一次,結果就會改變。
  • 由於我們擔心在現實中新的app設計不會對儲蓄產生影響,我們的零假設是,對照組和實驗組的均值差為零。
  • 我們從中心極限定理得知,如果我們重複採樣並進行新的實驗,這些實驗的結果(觀察到的對照組和實驗組之間的平均差值)將呈正態分布。
  • 從統計學上我們知道,當我們取兩個獨立隨機變量之差時,結果的方差等於各個方差之和:

完成工作

好了!現在我們有了運行假設檢驗所需的一切。所以讓我們繼續完成我們從客戶那裡收到的工作:

和上面一樣的直方圖(再貼一次):

  • 首先,在我們通過查看數據產生偏見之前,我們需要選擇一個截斷值,稱為alpha(如果我們計算的p值小於alpha,我們拒絕零假設,並得出新設計增加了儲蓄率的結論)。alpha值對應於出現假陽性的機率—當零假設為真時,拒絕零假設。0.05在統計學中是相當標準的,所以我們將採用它。
  • 接下來,我們需要計算測試統計量。檢驗統計量是上面直方圖的數值等效物,它告訴我們與零假設值(在我們的例子中是零)有多少個標準差的距離,觀察值是1%。我們可以這樣計算:
  • Standard Error是實驗組的平均儲蓄率與對照組的平均儲蓄率之差的標準差。在上圖中,標準差用藍色直方圖的寬度表示。回想一下,兩個隨機變量之差的方差等於個體方差之和(標準差是方差的平方根)。我們可以很容易使用我們已經擁有的信息計算標準差:

  • 記住,對照組和實驗組的儲蓄率都有5%的標準差。樣本方差是0.0025,N是每組的觀察次數N等於500。把這些數字代入公式,我們得到的標準誤差是0.316%。
  • 在檢驗統計公式中,觀測值為1%,假設值為0%(因為我們的零假設是沒有影響)。將這些值和我們剛剛計算的標準誤差代入測試統計公式,我們得到測試統計量為0.01/0.00316 = 3.16。
  • 我們的觀測值為1%,與假設值0%相差3.16個標準差。挺多的。我們可以使用下面的Python代碼來計算p值(用於雙尾測試)。p值是0.0016。注意,我們將p值用在雙尾測試中,因為我們不能假設新設計相比當前的設計一樣或者更好—也可能更糟。
  • p值0.0016低於我們0.05的alpha值,所以我們拒絕零假設,並告訴我們的客戶,是的,新的應用程式設計確實幫助她的用戶節省了更多的錢。

最後,請注意,我們分析計算的0.0016的p值與我們之前模擬的0.0009不同。這是因為我們運行的模擬是單側的(單側測試更容易理解和可視化)。我們可以通過將模擬的p值乘以2(為了解釋第二個尾部)來調和這些值,得到0.0018—非常接近0.0016。

結論

在現實世界中,A/B測試不會像我們虛構的例子那樣一目了然。很可能我們的客戶(或老闆)沒有現成的數據供我們使用,我們必須自己收集和清理數據。以下是一些準備A/B考試時需要注意的額外實用問題:

  • 你需要多少數據?收集數據既費時又昂貴。一個運行糟糕的實驗甚至可能會疏遠用戶。但是如果你沒有收集足夠的觀察值,你的測試就不是很可靠。因此,你需要仔細權衡更多觀察的好處和收集它們的增量成本。
  • 錯誤拒絕真實零假設(第1類錯誤)的代價與錯誤拒絕虛假零假設(第2類錯誤)的代價是什麼?回到我們的例子,第1類錯誤相當於在新應用程式設計實際上對節省沒有影響的情況下對其進行綠燈亮起。第二類錯誤與堅持當前的設計是一樣的,而新的設計實際上鼓勵人們節省更多的錢。我們通過選擇一個合理的截斷值alpha來權衡類型1和類型2錯誤的風險。較高的alpha值會增加第1類錯誤的風險,較低的alpha值會增加第2類錯誤的風險。

英文原文:https://towardsdatascience.com/data-science-fundamentals-a-b-testing-cb371ceecc27

請長按或掃描二維碼關注本公眾號

文章來源: https://twgreatdaily.com/TmSlQm4BMH2_cNUg8pku.html