編者按:本文為國內 A/B 測試云服務商 “吆喝科技” 的投稿。文章來源于吆喝科技創始人、CEO 王曄在 “大數據江湖” 的演講分享。
大數據時代,擁有數據就是擁有了寶貴的財富。現在獲得數據已經變得越來越容易。但是數據的價值怎么才能最大的挖掘出來呢?僅僅擁有數據是遠遠不夠的,要使用數據來發揮價值。僅僅讓機器來使用數據還是遠遠不夠的,更最重要的在于企業里的 “人” 可以正確高效的使用數據。這就需要企業具備數據驅動的理念。
那么什么是數據驅動的理念?怎么定義數據驅動?有很多人從不同角度給出了不同的解釋和闡述。我最喜歡的是 DataStax 公司 CEO Bosworth 的一句話:
“從現在開始的 10年 內,當我們回顧大數據時代是如何發展時,我們會震驚于以往做出決策時信息的匱乏。”
數據驅動的理念在于企業應該充分的用數據方法來優化自己的產品,運營,決策,乃至戰略。
具體來說,數據的使用方法可以分為后驗和先驗兩類。
后驗就是指對過往采集到的數據進行挖掘分析,從中發現和歸納新的知識,透過現象看本質。1682年 有位天文學家發現了一顆有著巨大拖尾的星體快速劃過夜空。他對比過往天文數據,發現 1531年 和 1607年 也有類似的觀測記載。他判斷這些觀測看到的是同一顆彗星,并且預言 76年 以后這顆星還會光顧地球。這就是著名的哈雷彗星,一個靠后驗數據挖掘發現的重要天體。
后驗數據對企業決策很有用,而我個人覺得先驗數據對企業決策可能更有用。什么是先驗數據?
在一個決策完全實施以前就能得出它實施后的效果數據,這就是先驗數據。在傳統中國文化里,我們往往更善于后驗數據,通過總結和歸納得出重要的結論。而現代西方文化更講究 “科學”,找到了先驗數據的獲取方法,那就是做 “試驗”。設定一個合理的小型的試驗環境,然后將決策想法在這個環境中實施,得出數據化的結論,最終通過數學方法預測出這個決策想法在真實環境中的表現,這就是先驗的方法。
一個非常經典的試驗方法就是我們今天要展開討論的 A/B 測試。A/B 測試是指在所有條件都相等的條件下,只改變一個條件,從 A 改成 B,然后對比兩者產生的效果的不同。注意這是一個非常重要的定義,決定了 A/B 測試的科學性。我們來看看 A/B 測試與后驗方法的不同:假如我們做了一個新決策,比如改了產品的某個設計,試賣它一天,然后第二天再拿出老設計試賣一天。這樣對比新老設計就很可能 “不” 是 A/B 測試。新設計銷售好,并不一定是因為新設計好,可能是因為時間不同,新設計試賣那一天正好趕上周邊動物園活動帶來了很多游客。
正是考慮到后驗方法的局限性,西醫(現代醫學科學)首先引入了 A/B 測試的方法來驗證新藥的療效。新藥的驗證可能是這樣一個流程:100 位患者,被測試醫生悄悄劃分為 AB 兩組,注意患者自己并不知道自己被分組,注意 AB 兩組患者的健康情況應該是接近一致的;A 組患者將會得到試驗新藥,B 組患者將會得到長的和新藥幾乎一模一樣的安慰劑;如果最終 A 組患者比 B 組的療效更好,才能證明新藥的藥效。
那么對應到技術產品里,A/B 測試的方法就是將產品的用戶流量分割成 A/B 兩組,一組試驗組,一組對照組,兩組用戶特點類似,并且同時運行。試驗運行一段時間后分別統計兩組用戶的表現,再將數據結果進行對比,就可以科學的幫助決策。比如在這個例子里,50%用戶看到 A 版本頁面,50%用戶看到 B 版本頁面,結果 A 版本用戶轉化率 23%,高于 B 版本的 11%,在試驗流量足夠大的情況下,我們就可以判定 A 版本勝出,然后將 A 版本頁面推送給所有的用戶。
有了 A/B 測試,產品的優化過程就可以看作兩個階段。
第一個階段是后驗的,通過統計分析目前的用戶行為和系統指標來判斷產品的哪些地方可以做改進,比如是注冊頁面流失率太高需要優化?還是購物車報廢率太高需要改進?
第二個階段就是試驗階段,嘗試改進這些產品的薄弱環節。比如是不是可以在注冊流程里增加一個送優惠券環節?是不是可以精簡一下購物車付款的流程?要不要改寫文案?要不要替換圖片?等等。這就需要對可能的決策進行 A/B 測試評估,只有那些被試驗數據證明了真正有改進效果的那些決策才會被真正實施。那些不成功的改進是不會上線的。比如剛才那個案例里面,B 版本的轉化率還不如 A 版本,那我們就不該把 B 版本推給所有的用戶。
對國際頂級互聯網公司來說,幾乎所有的產品改動都是要經過嚴格的 A/B 測試考驗之后才能上線。我們來看看他們得到的效果:
這是微軟的 bing 搜索引擎通過反復 A/B 測試之后的改版結果,左邊是老版,右邊是新版。僅僅從肉眼看來,幾乎看不出區別。實際上就是在顏色上做了一些微調,結果右邊版本比左邊版本提升了 10,000,000 美元的年化營收。
這是亞馬遜購物網站推出的一個信用卡推銷策略。最早這個推銷信用卡的廣告出現在用戶選擇購物商品的頁面,結果幾乎無人問津,還浪費了好幾個寶貴的商品展示位置;后來運營人員想出了一個策略,說把這個推銷放在用戶購物車結算的時候,結果 A/B 測試顯示這個改動大幅度提高了信用卡申請率,給亞馬遜帶來了上億美元的營收增長。
說到亞馬遜,有誰能想起來它的 “加入購物車” 按鈕是什么樣式么?它是黃色底色,黑色邊框,綠色字體……從設計美學來看,是很怪異很難看的。但是反復 A/B 測試會發現這個樣式卻是用戶購買轉化率最高的一個設計。數據驅動的優化,結果就是決策要聽數據的,而不是聽藝術家或者老板的。
這是一個互聯網教育網站,在這個主要的學生注冊頁面,通過反復 A/B 測試試驗,發現一個很好的頁面排版,可以提升學生注冊率 40%以上。這個排版和常用的課程分類不同,將課程按照上課熱門程度排序,可能刺激了很多潛在學生的競爭心理。“我不知道該上什么課,但是大家都學的課我不能不學”。用戶可能是這么想的。當然,這是馬后炮。還是 A/B 測試能告訴我們到底什么排版更好。
這個電商網站賣防水耳機,原來排版是 Call-To-Action 按鈕在左文案在右,后來調換了位置,A/B 測試發現這個簡單的改動可以提升銷量 35%以上。
現實中,通過 A/B 測試可以發現很多產品上的改動或者運營上的策略其實并不產生效果, 有些甚至會有負效果。比如很多改版并不會帶來轉化率的提升,比如手機 App 里的漢堡菜單經常會帶來用戶活躍度下降,比如有一些電商網站在增加了商品分類功能之后用戶下單率會下跌。
對大多數成熟的互聯網產品來說,只有少數的改動策略才會帶來提升,所以國際互聯網企業都會跑大量的 A/B 測試試驗,從各種各樣的嘗試中找到少數有提升效果的試驗,將這些策略全面實施,不斷優化產品。A/B 測試先驗數據方法,有時候并不是在選擇更優的策略,而是在排除掉不好的策略。只有通過 A/B 測試驗證好的改動才會上線,這就保證了產品總是在不斷優化和提升,而不會出現上下波動的情況耽誤進展。
這張示意圖很好的展示了使用 A/B 測試優化產品之后的產品迭代效果,每一次新版本的發布都首先經歷過小流量的 A/B 測試驗證,所以可以保證確定性的提升。每一版更新都比老版要更好一些,日積月累就會大幅度超過 “裸奔” 的競爭對手。
說到這里,就得提一下專業第三方 A/B 測試云服務的作用。A/B 測試的原理聽上去很簡單,但是實踐中會遇到很多問題:
首先是試驗流量分割的科學性和試驗結果的準確性。舉個不恰當的例子,Google 做了一個社交網站 Google+,用自己的員工測試了一下,發現用戶活躍度很高。結果發布這個網站給全球用戶,結果完全不同。所以如果試驗流量采樣不科學,就可能帶來試驗結論的巨大偏差,導致 A/B 測試白費功夫。專業 A/B 測試云服務可以通過對用戶進行機器學習分類,再做動態采樣來保證試驗流量的代表性(representative sampling)。
(大家可以留意一下第二張圖)
其次是試驗結果的敏感性問題。因為試驗結果是統計學意義上的結果,比如以 95%置信區間的形式展示出來,如果不確性太強,那么對我們也沒有多少用處。例如我們吆喝科技自己的官網,在早期做 A/B 測試試驗的時候,就因為試驗流量太少而得不出什么結論。舉個例子,我們嘗試把 “申請注冊” 這個表單更換了一個樣式,得出試驗結果是申請注冊率 “平均” 提高了 4 倍!但是置信區間太寬,從-200%到 +1000%,到底是提升了還是降低了很難判斷,顯然不是一個很有用的結論。
這個反例是因為當時我們的訪客數量太少,試驗中只有 500 左右,而且隨機性太強,只有 1%的用戶會申請,所以置信區間很寬。隨著試驗運行時間加長以及試驗流量增大,置信區間可以逐漸收斂。專業 A/B 測試系統可以利用統計學算法對小采樣進行更細致的模型分析,加速置信區間的收斂。
最后要談到的是 A/B 測試的效率問題。很多朋友嘗試 “手工” 做 A/B 測試,先由技術人員寫點代碼來做分流,收集一段時間數據再寫點代碼來把數據分開統計,最后發現老頁面點擊 100 下,新頁面點擊 98 下,然后過幾天數據又變化了。這個體驗就是 “驗證 1 個小小的想法,花了幾天,最后還是不知道是提高了,是降低了,還是沒有變”,覺得 A/B 測試沒有實用價值。
專業的 A/B 測試云服務就是給大家提供各種各樣方便的 API,圖形界面,編輯工具,分析工具,可以大幅度提高 A/B 測試的效率。有了強大的工具,一個人一個星期就可以做大量試驗,其中哪怕只有少數是成功的(大部分試驗無效,小部分試驗失敗),一個星期提升 20%,一個多月就可以超過競爭對手 1 倍了。
這張圖展示了 Google 從 07年 以來 A/B 測試試驗數量的增長情況。 Google 是從 2004年 到 2007年 構建了自己的強大的 A/B 測試引擎的,在這之后,Google 的優化效率和對應的優化努力都直線上升,現在每個月都會跑幾百個 A/B 測試試驗。我以前在 Google 負責搜索廣告優化的時候,天天都會做 A/B 測試,也會不斷改進 Google 自己的 A/B 測試系統,來提高效率。有這樣一個強大的工具,Google 完全不擔心競爭對手的逆襲。
Facebook 是移動互聯網時代的王者,Facebook App 在每次 AppStore 上線的時候都會將未來 6 個月想要做的試驗都集成進代碼里。然后不斷的放小流量進行 A/B 測試,將好的改動發布,將不好的改動下線。這不僅為 Facebook 帶來了用戶活躍的提升而且使 Facebook 得到了 “沒有 bug” 的口碑!這個口碑往往被人忽視,實際上是非常厲害的。
Airbnb 和 Uber 作為新一代線上線下結合的互聯網產品,更是從第一天就開始做 A/B 測試,不僅在自己的體系里做,還用第三方工具做,保證所有的決策,從產品,到運營,乃至到戰略,都是經過數據驅動的優化決策。每一個改動,都先用 1%的流量來試驗,然后再推到 5%,再到 10%,到 20%,到 50%,最后再發布給所有用戶。
現在大家把這樣的一種數據驅動的工作叫做 “增長黑客”(growth hacking),而增長黑客的武器就和黑客一樣,是強大的技術工具與精密的數據分析。A/B 測試是其中必不可少的一環,而且被很多黑客稱為增長黑客必殺技。
Ronny 是微軟公司的科學家,一手主導了微軟多個產品線的線上 A/B 測試系統的搭建與使用。發表過很多著名的關于 A/B 測試的學術論文,可以說是這個領域的頂級專家。7 條經驗如下:
效果驚人:某些微小的改動可能造成對 KPI 的巨大影響
耐心測試:但是大多數改動都不會大幅度提高 KPI。這里說一個很有意思的 Twyman 法則:凡是看上去很出人意料的圖表,通常都是因為數據統計錯了
你很不同:各個產品幾乎完全不同,所以復制他人經驗往往得不到什么效果
速度是關鍵:任何能加速用戶響應時間的改動都會給 KPI 帶來提升
關注產品質量本身:點擊率容易提高,流失率很難改進,勿將精力都放在提高某個頁面的點擊率上
快速輕量迭代:盡量不要做復雜的大量改動的大試驗,盡量做很多很多個簡單改動的小試驗
用戶數量是基礎:幾千上萬用戶才容易展開高效的 AB 測試
這幾條經驗和我個人以及我們公司的實踐經驗完全吻合,希望以后能幫到大家的實踐。“最好的 PM 也只能跑贏一半的 A/B 測試”,歡迎大家在未來的工作中充分使用 A/B 測試這樣強大的工具來實現數據驅動的優化增長。
最后,附上幾個 QA 問答:
1、測試所需的數據從何而來?
試驗數據是統計得來,如果用第三方工具,往往是接入 SDK 然后通過 SDK 匯報到云端的。注意 A/B 測試是真實用戶無感知測試,是用的真實流量。
2、A/B 測試的對象如何選取?
好問題。一般來說是根據你的新策略是針對什么用戶的就對這些用戶進行 “定向” 的 A/B 測試。比如按鈕顏色的選擇,是針對所有用戶的,那就對所有用戶進行采樣,從所有用戶里選 1%來測試。比如推薦算法的選擇,可能是針對老用戶的,那就只在老用戶里采樣 10%來測試。
3、一般來說,網站 UV 或者用戶數達到多少時,就應該嘗試 A/B 測試,也比較容易看到效果了呢?
一般 UV 有上千就可以試試看了:)
4、感覺 A/B 測試是比較適用于 POC 或決策分析,能用于外部攻擊的結果分析嗎?
這個問題很高端,我個人對安全領域很無知,所以不夠資格回答這個問題。A/B 測試的核心在于無感知的分流,對不同流量群的控制,以及對比分析,不知道這個對外部攻擊的分析有沒有用。
5、測試肯定是有針對性的,A/B 測試一般應用于那些場景?互聯網產品推崇快速失敗快速迭代,和 A/B 測試有無想關注。
主要應用場景包括灰度發布,新舊版本對比,保證無 bug 和無事故;嘗試新決策,比如推送優惠券,或者界面改版,或者算法參數變化,看看哪個改動更好;研究用戶行為,比如通過設計好的 A/B 測試來分析用戶的喜好。沒錯,互聯網產品講究快速迭代,增長黑客,A/B 測試是其中的必殺技:)
6、如果 A/B 測試決策后一定時間后進行后驗,會出現結果有差異么?如果有怎么做
好問題。有的時候會有這樣的情況,一個新試驗效果很好,時間長了發現不行了。這被 Google 稱為 “User Blindness” 用戶盲性。目前的經驗是,大部分試驗都沒有盲性,但是有些是有的。這個仍然是個研究課題……后驗發現問題,就只能總結經驗,再尋其他方法,沒有什么捷徑。
7、如何保證 A/B test 只受目標因素影響,不受其他因素的干擾。
這個就是要做到試驗流量采樣的科學性。A/B 測試的核心思想就是 “所有條件都相等,只有一個條件從 A 改成 B,會發生什么”。我們的做法就是在隨機采樣的算法里盡量讓采樣出來的 1%用戶的行為的統計分布和 100%用戶的分布保持一致。當然,還有一些其他可能干擾的因素需要我們人來應對。一個經驗就是把重要的試驗跑 7 天,至少覆蓋 “周中” 和 “周末” 兩個不同時間段,因為用戶行為在這兩個時間段不一樣。
8、是否有專門團隊負責實驗設計?多個實驗并行如何評估實驗結果?
像 Facebook, Airbnb, Uber 都是會有專門的 growth hacker 去設計試驗,當然優秀的 PM 和運營人員都可以勝任。
9、實際運營中可能需要或者說想要改進的東西有很多,那么在 A/B 測試前是不是有進行其他分析,以便于取舍先做哪個后做哪個測試
好問題。一般來說先期的數據分析很重要,先判斷系統什么地方最需要改進,從那里先入手。通常來說,關鍵轉化率相關都是最值得做大量 A/B 測試的,比如注冊流程,購買流程,付費流程,等等。
10、結果數據從 A 到 B 效果驚人,改變一個條件就可能導致從 A 到 B,這個條件如何選取,是否有理論依據,感覺容易導致漫無目的的亂測呢?
很多時候是 growth hacker,產品經理,技術大牛的經驗遠比理論更重要
11、怎么衡量 AB 測試是否真的有效?一般會用什么統計方式進行檢驗?
一般是在試驗結束,發布了 “成功” 的新版之后,通過后驗數據來做基礎的判斷。另一方面,也可以通過反向 A/B 測試做驗證,比如發布新版本給 98%的用戶,留下 2%用戶用老版,看看對比數據有沒有問題。