導讀:
先舉個例子,體溫37.4度vs體溫36.5度,只有2.5%的波動,可如果有人在測溫點被發(fā)現體溫37.4度,估計馬上就被拉走做核酸。為啥?因為人們不是怕2.5%的波動,而是怕新冠!
所以:指標波動不可怕,指標波動代表的業(yè)務場景才可怕!脫離業(yè)務場景談指標波動就是耍流氓。
在各種業(yè)務指標中,數據往往不是靜止不變的,尤其是當一些核心的指標發(fā)生了變化、波動時,就需要判斷這樣的波動是否屬于異常的情況。那么波動了多大才能算是異常?本文將結合一些實際業(yè)務場景,來說明數據波動的異常判別方法。
指標數據波動,是各種業(yè)務場景下都會遇見的情況,如每日GMV、每日訂單量等,都是在不斷變化的。大多數情況下,變化是“正?!钡牟▌?,但有一些波動,源于突然發(fā)生的外部原因或其他未被預期的因素,導致其表現出不同于正常模式的異常狀態(tài)。若能準確地識別異常波動,從而做出波動預警,并及時應對,就能一定程度上保證所關心的業(yè)務場景系統(tǒng)的整體穩(wěn)定性。
1
波動類型
數據波動繞不開時間特性。業(yè)務中最常遇到的就是今天的指標是什么樣子?過去幾天是什么趨勢?未來一段時間會怎么樣的變化?數據+時間構成了波動的兩個基本屬性。
根據時間的不同特征,常見的波動類型有:
一次性波動:偶發(fā)的、突然性的波動。一般是由于短期、突發(fā)的事件而影響的指標的波動,比如說某頭部主播在某次直播里上了嚴選的商品、某明星的同款商品在嚴選有庫存等,就會造成訂單量臨時性的超出預期的上漲。
這樣的波動影響時間短,往往幾天的時間便會恢復正常波動。舉個單量的例子,在大促期間都是單量的爆發(fā)期,大促即為一次“偶發(fā)事件”,此時單量的波動即為一次性波動。其具有如下的特征圖:
周期性波動:這種波動和時間節(jié)點強相關,且經常以周或者季、年為循環(huán)節(jié)點。如羽絨服秋冬季節(jié)賣的比較好,到了春天銷量就下降,夏天幾乎沒有銷量,且每年幾乎都是這樣。
持續(xù)性波動:從某一時間開始,指標一直呈現上漲/下降趨勢。如從今年4月開始,浴室香氛品類的銷售量一直呈現上漲趨勢,這就屬于持續(xù)性波動。而持續(xù)性波動背后的原因往往是更深刻的,如訂單結構的變化、環(huán)境因素的影響,從而出現了這種持續(xù)性趨勢。
2
異常識別
那么什么樣的波動可以看作是“異常”呢?異常識別也可以認為是異常檢測。這里主要從絕對值預警、相對值預警兩個方面來說明。
2.1 絕對值預警
絕對值預警,即是通過設定一定的閾值,當指標低于/高于閾值的時候,就認為此時指標波動為異常,并進行預警。
舉個例子,嚴選作為一個品牌,毛利是其核心的一個指標。對毛利可設置絕對值預警:當毛利為負時,就認為此時是異常的情況,需要探究其發(fā)生的原因,并解釋這種異常的波動。通過對毛利的絕對值預警,嚴選及時發(fā)現了部分用戶利用咖啡機進行薅羊毛、從而導致咖啡機毛利為負的行為,并完善了規(guī)則減少了嚴選的損失。
不僅可以設置低于某一個定值,也可以當指標高于某一定值的時候進行預警,比如在供應鏈中,某個大倉的分倉比高于40%,就會導致倉庫負荷過重從而影響生產。
絕對值預警往往是一次性的波動,這樣的異常判定比較簡單,只需要設定對應的閾值即可。而閾值的設定可以根據具體的業(yè)務的不同和規(guī)則而變化。
目前在有數BI中可以直接設置絕對值預警:
2.2 相對值預警
然而實際業(yè)務中,絕對的閾值只能提供一個“底線”。除了一些非常確定性的業(yè)務場景外,在其他情況下,過高的“底線”就會導致誤報,過低的“底線”可能會漏掉很多需要預警的情況。于是作為絕對值預警的補充,相對值預警可以根據歷史數據及波動情況,來判斷當前的波動是否為異常。
(1)同比環(huán)比
同比環(huán)比是業(yè)務場景中比較常用的一種異常檢測方式,利用當前時間周期與前一個時間周期(同比)和過去的同一個時間周期(同比)比較,超過一定的閾值即認為該點是異常的。實際中常用周/日環(huán)比、年同比來進行比較。
如上圖,(1)的數據為所要判斷的值。當(1)的數值為百分比時,如來源于主站訂單的比例,則同比環(huán)比一般為:
環(huán)比:(1)-(2) pt
同比:(1)-(3) pt
而當(1)的數值為非百分比時,如來源于主站的訂單數量時:
環(huán)比:((1)-(2))/(2) %
同比:((1)-(3))/(3) %
根據值得正負來判斷是上漲還是下降。通過與上周/昨天和去年同期的數據表現進行對比,計算波動值,再將波動值和閾值進行對比,從而得到當前時刻數值是否在正常的波動中(閾值的設定方法在后面介紹)。
如在上述的周期性波動的例子中,在11月環(huán)比波動都會較大,這時設置同比波動預警會比設置環(huán)比波動預警更為合理。于是在波動判別中,需要注意業(yè)務實際背景。
(2)周期平滑
同比/環(huán)比僅使用1~2個時間點的數據,容易受到數據本身質量的影響:當歷史同期或上個周期的數據本身就是“異常”的時候,用“異常”的數據來判斷是否“異?!本筒惶线m。
一個很自然的想法就是將所參考的時間點拓展,利用多個時間點的周期數據進行平滑,得到當前時刻指標的對比值。如:
則比較值:
其中為平滑系數,當都為相同的值的時候,此時即為平均值。也可越靠近所研究時間點,賦予更高的平滑系數。所選的時間點可以根據業(yè)務需求自行定義。
利用比較值b和所研究的值(1)對比,超過一定的閾值即可認為是“異常”,其波動需要關注。
(3)假設檢驗(3σ原則)前面提到比較值需要和所研究的值進行對比,通過閾值來判斷波動是否異常。閾值的定義方法和預警方法類似,分為絕對值閾值和自適應(相對值)閾值。
絕對值閾值:根據歷史正常情況下的數據波動情況,計算比較值和所研究的值之間的差異情況,從而定義一個上/下限值,即為閾值。
自適應閾值:根據數據波動情況而變化的閾值,其理論基礎為假設檢驗和大數定律,來判斷是否為異常。
不妨假設當前時間點的指標數據為b,歷史用于對比的指標數據為:
其中:
分別表示對比數據的平均水平和波動情況。則根據大數定律和假設檢驗,當
即可認為當前時間點的指標數據為異常波動。其中z為置信水平所對應的值,如當z=1.96時,置信水平為95%,即可認為在100次的波動下,有95次是在正常范圍內波動的(置信水平及其對應的值可參考標準正態(tài)分布表)。當z=2.58,置信水平為99%,即為著名的“3σ原則”。
3.3 其他方法
除了以上所介紹的一些常用的、便捷的方法外,也可以通過時間序列、算法模型等來判斷異常值。異常值判別是比較常見的研究場景,但由于實操的復雜性,這里僅做一個介紹。
(1)時間序列業(yè)務上的數據往往具有時間屬性,如單量隨時間的變化、GMV隨時間的變化等。那么在時間序列中,通過異常檢測的方法,也可以對當前波動是否異常做出判斷。常用的方法有:
平均法:移動平均、加權移動平均、指數加權移動平均、累加移動平均等。和上述的“周期平均”的方法類似,可自定義窗口大小和加權系數。
ARIMA模型:自回歸移動平均模型(ARIMA)是時間序列中一個基礎模型,利用過去的幾個數據點來生成下一個數據點的預測,并在過程中加入一些隨機變量。使用該模型需要確定ARIMA所需的參數,即需要對數據點進行擬合。利用擬合后的方程確定下一個時間點的數據的區(qū)間,從而判斷當前波動是否為異常。
此外還有ESD、S-ESD、S-H-ESD、STL分解等算法,來檢測異常點。
(2)算法模型
基于分類方法:根據歷史已有的數據,將其分為正常、異常的兩類,之后產生的新的觀測值,就可以使用分類的方法去判斷新的觀測值是否為異常。如使用距離判別的K-means算法、SVM算法等。
神經網絡方法:可以對具有時間特性進行建模的LSTM算法、用卷積神經網絡來做時間序列分類的Time Le-Net,以及各種的監(jiān)督式模型,都是能夠對異常數據進行識別的算法。
3
總結
在實際應用中,還需要結合業(yè)務背景來進行方法的選擇。一般來說,判斷異常的主要方法有:
- EOF -
審核編輯 :李倩
-
神經網絡
+關注
關注
42文章
4734瀏覽量
100420 -
數據
+關注
關注
8文章
6817瀏覽量
88743 -
閾值
+關注
關注
0文章
122瀏覽量
18457
原文標題:數據分析終極一問:指標波動多大才算是異常?
文章出處:【微信號:DBDevs,微信公眾號:數據分析與開發(fā)】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
相關推薦
評論