原文:https://www.usenix.org/system/files/conference/nsdi14/nsdi14-paper-bhagwan.pdf
本文主要解決在廣告系統中,當指標異常波動時在和收益相關的指標的各個維度中去定位根因。
本文實現了一個名爲Adtributor的工具,其中實現了一個屬性算法,以及一個可視化的接口。該工具可以幫助故障派出人員快速識別異常的潛在原因,在一個大型廣告系統中取得了良好的效果。
1. 綜述
維度根因定位問題有三大特點:
- 系統規模
每天有大量的用戶使用,所以在單個搜索或者點擊級別去定位問題不現實,只能在一些聚合的指標上去定位問題。問題定位系統也只有在發現了異常時才觸發。 - 在指標的多個維度中首先找到能解釋異常的維度
- 衍生指標的普遍性問題
本文有三點主要貢獻:
- 提出了一個根因定位的算法。
- 對於衍生指標的根因定位問題。
- 實現了根因定位的算法,並且開發了一個可視化的工具。
2. 問題引入
2.1 異常檢測部分
利用ARMA模型進行預測,當預測結果和實際結果超出一定的百分比偏差時告警。
2.2 問題範圍限定
下面的例子,在某個時刻,廣告收益的預測值爲100,觸發異常告警,並且執行根因分析。
這裏假設和收益相關只有三個維度分別是數據中心(DC),廣告商(AD),設備類型(DT)。上圖是該時刻三個維度的實際值和預測值的情況。算法需要定位是哪些維度的哪些元素導致了這次收益下降。
布爾表達式
用如下的布爾表達式描述50$收益下降:
- Recenue_drop(DC=X)=47$
- Recenue_drop(AD=A1 | AD=A3 | AD=A4)=51$
- Recenue_drop(DT=Mobile | DT=Tablet)=49$
作者團隊經過長期的案例學習發現,一個異常的根因由多個維度共同導致的情況非常罕見。因此本文將問題限制在只在一個維度的元素組合中尋找異常的根因。
2.3 Explanatory Power(EP) & Succinctness§ & Surprise(S)
稻草人方法(strawman): 我們尋找的解滿足以下情況,該維度的一組元素其收入下降達到總收入下降的閾值分數,並且是最簡潔的組合。
Explanatory Power(): 一組元素解釋指標變化的分數。
Succinctness(): 一組元素中元素的個數。
稻草人方法就是去尋找個數最少的一組元素,該組元素的解釋力超過。
但是僅用稻草人方法有一些不足。如上例所示,數據中心維度中,X的預測收入佔比94%,實際收入佔比94%,Y的預測收入佔比和實際收入佔比均爲6%。設備類型維度中,PC的預測佔比爲50%,但是實際佔比爲98%,Mobile和Tablet的預測佔比均爲,但是實際佔比一個是2%一個是0%。這種變化在廣告商維度變化也挺大。
根據稻草人原則,我們會最終定位根因爲X數據中心,但是如上所述在設備類型維度元素的預測和實際收入佔比的這種變化是讓人感到surprise的,所以引入一個新的概念 Surprise(): 來描述這種變化。
3. 根因定位算法
3.1 符號
- : 維度,例如:廣告商,數據中心。
- : 維度的基數,例如:廣告商共有100個取值。
- : 維度的元素,例如:可口可樂是廣告商之一。
- : 指標,例如:總收入,總搜索次數。
- : 對於指標的元素的預測值。
- : 對於指標的元素的實際值。
- : 指標的整體的預測值。
- : 指標的整體的實際值。
3.2 Explanatory power
給定元素的值是該元素的變化在該維度整體變化的佔比。例如維度的元素的解釋力爲:
3.3 Surprise
對於每個元素,用表示預測佔比或者叫先驗概率
用表示實際佔比或者叫後驗概率。
用JS散度來衡量這兩個分佈的差異:
其中,0表示兩個分佈相同,值越大差異越大。
(不用KL散度的原因是:一、KL散度不是對稱的。二、KL散度是無界的,對於概率值爲0的情況KL散度無法處理。)
對於每個元素計算surprise值:
其中,。
3.4 完整算法:
算法描述
最終廣告系統收入根因分析方法分爲如下三步:
- (Explanatory Power)在每個維度中,找到解釋性達到的元素集合。
- (Succinctness)在每個維度的元素集合中找到該維度最簡潔的集合。
- (Surprise)對於所有的集合,找到在貢獻變化最大的集合。
僞代碼:
算法中主要有兩個參數,:
- :該維度下的元素組合(該維度的根因元素候選集)的Explanatory Power總和要滿足的閾值,滿足該閾值的候選集才能被加到該異常的根因組合中。
- :該維度下單個元素的Explanatory Power要滿足的閾值,滿足該閾值才能被加到該維度的根因元素候選集中。
最終結果取surprise值最大的三個,這裏可以改成設置一個surprise的閾值,滿足該閾值的候選集作爲最終結果。
在算法描述中遍歷所有具有最小解釋力的基數子集非常耗費時間,僞代碼中採用貪婪的啓發式算法,可以大大降低執行速度。
其他
第四章是介紹衍生指標的EP值和S值的求法,這一塊沒有仔細看。