從0到1建設智慧灰度資料體系:以vivo遊戲中心為例
作者:
vivo 網際網路資料分析團隊-Dong Chenwei
vivo 網際網路大資料團隊-Qin Cancan、Zeng Kun
本文介紹了vivo遊戲中心在灰度資料分析體系上的實踐經驗,從“實驗思想-數學方法-資料模型-產品方案”四個層面提供了一套較為完整的智慧灰度資料解決方案,以保障版本評估的科學性、專案進度以及灰度驗證環節的快速閉環。該方案的亮點在於,指標異動根因分析方法的引入和全流程自動化產品方案的設計。
一、引言
遊戲業務的使用者規模體量大,業務鏈路長,資料邏輯繁雜。遊戲中心作為遊戲業務平臺端的核心使用者產品,版本迭代非常頻繁,每次版本上線前都必須進行小量級的灰度驗證。2021年以來,平均每1~2周都會有重要版本開始灰度,而且線上有時會同時有多個版本在灰度測試。
灰度的整個過程在資料層面主要涉及3個問題:
-
如何確保版本灰度評估的科學性?
-
如何提升灰度資料的產出效率,保障專案進度?
- 當灰度版本出現指標異常問題時,如何快速定位問題完成閉環?
近兩年來,我們逐步將灰度評估方法體系化地落地到敏捷BI等資料產品上,目前灰度資料體系已經較好地解決了這3個問題。本文首先以版本灰度資料體系的基本概念和發展歷程為鋪墊,接著以“ 方法論+解決方案”為主線闡述遊戲中心在灰度資料體系上的實踐,並展望未來。
二、灰度資料體系的發展
2.1 什麼是灰度發版
當遊戲中心開發了全新的首頁介面,應該如何驗證新的首頁是否被使用者所接受,並且功能是否完善、效能是否穩定?
答:灰度發版。就是在新版本推送給全量使用者使用之前,按照一定策略選取部分使用者,讓他們先行體驗新版首頁,以獲得他們關於“新的首頁好用或不好用”以及“如果不好用,是哪裡出了問題”的使用反饋。如果出現重大問題,則及時回滾舊版本;反之則根據反饋結果進行查漏補缺,並適時繼續放大新版本投放範圍直至全量升級。
2.2 灰度評估方案發展階段
判斷灰度發版是否科學的關鍵在於控制變數,這一問題的解決過程,也是灰度評估方案迭代和發展的過程。
階段一:確保了對比的時間相同,但升級速度差異意味著優先升級的使用者和未升級的使用者非同質使用者,未能規避樣本差異對資料結果差異的影響。
階段二:確保了對比的人群相同,但使用者行為可能隨時間而變化,無法剔除前後時間因素的差異。
階段三:同時確保了時間和人群相同,有以下三方面優勢:
- 將舊版本打包為對比包,與新版本的灰度包一起,分別對兩批同質使用者釋出,保證了灰度包和對比包的樣本屬性、時間因素一致;
- 依據產品目標計算合理的樣本量,避免樣本過少導致結果不可信、過多導致資源浪費;
- 依託靜默安裝功能快速升級,縮短灰度驗證階段的時間。
2.3 灰度資料體系內容
灰度資料體系通常涉及 前期流量策略和 後期資料檢驗2個部分。
前者包括樣本量計算和灰度時長控制,後者包括新老版本核心指標對比、產品最佳化處的指標變化或新增功能的資料表現。在常規的灰度評估之外,引入根因分析的方法可以提升灰度結果的解釋性。
2.4 vivo遊戲中心的做法
我們搭建了“ 遊戲中心智慧灰度資料體系”,並透過三版迭代逐步解決了本文開頭提到的3個問題。資料體系由指標檢驗結果、維度下鑽解讀、使用者屬性校驗、指標異常診斷等主題看板以及自動化推送的灰度結論報告組成。
完整方案部署上線後,基本實現了灰度評估階段的自動化資料生產、效果檢驗、資料解讀和決策建議的閉環,極大地釋放了人力。
三、灰度資料體系中的方法論
在介紹資料方案設計前,先介紹一下灰度資料體系中涉及的背景知識和方法論,幫助大家更好地理解本文。
3.1 灰度實驗
灰度實驗包括 抽樣和效果檢驗兩個部分,對應的是假設檢驗的思想以及樣本歷史差異性驗證。
3.1.1 假設檢驗
假設檢驗是先對總體引數提出一個假設值,然後利用樣本表現判斷這一假設是否成立。
3.1.2 樣本歷史差異性驗證
雖然灰度前事先已透過hash演算法進行抽樣,但由於抽樣的隨機性,一般會在統計檢驗和效果檢驗的同時,對樣本的歷史差異性進行驗證,剔除樣本本身差異帶來的指標波動。灰度週期通常為7天,我們採用了7天滑動視窗取樣的方法。
3.2 根因分析
灰度指標往往與多維屬性(如使用者屬性、渠道來源、頁面模組等)存在關聯,當指標的檢驗結果發生異常的顯著差異時,想要解除異常,定位出其根因所在是關鍵一步。然而,這一步常常是充滿挑戰的,尤其當根因是多個維度屬性值的組合時。
為了解決這一問題,我們引入了根因分析的方法, 以彌補了灰度檢驗結果解釋性不足的問題。我們結合了指標邏輯分析法和Adtributor演算法2種方法,以確保分析結果的可靠性。
3.2.1 指標邏輯分析法
由於灰度實驗中構建的指標體系基本都是率值類指標或均值類指標,這兩類指標都可以透過指標公式拆解為分子和分母兩個因子,而指標的分子和分母均是由各個維度下的維度值相加得到。因此提出了 指標邏輯分析法,基於一定的拆解方法,從指標因子和指標維度2個層次對指標值進行邏輯拆解。
3.2.2 Adtributor演算法
除了根因分析比較常見的維度下鑽方法以外,我們引入了Adtributor演算法,以更好地應對多維度組合影響指標的情況,並透過兩種方法的交叉驗證來確保分析結果的可靠性。
Adtributor演算法是微軟研究院於2014年提出的一種多維時間序列異常根因分析方法,在多維度複雜根因的場景下具有良好的可靠性。演算法完整過程包括資料預處理、異常檢測、根因分析和模擬視覺化4個步驟,我們主要借鑑了根因分析環節的方法。
四、灰度智慧解決方案
4.1 整體框架
版本灰度可以分為灰度前-灰度中-灰度後3個階段,產品化整體框架如下:
4.2 流程設計
基於以上框架,我們是如何設計實現的?
以下是描述整個過程的流程圖:
4.3 方案核心內容
4.3.1 樣本量預估方案
看板提供:在多套置信水平跟檢驗效能標準下(預設顯示95%置信度、80%檢驗效能),根據指標最近表現,預估出指標在不同預期變化幅度下能被檢測出顯著與否的最低樣本量。
該方案具有3大特點:
- 輸出多套標準,靈活調整預期幅度;
- 自動選取最近一個全量版本的資料作為資料輸入;
- 均值類指標和率值類指標採用差異化的計算邏輯。
4.3.2 效果指標顯著性檢驗方案
指標顯著性檢驗模型需要回答的問題是:灰度版本相較對比版本,指標變化在統計意義上是置信的還是不置信的。
目前,實現了三種置信水平下灰度版本與對比版本在20個業務指標上的顯著性判斷。
實現過程如下:
率值類指標
... ... # 已得以下指標資料 variation_visitors # 灰度版本指標分母 control_visitors # 對比版本指標分母 variation_p # 灰度版本指標值 control_p # 對比版本指標值 z # 不同置信水平(90%/95%/99%)下的z值,業務上主要關注95%置信水平下的顯著檢驗結果 # 計算指標標準差 variation_se = math.sqrt(variation_p * (1 - variation_p)) control_se = math.sqrt(control_p * (1 - control_p)) # 計算指標變化值和變化率 gap = variation_p - control_p rate = variation_p / control_p - 1 # 計算置信區間 gap_interval_sdown = gap - z * math.sqrt(math.pow(control_se, 2) / control_visitors + math.pow(variation_se, 2) / variation_visitors) # 變化值置信區間下界 gap_interval_sup = gap + z * math.sqrt(math.pow(control_se, 2) / control_visitors + math.pow(variation_se, 2) / variation_visitors) # 變化值置信區間上界 confidence_interval_sdown = gap_interval_sdown / control_p # 變化率置信區間下界 confidence_interval_sup = gap_interval_sup / control_p # 變化值置信區間上界 # 顯著性判斷 if (confidence_interval_sdown > 0 and confidence_interval_sup > 0) or (confidence_interval_sdown < 0 and confidence_interval_sup < 0): print("顯著") elif (confidence_interval_sdown > 0 and confidence_interval_sup < 0) or (confidence_interval_sdown < 0 and confidence_interval_sup > 0): print("不顯著") ... ...
均值類指標
... ... # 已得以下指標資料 variation_visitors # 灰度版本指標分母 control_visitors # 對比版本指標分母 variation_p # 灰度版本指標值 control_p # 對比版本指標值 variation_x # 灰度版本單使用者指標值 control_x # 對比版本單使用者指標值 z # 不同置信水平(90%/95%/99%)下的z值,業務上主要關注95%置信水平下的顯著檢驗結果 # 計算指標標準差 variation_se = np.std(variation_x, ddof = 1) control_se = np.std(control_x, ddof = 1) # 計算指標變化值和變化率 gap = variation_p - control_p rate = variation_p / control_p - 1 # 計算置信區間 gap_interval_sdown = gap - z * math.sqrt(math.pow(control_se, 2) / control_visitors + math.pow(variation_se, 2) / variation_visitors) # 變化值置信區間下界 gap_interval_sup = gap + z * math.sqrt(math.pow(control_se, 2) / control_visitors + math.pow(variation_se, 2) / variation_visitors) # 變化值置信區間上界 confidence_interval_sdown = gap_interval_sdown / control_p # 變化率置信區間下界 confidence_interval_sup = gap_interval_sup / control_p # 變化值置信區間上界 # 顯著性判斷 if (confidence_interval_sdown > 0 and confidence_interval_sup > 0) or (confidence_interval_sdown < 0 and confidence_interval_sup < 0): print("顯著") elif (confidence_interval_sdown > 0 and confidence_interval_sup < 0) or (confidence_interval_sdown < 0 and confidence_interval_sup > 0): print("不顯著") ... ...
看板展示如下:
4.3.3 負向指標自動根因分析方案
灰度場景的負向指標自動化根因分析方案包括異動檢測、樣本歷史差異性驗證、指標邏輯拆解和Adtributor自動根因分析4個步驟。
其中,Adtributor自動根因分析能計算出同一層級的維度中對指標異動貢獻最大的那個因素,我們透過對指標維度進行分層和設定相互關係來適應具體的指標業務場景,構建起多層級歸因演算法邏輯模型,從而實現業務層面根因結論的自動化輸出。
看板展示如下:
4.3.4 灰度報告智慧拼接推送方案
版本資訊內容的自動獲取:
透過打通發版平臺獲取版本號、實際在裝量、發版累計天數以及版本相關內容,作為灰度報告的開頭。
結論呈現:
根據指標是否全正向/部分負向/全負向、是否樣本不均勻等各種統計結果自動組合對應到預設的結論文案中,一共預設了10多種結論模版。
核心指標顯著性檢驗解讀(根據灰度階段不同,解讀不同型別指標):
- T+1~T+2:效能類指標、活躍率指標
- T+3~T+6:活躍表現指標、分發表現指標、下載安裝過程轉化指標
- T+7:活躍表現指標、分發表現指標、下載安裝過程轉化指標、後項轉化類指標
下鑽一級模組維度歸因解讀:
如果灰度版本前期已明確輸入具體到某個一級模組的改動點,會自動進行該模組的解讀,以及輸出其他有指標差異的模組的資料;如果灰度版本沒有輸入模組層面的改動點,就輸出指標效果顯著(正向顯著、負向顯著)的一級模組的解讀結論。
樣本量均勻性解讀:
業務類指標,透過顯著性檢驗判斷是否分佈均勻;非業務類指標,透過分佈差異來判斷。
負向診斷解讀:
根據多層級自動化根因模型輸出的結果,按照不同維度型別對映的修飾詞、維度數量定位(單維度/多維度)以及樣本歷史差異性驗證結論,對應不同的模版,最終拼接出負向診斷文案。
五、寫在最後
對於業務灰度發版中科學評估和快速決策的要求,我們結合了多種方法,從“實驗思想-數學方法-資料模型-產品方案”四個層面提供了一套較為完整的智慧灰度資料體系解決方案。
本文希望能為業務中的灰度資料體系建設提供參考,但仍應結合各業務自身的特點進行合理設計。方案中涉及的資料模型設計在這裡不詳細介紹,感興趣的同學歡迎和筆者一起探討學習。
此外,灰度資料體系仍有待改進之處,這裡先丟擲來,有一些也已經在研究解決中:
- 在灰度流量分組的時候,通常採用隨機分組的方式。但是由於完全隨機的不確定性,分完組後,2組樣本在某些指標特性上可能天然就分佈不均。相較於後置的樣本均勻性驗證的方法,也可考慮分層抽樣的方式來避免這一問題;
- 在灰度指標分析的流程中,自動多維根因分析模型還存在提升的空間,目前模型非常依賴於本身資料來源中維度的全面性,且只能檢測出定量部分的原因。後續希望把定量的根因模型,結合定性因素進行更全面更準確的解讀;
- 遊戲中心目前整個灰度的解決方案本質上還是基於2 sample-test的檢驗模型,但該模型需要根據灰度版本相較於對比版本在核心指標上的預期提升,來提前估算最小樣本量,實際灰度過程中可能會出現核心指標未達如預期的情況。未來可嘗試mSPRT等檢驗方法,削弱最小樣本量對顯著性結果的限制。
參考文獻:
-
茆詩松, 王靜龍, 濮曉龍. 《高等數理統計(第二版)》
-
是老李沒錯了. 《五分鐘掌握AB實驗和樣本量計算原理》. CSDN部落格
-
Ranjita Bhagwan, Rahul Kumar, Ramachandran Ramjee, et al. 《Adtributor: Revenue Debugging in Advertising Systems》
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69912579/viewspace-2903463/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 從0到1,成為大資料行業領袖大資料行業
- 從0到1到無窮,vivo大規模機器學習實踐機器學習
- 0到1搭建企業級資料治理體系
- 訂單系統:從0到1設計思路
- [轉]從0到1教你設計業務系統
- 從0到1開發搭建智慧線上客服系統
- 從0到1構建美團壓測工具
- 資料庫重構之路,以 OrientDB 到 NebulaGraph 為例資料庫
- 如何從 0 到 1 設計、構建移動分析架構架構
- 中原銀行如何從0到1建設敏捷BI平臺?敏捷
- 從0到1搭建DeltaLake大資料平臺大資料
- 玩轉直播系列之從 0 到 1 構建簡單直播系統(1)
- 從0到1,馬蜂窩大交通團隊如何構建高效研發流程體系?
- 資料治理體系建設
- 以Echo為例,從鋰礦廠到資料礦廠的人工智慧產業全景地圖是這樣的!人工智慧產業地圖
- 從 0 到 1 開展軟體測試
- 從0到1構建策略卡牌養成框架框架
- 以資料為中心的資料安全基礎能力建設探索
- 回顧·大資料平臺從0到1之後大資料
- 從0到1,資料治理一週年大紀實
- 以業務需求為中心的雲原生架構體系建設架構
- [譯] Flutter 從 0 到 1Flutter
- 重新認識快手:人工智慧的從 0 到 1人工智慧
- 人工智慧那點事,如何從0到1突破!人工智慧
- “資料+技術”助力雲原生智慧運維體系建設運維
- vivo 服務端監控體系建設實踐服務端
- 輕鬆保障萬級例項,vivo服務端監控體系建設實踐服務端
- 架構設計:資料服務系統0到1落地實現方案架構
- SpringBoot開發案例從0到1構建分散式秒殺系統Spring Boot分散式
- CD 從抓軌到搭建流媒體伺服器 —— 以《月臨寐鄉》為例伺服器
- 從 0 到 1 認識 TypescriptTypeScript
- 從0到1實現PromisePromise
- Android Router 從 0 到 1Android
- 0到1,Celery從入門到出家
- 從0到1構建基於自身業務的前端工具庫前端
- RDF 和 SPARQL 初探:以維基資料為例
- 傾囊相授!我總結了從0到1建立資料分析指標體系的底層邏輯指標
- 建設資料安全監測體系,為交通收費資料保駕護航