天天看點

個推技術分享 | 教你打造資料品質心電圖,智能檢測資料異常點

個推擁有豐富的資料資源,通過知識挖掘、機器學習等技術,提煉資料價值,為行業客戶提供資料智能産品和解決方案。為更好地保障自身資料品質,為合作夥伴提供更加優質的資料智能服務,個推建構了數百個名額對資料品質進行監控,并形成“資料品質心電圖”,可視化地展現日增資料量、資料總量變化趨勢等情況,幫助相關人員更直覺地發現資料異常點,及時感覺資料品質。

每天通過人工去觀察和分析龐大的名額,會占用很多人力資源。如何通過智能化的方式高效且準确地識别出資料異常點?本文将個推在資料異常點智能檢測方面的實踐做了總結,與大家分享個推的資料品質保障經驗。

個推技術分享 | 教你打造資料品質心電圖,智能檢測資料異常點

四種常見的名額異常

首先,根據個推業務場景,我們總結并定義出了四種常見的資料名額異常類型,分别是單點名額異常、周期名額異常、階梯名額異常、連續名額異常。

第一類:單點名額異常

單點名額異常是指在大多數時間内都保持相對平穩的資料,在某一時間點突然發生較大波動。

以個推使用者畫像資料為例,個推将畫像标簽資料分為冷、溫、熱三種,其中“ 冷資料”指的是性别、年齡階段等在很長一段時間内不會發生較大變化的一類資料。但是,如果相關特征資料缺失,冷資料的标簽量級會驟降。這種情況下就會産生單點異常的情況。

由于異常點的值會極大地偏離整體資料區間,是以這一類名額異常點比較容易判别。

第二類:周期名額異常

周期異常是指資料整體具有周期特性,在資料曲線上能明顯看出周期性起伏,異常點數值雖然處于正常的資料區間,但是不符合一貫的周期波動規律。

比如,辦公類App的日活資料就具有典型的周期特性,一般來講辦公類App周一至周五的日活較高,周末的日活較低。如果辦公類App在周末或假期期間,日活突然升高,甚至超過工作日,那麼我們就可以認為出現了周期資料異常點。

第三類:階梯名額異常

這一類的異常其實并非都是問題資料。例如系統接入外部的廣告流量後,資料曲線驟升,然後在高點保持正常波動。一段時間後,外部流量接入暫停,資料曲線驟降,然後在驟降點附近維持正常波動。類似場景下,資料曲線整體呈階梯化走勢。

一般來講,有外部流量接入是正向回報,但底層資料量突然增加,還是需要及時關注,以便更好地分析業務發展。

第四類:連續名額異常

連續異常是指在一段時間内連續發生的異常。例如我們在進行新老系統版本切換的過程中,老版本的日活資料會連續下降,直到切換完成後趨于穩定。那麼,在切換過程中連續下降的所有點都應視為異常點。

此類資料異常對業務影響較大,我們需要挖掘異常原因并積極解決。

異常名額智能檢測實踐

針對以上四種資料名額異常,我們通過算法和統計學的方法進行智能檢測。目前常用的幾種異常值檢測方法,在之前的文章中詳細介紹過,大家可以點選閱讀 >> ​​大資料科學家需要掌握的幾種異常值檢測方法​​。

這些異常值檢測方法在個推的實際應用效果如何?四種資料名額異常的智能檢測思路有哪些不同?接下來為大家一一介紹。

1. 單點名額及連續名額異常(有一定規律)檢測

以個推部分SDK的日活資料為例,某App在內建個推SDK過程中遇到問題,導緻日活資料曲線出現一個連續驟降點A;後續一次系統故障又導緻了SDK日活資料曲線再次驟降(産生驟降點B),并出現極小值點C。那麼在驟降點A、驟降點B和極小值點C之間的數值就是我們要檢測找出的異常點。

個推技術分享 | 教你打造資料品質心電圖,智能檢測資料異常點

通常來說,使用統計模型或機器學習模型就可以将系統故障産生的極度明顯的單點異常識别出來。如下圖,使用3σ統計方法和孤立森林模型均可感覺到系統故障産生的極小值點C。

個推技術分享 | 教你打造資料品質心電圖,智能檢測資料異常點

然而,因為內建問題所産生的驟降點A和驟降點B并未能被識别出來。這些驟降點背後的原因對我們疊代産品設計有非常重要的參考價值,是以我們要優化檢測方法,使模型能準确識别到驟降點A和驟降點B。

分析之前的檢測方案,我們發現驟降點A和B的數值都在正常的資料波動區間内,是以統計方法沒有将驟降點A和B分到3σ外,孤立森林模型也無法将它們視為離群點(即異常點)。

針對此問題,我們對輸入模型的特征進行了調整,将單一的資料值替換為資料值+波動值的二維特征,對名額的波動率也賦予權重,使其參與模型計算;并保證在模型參數完全一緻的情況下,利用二維特征的孤立森林進行對 比。

個推技術分享 | 教你打造資料品質心電圖,智能檢測資料異常點

上圖展示了模型優化後的檢測效果。可以明顯看出,在模型參數一緻的情況下,連續下降的那些異常值能夠被準确地識别出來,由于系統故障産生的極小值點也可以成功地被檢測。優化後的模型識别效果比較符合名額檢測要求。

經驗總結

單點名額異常:針對此類明顯偏離正常資料區間的單點異常值(其他時間段的資料保持穩定),使用統計類模型就能識别和檢測出來。

連續名額異常:因為資料值在正常區間内,是以這類異常值較為隐藏,需要将波動率融入特征,參與孤立森林模型計算才能識别。 

2. 連續名額異常(無明顯規律)檢測

剛才提到的連續名額異常,是在資料曲線整體比較有規律的情況下發生的,是以較容易被識别;但是在資料整體曲線無明顯規律的情況下,資料波動較大,連續名額異常的識别就相對困難一些。

比如,個推某彙總層(DWS層)的上遊資料源頭衆多,邏輯複雜。任何一個上遊資料的變化都會對彙總層産生直接影響,是以整體資料曲線起伏較大且無明顯規律,直覺上看存在比較多的異常點。但是資料源改動或上線優化等造成的波動都遠大于日常波動,是以我們需要智能識别出這些由于底層原因導緻的較大波動,及時評估影響,做好應對方案。

個推技術分享 | 教你打造資料品質心電圖,智能檢測資料異常點

由于彙總層資料整體無明顯的規律性,異常點數值跨度比較大且異常點較多,極易使資料的正常區間發生偏移,進而導緻異常名額被誤判為合理名額。對于這類資料,我們使用局部異常因子算法(LOF),依靠模型計算局部密度的特性,通過不同區域的資料密度找出異常點。

從效果來看,人為認定的異常名額都可以被LOF模型準确識别,如下圖:

個推技術分享 | 教你打造資料品質心電圖,智能檢測資料異常點

經驗總結

局部異常因子算法(LOF)通過比較每個局部資料點的密度與其鄰近區域資料的密度來判定異常點。局部資料點的密度越小于鄰域資料密度,那麼該點被判定為異常點的幾率就越高。

在整體資料沒有規律且比較發散的情況下,利用LOF局部密度的特性進行異常值檢測的效果更好,能夠滿足名額檢測标準。

3. 階梯名額異常檢測

外部流量的接入資料是十分典型的階梯類名額。以個推外部流量資料為例,我們在名額檢測中,應該将接入或接出後産生的波動點都作為異常值彙報。

個推技術分享 | 教你打造資料品質心電圖,智能檢測資料異常點

如上圖,階梯類資料異常是在瞬間發生的(資料曲線上升坡度接近90度),異常點的數值波動非常大,并且存在反複性。此外,異常值可能在正常的數值區間内,流量資料也并不符合正态分布。根據階梯異常的特性及實踐經驗,我們使用二維特征的孤立森林模型來識别該類異常。

個推技術分享 | 教你打造資料品質心電圖,智能檢測資料異常點

上圖展示了識别效果。可以看到孤立森林模型準确識别到了流量接入和接出時的變化點,并且還識别到了兩個隐蔽的變化點,将曲線放大後可以發現這兩個隐蔽點的波動相對于其他點是比較大的,屬于正确識别。

經驗總結

階梯異常值較為隐藏,但是波動性大。我們可以将波動值融入到特征中,采用孤立森林模型進行識别。

4. 周期名額異常檢測

以辦公類App的日活資料為例,該資料在大多數時間内都呈現出震蕩的周期性,但在十一假期和春節假期分别産生了一個低谷,假期結束後又重回周期性,這種假期效應帶來的資料變化就是我們要找的異常值。在春節的假期效應結束後,辦公類App日活資料增加,這個提升點也應該被識别出來。

個推技術分享 | 教你打造資料品質心電圖,智能檢測資料異常點

考慮到周期性,我們在識别該類異常值時增加了局部異常因子算法(LOF)。

為驗證模型效果,在保證二維特征一緻的前提下,我們分别通過LOF算法和孤立森林模型進行異常名額的識别,并進行了效果對比,如下圖:

個推技術分享 | 教你打造資料品質心電圖,智能檢測資料異常點

上圖可以看出,二者的表現有一定差别。這兩個算法都識别到了第二個周期異常點,但在第一個周期異常點的識别上,LOF利用其局部密度識别的特性,感覺地更早,在不符合周期變化的初期就有所察覺;而孤立森林在第一個周期異常到達了極值點才有所感覺。

在實際應用中,更早感覺到資料變化,就可以更及時地采取措施以減少對業務的影響。另外,孤立森林模型明顯存在誤判點。是以,相比之下,LOF算法的檢測效果更好。

經驗總結

對周期名額異常的檢測更強調及時性。從效果來看,二維特征的LOF模型通過對比每一個局部資料點的密度,能夠更加準确、迅速地感覺到異常。

總的來講,我們可以看到,智能識别模型不僅識别到了單點名額異常、周期名額異常、階梯名額異常、連續名額異常等四類重點關注的資料名額異常,還識别到了一些隐蔽的異常點。簡單的人工目測可能會覺得這些異常名額是誤判導緻,但是當我們把曲線放大後就會發現,這些是除了底層資料操作影響以外波動最大的資料點。

其實在模型建構時可以選擇舍去這類異常點。我們之是以保留彙報這類資料,是因為希望從這類波動偏大的資料點中總結規律,找到在未對資料做處理的情況下卻産生較大數值波動的原因,進而優化資料品質,提高資料的穩定性。

名額檢測系統架構

  • 将應用管理平台直接與異常資料關聯,比對出異常時間線内的相關變更操作,此操作大機率為資料異常變化的直接原因,并通過郵件告知給負責人員。
  • 對于非底層配置變更導緻的異常,我們要結合業務和現實情況總結内在規律,比如辦公類App的日活資料受假期效應影響,并分析相關特征,建立歸因模型,最終實作智能化歸因。
  • 和資料血緣系統結合,通過資料血緣系統找到對應的資料負責人和使用資料的業務線,第一時間讓業務人員知道底層資料的變動,使負面影響最小化。
  • 分析不同類别名額資料的特征,建構名額資料分類模型,識别名額場景。自動化進行異常分類,并根據異常分類結果比對對應模型,進行智能識别,減少人工調試。