《微軟亞研院的AIOps底層算法: KPI快速聚類》要點:
本文介紹了微軟亞研院的AIOps底層算法: KPI快速聚類,希望對您有用。如果有疑問,可以聯系我們。
導讀
智能運維中存在海量時序數據(KPI)需要監控、檢測異常、關聯, 而AIOps的一個底層算法就是把大規模時序數據快速準確地聚類成有限的若干類別,從而大大降低后續數據分析與挖掘工作的開銷.?其應用場景包括自動適配異常檢測算法、輔助標注、輔助構建故障傳播鏈等.?本文介紹的案例是由微軟亞洲研究院發表在數據庫領域頂級會議VLDB 2015的文章《Yading: Fast Clustering of Large-Scale Time Series Data》.
在大數據時代,快速、大規模的分析技術的重要性日益凸顯,人們利用這些技術完成實時和交互性任務中的數據分析工作.運維中常見的KPI數據是一種時間序列數據,它具有數據實例多、維度高的特點.為了降低數據分析工作的開銷,提高分析效率,人們希望將海量的時序數據曲線分為若干類別,從而減少需要考察的曲線數目.因此,如何對大規模的時間序列數據進行快速、準確的聚類是一個關鍵性問題.
本文中,作者設計了一套端到端的時序數據聚類算法Yading,實現了對大規模時間序列數據的高效、準確、自動化聚類.為驗證算法效果,作者在公開數據集上將Yading與若干傳統時序數據聚類算法進行對比,并在微軟的實際工業數據上對算法進行了測試,證明了Yading的高效性和分類準確性.
為應對上述挑戰,本文設計了一套端到端的時序數據聚類算法Yading,分以下三步實現大規模時序數據的快速、準確聚類,算法框架如下圖所示.
輸入數據集采樣.對大量的時序數據進行隨機采樣,并使用逐段聚集平均(PAA)算法縮減每條時序數據實例的維度.用采樣后的數據集作為聚類算法的輸入.
在采樣后的數據集上進行時序數據聚類.使用L1距離作為時序數據曲線間的相似性度量.在基于密度的聚類算法DBSCAN的基礎上,設計出多密度的聚類算法Multi-DBSCAN,并使算法能夠自動決定參數.
對大量數據采用分派(assignment)策略進行分類.對于采樣中未被選擇的大量時序數據曲線,采用分派策略將其分到與其L1距離最近的已聚類曲線所屬的聚類簇中.同時建立了有序鄰居圖(Sorted Neighbor Graph, SNG)輔助計算時序數據實例之間的距離,提高分派算法的計算效率.
大規模的時序數據集中通常含有數以萬計的時序數據實例,每個實例上含有大量的數據點,直接對整個數據集進行聚類將帶來巨大的計算開銷.因此,本文通過隨機采樣和維度縮減的手段降低需要考察的實例數目和維度,將采樣后的數據集作為聚類模塊的輸入,降低計算開銷.
由于不需要對輸入數據的分布作任何假設,隨機采樣(random sampling)是一種減少數據實例個數的有效手段.采樣過程中需要遵循兩個原則:(1)每個類別的數據均在采樣集中出現至少m次.(2)采樣集中各類別數據所占比例與原數據集中的比例偏差不超過給定閾值ε.基于上述原則,作者采用數學方法推導出采樣數據集大小的上界和下界,對原始數據集進行隨機采樣.
對于每個時序數據實例,使用逐段聚集平均(Piecewise Aggregate Approximation,PAA)進行維度縮減.具體的,對于一條長度為D的時序數據,PAA將其劃分為d個幀(d<D),將每個幀用一個值(例如該幀上數據點的均值)表示,從而將時序數據的長度從D減小為d,達到降維的目的.
通過上述兩項操作,能夠從規模為N*D的原始數據集中獲得規模為s*d的采樣數據集(s≤N, d≤D),且采樣集保持原數據集的分布(underlying distribution)不變.用采樣集作為聚類模塊的輸入,大大降低了計算開銷.
點(x1,y1)與點(x2,y2)的L1距離可表示為:L = |x1-x2|+|y1-y2|.L1 距離計算復雜度低,且對于脈沖噪聲具有一定的魯棒性,適合作為處理大規模時序數據的相似性度量.
時序數據集中的數據曲線模式多種多樣,每個類別中含有的曲線數量也有較大差異.面對這種情況,基于密度的聚類方法是一種很好的選擇.一般地,如果時序曲線a和b相似,b和c相似,則a、b、c很可能屬于同一類別.基于密度的聚類算法正是根據這一思想將相似曲線逐步加入同一聚類簇中,從而能夠找出任意形狀的聚類簇.特別地,真實的時序數據模式較為復雜,在一個數據集中可能存在多種密度的聚類簇(如下圖所示).因此本文中將基于密度的DBSCAN算法改進為多密度的Multi-DBSCAN,提升聚類準確性.
在對采樣集進行聚類后,使用分派(assignment)策略對大量未分類時序數據曲線進行快速分類.具體的,對于一個未分類實例,找出與它相似性距離最近的已分類實例A.若二者的距離小于A所在聚類簇的密度半徑,則將該實例劃分至與A相同的類別中.否則,認為該實例是一個異常(outlier).為提高計算效率,本文中還建立了有序鄰居圖,利用剪枝的方法加速尋找最鄰近實例的過程,實現對大量時序數據的快速分類.
文中使用標準化互信息(Normalized Mutual Information, NMI)作為指標對聚類算法的準確性進行評價.作者分別在15個時序數據集上將本文提出的算法YADING與三種常用的聚類算法DECLUE2.0、DBSCAN、CLARANS進行對比,在不同規模數據集上的計算時間及所有數據集上的平均NMI如下圖所示.可以看出,YADING在計算效率和聚類準確性方面均領先于幾種常用算法.
本文介紹了一套快速、準確的時序數據聚類算法,用于對大規模時序數據進行快速分類,是時序數據挖掘與分析工作的重要手段.通過隨機采樣和維度縮減獲得規模較小的采樣集,從而大大減小聚類算法需要考察的數據量,降低計算開銷.之后設計了一套基于L1 距離和Multi-DBSCAN算法的時序數據聚類方案,并能夠自動進行密度估計,具有較高的魯棒性.對于大量的未分類時序數據,根據聚類結果采用分派策略進行快速分類.最后,文中分別采用理論推導與真實數據驗證的方式證明了該算法在解決大規模時序數據聚類問題上的高效性和準確性,具有很好的實用價值.
此外,在NetMan實驗室今年十月份推出的智能運維挑戰賽中,將提供來自互聯網公司的公開脫敏數據集,供大家嘗試自己的KPI聚類算法.歡迎感興趣的朋友踴躍參與.
由于長度限制,本文沒有介紹細節,特此附上原文鏈接,點擊閱讀原文獲取.
轉載請注明本頁網址:
http://www.snjht.com/jiaocheng/1944.html