當前位置:
首頁 > 最新 > 基於機器學習的KPI自動化異常檢測系統

基於機器學習的KPI自動化異常檢測系統

導讀

今天給大家介紹Netman實驗室在異常檢測領域的研究成果:基於機器學習的KPI自動化異常檢測系統(Opprentice)。在實際生產環境中,異常檢測系統的痛點就是異常檢測演算法的選擇以及演算法參數的調整,這個過程往往耗費大量的人力和時間,但是往往效果無法達到預期,Opprentice主要針對這類難題設計,通過將異常檢測問題轉換為監督式的機器學習問題,實現了異常檢測演算法的自動選擇和演算法參數的自動調整。

如何構建一個異常檢測系統?

在實際的運維場景中,構建一個異常檢測系統往往需要兩個角色共同參與:領域專家演算法開發人員。領域專家也就是我們的運維人員,他們對KPI曲線的行為很熟悉,可以通過觀察KPI曲線並結合自己的領域知識,判斷KPI曲線是否出現異常;演算法開發人員負責構建異常檢測系統,他們熟悉異常檢測器(演算法),但是實際中有各種不同類型的KPI曲線需要維護,所以需要為不同類型的KPI曲線選擇合適的異常檢測器以及合適的演算法參數。

在實際構建異常檢測系統時,首先需要運維人員結合自己的領域知識向演算法開發人員描述異常,然後開發人員根據這些描述來為KPI曲線選擇合適的檢測器和演算法參數,接著領域專家根據這些檢測器的檢測結果向開發人員反饋,來進一步優化檢測器。所以實際中經常需要經過多次迭代才能開發出可用的異常檢測系統,有時還會出現最終開發失敗的例子,這是因為:

運維人員難以事先給出準確、量化的異常定義

選擇和綜合不同的檢測器需要很多人力

檢測器演算法複雜,參數調節不直觀

實際中經常需要經過多次迭代才能開發出可用的異常檢測系統,有時還會出現最終開發失敗的例子。因此,我們就會問,有沒有一個可以自動選擇異常檢測器和自動調節演算法參數的系統呢?答案是有!,我們實驗室的研究成果:基於機器學習的KPI自動化異常檢測系統(Opprentice)就是針對它設計的,下文將主要介紹Opprentice 的設計思想以及設計框架。

設計思想

Opprentice (Operator s Apprentice)的主要思想就是跟著運維人員從歷史數據中學習,運維人員就像是一個「師傅」,將自己的領域知識「教「給Opprentice,然後Opprentice根據「學」到的知識來自動選擇合適的異常檢測器和演算法參數。如下圖所示,運維人員首先在歷史的KPI曲線上標記出異常,接著Opprentice 使用十幾種不同類型的檢測器提取出上百個異常特徵,此時有了人工標記的數據和異常特徵,我們就可以將異常檢測問題轉化成機器學習中監督式的分類問題,將提取出的特徵作為機器學習演算法的輸入,通過分類演算法將KPI曲線上的點分為正常和異常,從而實現了異常檢測。

設計框架

Opprentice主要由兩部分組成:離線訓練分類器在線檢測,在離線訓練分類器部分,首先運維人員使用我們開發的異常標註工具,方便快速的標註出KPI曲線上的異常數據,並且設置期望Opprentice達到的準確率(precision)和召回率(recall),然後Opprentice會使用十幾種不同類型的檢測器提取出KPI曲線的特徵,其中每種檢測器都有多種不同的參數配置,因此最終會提取出上百個異常特徵。因為提取出的上百個異常特徵中會存在無關特徵和冗餘特徵,一些機器學習演算法使用包含有這些特徵的數據訓練模型時準確度會降低,為了解決這個問題,我們選擇了一種集成學習演算法(ensemble learning algorithm)來訓練分類器:隨機森林,隨機森林演算法使用了多棵決策樹,最終的結果是由每棵決策樹的結果投票決定的,並且訓練決策樹的特徵和數據都只是採樣了整體特徵和數據的一部分,因此使用隨機森林訓練模型時,無關特徵和冗餘特徵不會影響演算法的性能。最後,將提取出的異常特徵,運維人員的標註數據和準確性傾向作為輸入,訓練出異常分類器。在線檢測部分中,首先對於新的數據點進行特徵提取,然後用訓練出的分類器判斷數據點是否異常。在實際中,新的KPI數據中往往會出現一些歷史數據中沒有出現過的異常類型,為了讓分類器可以適應新出現的異常,就需要運維人員定期的對最新的KPI數據進行異常標記,Opprentice會定期訓練新的模型來更新分類器。

我們使用了來自百度和清華校園網的數個月的真實數據對系統的性能進行了驗證,下面四幅圖是在四個不同類型的KPI數據上,Opprentice使用的隨機森林模型跟其它檢測器的性能對比,可以看出Opprentice均取得了優異的結果。

總結

Opprentice將異常檢測問題轉換成了機器學習中的監督式分類問題,使用運維人員的標註數據,在歷史數據中訓練出分類模型來自動構建異常檢測系統,從而解決了異常檢測器的選擇和演算法參數調整的難題,為複雜檢測器的實際應用提供了自動化的框架。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 機器學習 的精彩文章:

除了 Python,這些語言寫的機器學習項目也很牛
醫療行業如何應用機器學習技術?看看美國最頂尖的五家醫院
機器學習不神秘!手把手教你用R語言打造文本分類器
PHPer如何快速入門機器學習?

TAG:機器學習 |

您可能感興趣

機器學習——局部異常檢測
利用機器學習檢測HTTP惡意外連流量
基於機器學習的WEB攻擊分類檢測模型
機器學習實踐-DGA檢測
NASA研發飛機機身機器人自動檢測系統
Python 環境下的自動化機器學習超參數調優
DTalk|自動化機器學習-人工智慧的未來
智鈾科技完成Pre-A輪融資,將持續優化自動機器學習平台
EDR軟體如何使用機器學習的方法檢測惡意軟體
基於機器學習的WebShell檢測方法與實現
MIT新研究:基於基本運動能力讓機器人自主學習,感知世界
基於機器學習的CC攻擊檢測技術研究與應用報告
KNN演算法的機器學習基礎
機器學習方法檢測癌症基因組圖譜中激活的Ras信號通路
基於Python的自動特徵工程——教你如何自動創建機器學習特徵
吳鶴意:NLP機器學習模型安全性及實踐
用Python 實現的基礎機器學習演算法
UPS是這樣利用AI、機器學習和大數據優化業務的
機器學習之於IOT淺見
Twitter 新科技,使用機器學習自動裁剪照片