導(dǎo)讀:
先舉個(gè)例子,體溫37.4度vs體溫36.5度,只有2.5%的波動(dòng),可如果有人在測溫點(diǎn)被發(fā)現(xiàn)體溫37.4度,估計(jì)馬上就被拉走做核酸。為啥?因?yàn)槿藗儾皇?span style="font-family: -apple-system-font, BlinkMacSystemFont, "Helvetica Neue", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 15px;letter-spacing: 0.544px;widows: 1;background-color: rgb(235, 235, 235);">怕2.5%的波動(dòng),而是怕新冠!
所以:指標(biāo)波動(dòng)不可怕,指標(biāo)波動(dòng)代表的業(yè)務(wù)場景才可怕!脫離業(yè)務(wù)場景談指標(biāo)波動(dòng)就是耍流氓。
你們好,我是寶器!
在各種業(yè)務(wù)指標(biāo)中,數(shù)據(jù)往往不是靜止不變的,尤其是當(dāng)一些核心的指標(biāo)發(fā)生了變化、波動(dòng)時(shí),就需要判斷這樣的波動(dòng)是否屬于異常的情況。那么波動(dòng)了多大才能算是異常?本文將結(jié)合一些實(shí)際業(yè)務(wù)場景,來說明數(shù)據(jù)波動(dòng)的異常判別方法。
指標(biāo)數(shù)據(jù)波動(dòng),是各種業(yè)務(wù)場景下都會(huì)遇見的情況,如每日GMV、每日訂單量等,都是在不斷變化的。大多數(shù)情況下,變化是“正?!钡牟▌?dòng),但有一些波動(dòng),源于突然發(fā)生的外部原因或其他未被預(yù)期的因素,導(dǎo)致其表現(xiàn)出不同于正常模式的異常狀態(tài)。若能準(zhǔn)確地識(shí)別異常波動(dòng),從而做出波動(dòng)預(yù)警,并及時(shí)應(yīng)對,就能一定程度上保證所關(guān)心的業(yè)務(wù)場景系統(tǒng)的整體穩(wěn)定性。?
數(shù)據(jù)波動(dòng)繞不開時(shí)間特性。業(yè)務(wù)中最常遇到的就是今天的指標(biāo)是什么樣子?過去幾天是什么趨勢?未來一段時(shí)間會(huì)怎么樣的變化?數(shù)據(jù)+時(shí)間構(gòu)成了波動(dòng)的兩個(gè)基本屬性。根據(jù)時(shí)間的不同特征,常見的波動(dòng)類型有:一次性波動(dòng):偶發(fā)的、突然性的波動(dòng)。一般是由于短期、突發(fā)的事件而影響的指標(biāo)的波動(dòng),比如說某頭部主播在某次直播里上了嚴(yán)選的商品、某明星的同款商品在嚴(yán)選有庫存等,就會(huì)造成訂單量臨時(shí)性的超出預(yù)期的上漲。這樣的波動(dòng)影響時(shí)間短,往往幾天的時(shí)間便會(huì)恢復(fù)正常波動(dòng)。舉個(gè)單量的例子,在大促期間都是單量的爆發(fā)期,大促即為一次“偶發(fā)事件”,此時(shí)單量的波動(dòng)即為一次性波動(dòng)。其具有如下的特征圖:周期性波動(dòng):這種波動(dòng)和時(shí)間節(jié)點(diǎn)強(qiáng)相關(guān),且經(jīng)常以周或者季、年為循環(huán)節(jié)點(diǎn)。如羽絨服秋冬季節(jié)賣的比較好,到了春天銷量就下降,夏天幾乎沒有銷量,且每年幾乎都是這樣。持續(xù)性波動(dòng):從某一時(shí)間開始,指標(biāo)一直呈現(xiàn)上漲/下降趨勢。如從今年4月開始,浴室香氛品類的銷售量一直呈現(xiàn)上漲趨勢,這就屬于持續(xù)性波動(dòng)。而持續(xù)性波動(dòng)背后的原因往往是更深刻的,如訂單結(jié)構(gòu)的變化、環(huán)境因素的影響,從而出現(xiàn)了這種持續(xù)性趨勢。那么什么樣的波動(dòng)可以看作是“異?!蹦兀慨惓WR(shí)別也可以認(rèn)為是異常檢測。這里主要從絕對值預(yù)警、相對值預(yù)警兩個(gè)方面來說明。絕對值預(yù)警,即是通過設(shè)定一定的閾值,當(dāng)指標(biāo)低于/高于閾值的時(shí)候,就認(rèn)為此時(shí)指標(biāo)波動(dòng)為異常,并進(jìn)行預(yù)警。舉個(gè)例子,嚴(yán)選作為一個(gè)品牌,毛利是其核心的一個(gè)指標(biāo)。對毛利可設(shè)置絕對值預(yù)警:當(dāng)毛利為負(fù)時(shí),就認(rèn)為此時(shí)是異常的情況,需要探究其發(fā)生的原因,并解釋這種異常的波動(dòng)。通過對毛利的絕對值預(yù)警,嚴(yán)選及時(shí)發(fā)現(xiàn)了部分用戶利用咖啡機(jī)進(jìn)行薅羊毛、從而導(dǎo)致咖啡機(jī)毛利為負(fù)的行為,并完善了規(guī)則減少了嚴(yán)選的損失。不僅可以設(shè)置低于某一個(gè)定值,也可以當(dāng)指標(biāo)高于某一定值的時(shí)候進(jìn)行預(yù)警,比如在供應(yīng)鏈中,某個(gè)大倉的分倉比高于40%,就會(huì)導(dǎo)致倉庫負(fù)荷過重從而影響生產(chǎn)。絕對值預(yù)警往往是一次性的波動(dòng),這樣的異常判定比較簡單,只需要設(shè)定對應(yīng)的閾值即可。而閾值的設(shè)定可以根據(jù)具體的業(yè)務(wù)的不同和規(guī)則而變化。目前在有數(shù)BI中可以直接設(shè)置絕對值預(yù)警:然而實(shí)際業(yè)務(wù)中,絕對的閾值只能提供一個(gè)“底線”。除了一些非常確定性的業(yè)務(wù)場景外,在其他情況下,過高的“底線”就會(huì)導(dǎo)致誤報(bào),過低的“底線”可能會(huì)漏掉很多需要預(yù)警的情況。于是作為絕對值預(yù)警的補(bǔ)充,相對值預(yù)警可以根據(jù)歷史數(shù)據(jù)及波動(dòng)情況,來判斷當(dāng)前的波動(dòng)是否為異常。同比環(huán)比是業(yè)務(wù)場景中比較常用的一種異常檢測方式,利用當(dāng)前時(shí)間周期與前一個(gè)時(shí)間周期(同比)和過去的同一個(gè)時(shí)間周期(同比)比較,超過一定的閾值即認(rèn)為該點(diǎn)是異常的。實(shí)際中常用周/日環(huán)比、年同比來進(jìn)行比較。如上圖,(1)的數(shù)據(jù)為所要判斷的值。當(dāng)(1)的數(shù)值為百分比時(shí),如來源于主站訂單的比例,則同比環(huán)比一般為:而當(dāng)(1)的數(shù)值為非百分比時(shí),如來源于主站的訂單數(shù)量時(shí):? ??環(huán)比:((1)-(2))/(2) %根據(jù)值得正負(fù)來判斷是上漲還是下降。通過與上周/昨天和去年同期的數(shù)據(jù)表現(xiàn)進(jìn)行對比,計(jì)算波動(dòng)值,再將波動(dòng)值和閾值進(jìn)行對比,從而得到當(dāng)前時(shí)刻數(shù)值是否在正常的波動(dòng)中(閾值的設(shè)定方法在后面介紹)。如在上述的周期性波動(dòng)的例子中,在11月環(huán)比波動(dòng)都會(huì)較大,這時(shí)設(shè)置同比波動(dòng)預(yù)警會(huì)比設(shè)置環(huán)比波動(dòng)預(yù)警更為合理。于是在波動(dòng)判別中,需要注意業(yè)務(wù)實(shí)際背景。同比/環(huán)比僅使用1~2個(gè)時(shí)間點(diǎn)的數(shù)據(jù),容易受到數(shù)據(jù)本身質(zhì)量的影響:當(dāng)歷史同期或上個(gè)周期的數(shù)據(jù)本身就是“異?!钡臅r(shí)候,用“異?!钡臄?shù)據(jù)來判斷是否“異常”就不太合適。
一個(gè)很自然的想法就是將所參考的時(shí)間點(diǎn)拓展,利用多個(gè)時(shí)間點(diǎn)的周期數(shù)據(jù)進(jìn)行平滑,得到當(dāng)前時(shí)刻指標(biāo)的對比值。如:其中
為平滑系數(shù),當(dāng)
都為相同的值的時(shí)候,此時(shí)即為平均值。也可越靠近所研究時(shí)間點(diǎn),賦予更高的平滑系數(shù)。所選的時(shí)間點(diǎn)可以根據(jù)業(yè)務(wù)需求自行定義。利用比較值b和所研究的值(1)對比,超過一定的閾值即可認(rèn)為是“異常”,其波動(dòng)需要關(guān)注。前面提到比較值需要和所研究的值進(jìn)行對比,通過閾值來判斷波動(dòng)是否異常。閾值的定義方法和預(yù)警方法類似,分為絕對值閾值和自適應(yīng)(相對值)閾值。不妨假設(shè)當(dāng)前時(shí)間點(diǎn)的指標(biāo)數(shù)據(jù)為b,歷史用于對比的指標(biāo)數(shù)據(jù)為:?分別表示對比數(shù)據(jù)的平均水平和波動(dòng)情況。則根據(jù)大數(shù)定律和假設(shè)檢驗(yàn),當(dāng)即可認(rèn)為當(dāng)前時(shí)間點(diǎn)的指標(biāo)數(shù)據(jù)為異常波動(dòng)。其中z為置信水平所對應(yīng)的值,如當(dāng)z=1.96時(shí),置信水平為95%,即可認(rèn)為在100次的波動(dòng)下,有95次是在正常范圍內(nèi)波動(dòng)的(置信水平及其對應(yīng)的值可參考標(biāo)準(zhǔn)正態(tài)分布表)。當(dāng)z=2.58,置信水平為99%,即為著名的“3σ原則”。除了以上所介紹的一些常用的、便捷的方法外,也可以通過時(shí)間序列、算法模型等來判斷異常值。異常值判別是比較常見的研究場景,但由于實(shí)操的復(fù)雜性,這里僅做一個(gè)介紹。業(yè)務(wù)上的數(shù)據(jù)往往具有時(shí)間屬性,如單量隨時(shí)間的變化、GMV隨時(shí)間的變化等。那么在時(shí)間序列中,通過異常檢測的方法,也可以對當(dāng)前波動(dòng)是否異常做出判斷。常用的方法有:平均法:移動(dòng)平均、加權(quán)移動(dòng)平均、指數(shù)加權(quán)移動(dòng)平均、累加移動(dòng)平均等。和上述的“周期平均”的方法類似,可自定義窗口大小和加權(quán)系數(shù)。
ARIMA模型:自回歸移動(dòng)平均模型(ARIMA)是時(shí)間序列中一個(gè)基礎(chǔ)模型,利用過去的幾個(gè)數(shù)據(jù)點(diǎn)來生成下一個(gè)數(shù)據(jù)點(diǎn)的預(yù)測,并在過程中加入一些隨機(jī)變量。使用該模型需要確定ARIMA所需的參數(shù),即需要對數(shù)據(jù)點(diǎn)進(jìn)行擬合。利用擬合后的方程確定下一個(gè)時(shí)間點(diǎn)的數(shù)據(jù)的區(qū)間,從而判斷當(dāng)前波動(dòng)是否為異常。
此外還有ESD、S-ESD、S-H-ESD、STL分解等算法,來檢測異常點(diǎn)。
基于分類方法:根據(jù)歷史已有的數(shù)據(jù),將其分為正常、異常的兩類,之后產(chǎn)生的新的觀測值,就可以使用分類的方法去判斷新的觀測值是否為異常。如使用距離判別的K-means算法、SVM算法等。
神經(jīng)網(wǎng)絡(luò)方法:可以對具有時(shí)間特性進(jìn)行建模的LSTM算法、用卷積神經(jīng)網(wǎng)絡(luò)來做時(shí)間序列分類的Time ?Le-Net,以及各種的監(jiān)督式模型,都是能夠?qū)Ξ惓?shù)據(jù)進(jìn)行識(shí)別的算法。
在實(shí)際應(yīng)用中,還需要結(jié)合業(yè)務(wù)背景來進(jìn)行方法的選擇。一般來說,判斷異常的主要方法有:·················END·················