摘要: 在大型互聯網企業中,對海量KPI(關鍵性能指標)進行監控和異常檢測是確保服務質量和可靠性的重要手段。基於互聯網的服務型企業(如線上購物、社交網絡、搜索引擎等)經過監控各類系統及應用的數以萬計的KPI(如CPU利用率、每秒請求量等)來確保服務可靠性。php
第一篇文章SLS機器學習介紹(01):時序統計建模上週更新完,一會兒炸出了不少潛伏的業內高手,忽的發現集團內部各個業務線都針對時序分析存在必定的需求。你們私信問我業務線上的具體方法,在此針對遇到的通用問題予以陳述(權且拋磚引玉,但願各位大牛提供更好的建議和方法):html
數據的高頻抖動如何處理?node
歷史訓練數據如何選擇?算法
這麼多方法該如何選擇?數據庫
在大型互聯網企業中,對海量KPI(關鍵性能指標)進行監控和異常檢測是確保服務質量和可靠性的重要手段。基於互聯網的服務型企業(如線上購物、社交網絡、搜索引擎等)經過監控各類系統及應用的數以萬計的KPI(如CPU利用率、每秒請求量等)來確保服務可靠性。KPI上的異常一般反映了其相關應用上可能出現故障,如服務器故障、網絡負載太高、外部攻擊等。於是,異常檢測技術被普遍用於及時檢測異常事件以達到快速止損的目的。服務器
大多數異常檢測算法(如雅虎的EDAGS,Twitter的BreakoutDetection,FaceBook的prophet)都須要爲每條KPI單獨創建異常檢測模型,在面對海量KPI時,會產生極大的模型選擇、參數調優、模型訓練及異常標註開銷。幸運的是,因爲許多KPI之間存在隱含的關聯性,它們是較爲類似的。若是咱們可以找到這些類似的KPI(例如在一個負載均衡的服務器集羣中每一個服務器上的每秒請求量KPI是類似的),將它們劃分爲若干聚類簇,則能夠在每一個聚類簇中應用相同的異常檢測模型,從而大大下降各項開銷。網絡
在同一個業務指標的前提下:數據結構
本文主要從時間對齊的多條時序KPI中進行類似性度量,時間點上的指標的類似性和時序曲線形態的類似性併發
和 負載均衡
當
時,表示曼哈頓距離;
時,表示歐幾里得距離;當p趨近於無窮大時,該距離轉換爲切比雪夫距離,具體以下式所式:
閔可夫斯基距離比較直觀,可是它與數據的分佈無關,具備必定的侷限性,若是x方向的幅值遠遠大於y方向的幅值,這個距離公式就會過分方法x維度的做用。所以在加算前,須要對數據進行變換(去均值,除以標準差)。這種方法在假設數據各個維度不相關的狀況下,利用數據分佈的特性計算出不一樣的距離。若是數據維度之間數據相關,這時該類距離就不合適了!
1.2 馬氏距離:若不一樣維度之間存在相關性和尺度變換等關係,須要使用一種變化規則,將當前空間中的向量變換到另外一個能夠簡單度量的空間中去測量。假設樣本之間的協方差矩陣是
,利用矩陣分解(LU分解)能夠轉換爲下三角矩陣和上三角矩陣的乘積: 。消除不一樣維度之間的相關性和尺度變換,須要對樣本x作以下處理:
,通過處理的向量就能夠利用歐式距離進行度量。
如何去比較兩個不一樣長度的字符串的類似性?給定兩個字符串,由一個轉成另外一個所須要的最小編輯操做,其中須要有三個操做,相同位置字符的替換、對字符串中某個位置進行插入與刪除。具體的遞歸表達式以下:
2.2 DTW(Dynamic Time Warpping)距離
動態時間規整(Dynamic Time Warping;DTW)是一種將時間規整和距離測度相結合的一種非線性規整技術。主要思想是把未知量均勻地伸長或者縮短,直到與參考模式的長度一致,在這一過程當中,未知量的時間軸要不均勻地扭曲或彎折,以使其特徵與參考模式特徵對正。
DTW(Dynamic Time Warping)距離的計算過程以下:
假設,兩個時間序列Q和C,Q={
, ,…, },C={ , ,…, }。構造一個(n, m)的矩陣,第(i, j)單元記錄兩個點 之間的歐氏距離, 。一條彎折的路徑W,由若干個彼此相連的矩陣單元構成,這條路徑描述了Q和C之間的一種映射。設第k個單元定義爲 ,則
。
這條彎折的路徑知足以下的條件:
1. 邊界條件:$w_1=(1,1)$,且$w_k=(n,m)$ 2. 連續性:設$w_k=(a, b)$,$w_{k-1}=(a^{'}, b^{'})$,那麼$a-a^{'}<= 1$,$b-b^{'}<=1$ 3. 單調性:設$w_k=(a,b)$,$w_{k-1}=(a^{'}, b^{'})$,那麼$a-a^{'}>=0, b-b^{'} >=0$
在知足上述條件的多條路徑中,最短的,花費最少的一條路徑是:
DTW距離的計算過程是一個DP過程,先用歐式距離初始化矩陣,而後使用以下遞推公式進行求解:
數據源:集羣中全部集羣的多指標度量值(秒級數據)
基本的預處理
* and metric_name : machine_022_cpu | select stamp, metric_val order by stamp limit 2000
集羣中有相同屬性的機器大約爲5K臺,那麼咱們就會有通過處理的5K條NET:Tcp的曲線,如今須要對該集合進行聚類,找到其中類似形態的曲線,並發現形態不一致的曲線形態。
![image.png]()
本實驗中將時序序列將高維度數據下降到長度爲300的PAA策略。
DBSCAN(Density-BasedSpatial Clustering of Applications with Noise),一種基於密度的聚類方法,即找到被低密度區域分離的稠密區域,要求聚類空間中的必定區域內所包含對象(點或其餘空間對象)的數目不小於某一給定閾值。
其中幾個關鍵術語:
上圖是通常DBSCAN的聚類過程,其中有兩個地方能夠進行較好的優化:
兩個參數
3.1 KD Tree構造
KD(K-Dimensional) Tree,是一種分割K維度數據空間的數據結構。主要應用與多維空間關鍵數據的搜索(如:範圍搜索和近鄰搜索)。
function kdtree(list of points pointList, int depth) { // select axis based on depth so that axis cycles through all valid values var int axis := depth % k; // sort point list and choose median as pivot element select median by axis from pointList; // create node and construct subtree node.location := median; node.leftChild := kdtree(points in pointList before median, depth + 1); node.rightChild := kdtree(points in pointList before median, depth + 1); return node; }
上述算法模型中,最大的問題在於軸點的選擇,選擇好軸點以後,就能夠遞歸去建立這顆樹了。
建樹必須遵循的兩個準則:
選擇軸點的策略
鄰近搜索策略
3.2 參數自動化估計
具體的成分以下圖所示:
這裏咱們假設
的坐在成分爲 左右,所以咱們假設最小的近鄰集合中所含有的樣本數量爲
。
具體的參數估計流程以下:
3.3 DBSCAN具體流程
直觀的理解下本節開頭關於聚類指標的說明:
DBSCAN算法描述中經常使用的概念
密度直達,若它知足 且
首先,將數據集D中的全部對象標記爲爲處理狀態 for 樣本p in 數據集D do if p 屬於某個簇 或者 被標記爲噪聲 then continue; else 檢查p的Eps鄰域 Neighbor(Eps, p) if |Neighbor(Eps, p)| < MinPts then 標記對象p爲邊界點或噪聲點 else 標記樣本p爲核心點,並創建新的簇C,並將p鄰域的全部點加入C for 樣本q in Neighbor(Eps, p)中全部未被處理的對象 do 按照鄰域樣本數量進行判斷 end for end if end if end for
層次聚類是一種很直觀的算法,就是一層一層的對數據進行聚類操做,能夠自低向上進行合併聚類、也能夠自頂向下進行分裂聚類。
repeat
* | select ts_dencity_cluster(stamp, metric_val, metric_name)
上述輸出結果說明
* | select ts_hierarchical_cluster(stamp, metric_val, metric_name, 2)
* | select ts_hierarchical_cluster(stamp, metric_val, metric_name, 8)
上述輸出結果說明
* | select ts_similar_instance(stamp, metric_val, metric_name, 'machine_008_cpu')
返回結果
阿里雲日誌服務針對日誌提供了完整的解決方案,如下相關功能是日誌進階的必備良藥:
更多日誌進階內容能夠參考:日誌服務學習路徑。
糾錯或者幫助文檔以及最佳實踐貢獻,請聯繫:悟冥
問題諮詢請加釘釘羣:11775223
雙十一廣告:阿里雲雙十一1折拼團活動:已滿6人,都是最低折扣了
【滿6人】1核2G雲服務器99.5元一年298.5元三年 2核4G雲服務器545元一年 1227元三年
【滿6人】1核1G MySQL數據庫 119.5元一年
【滿6人】3000條國內短信包 60元每6月
參團地址:http://click.aliyun.com/m/1000020293/
做者: fight_ucas
原文連接 本文爲雲棲社區原創內容,未經容許不得轉載。