首屆AIOps挑戰賽——冠軍LogicMonitor-AI團隊方案分享
為了解決網際網路運維難題(故障發現、故障止損、故障修復、故障規避等),我們籌辦了AIOps挑戰賽,旨在藉助社群的力量,運用人工智慧演算法解決各類運維難題。挑戰賽網站於2017年12月1日上線了它的第一個挑戰賽——KPI異常檢測挑戰賽,發力解決運維領域最大的痛點之一——異常檢測。挑戰賽所用資料來自於搜狗、騰訊遊戲、eBay、百度、阿里巴巴等國內外一流網際網路公司的真實運維環境。挑戰賽吸引了三百多名選手組成的125支隊伍參加比賽,且最終有40支隊伍提交了比賽結果。經過4個月的初賽、1個月的決賽後,2018年5月19日於北京,舉行了AIOps挑戰賽決賽暨首屆AIOps研討會,進行了KPI異常檢測挑戰賽的決賽答辯,角逐出了冠亞季軍,分享了近10萬元的獎金池。
本文是冠軍團隊LogicMonitor-AI成員姚睿,應邀所作的關於其解決方案的總結。
異常檢測是智慧運維(AIOps)系統中一項基礎且重要功能,其旨在透過演算法自動地發現KPI時間序列資料中的異常波動,為後續的告警、自動止損、根因分析等提供決策依據。在實際場景下,由於異常點資料稀少,異常型別多樣以及KPI型別多樣,給異常檢測帶來了很大的挑戰。
本文整理了LogicMonitor-AI團隊在AIOps決賽暨首屆AIOps研討會中的分享內容,主要介紹了我們在AIOps異常檢測競賽中的演算法設計思路和實現細節。
團隊簡介
我們來自於雲智易控科技(LogicMonitor),LogicMonitor是基於SaaS模式的企業級IT效能監控平臺,提供業界領先的監控解決方案,目前服務全球超過1000家客戶。LogicMonitor-AI團隊主要專注於AIOps產品的研發,致力於推動AIOps在監控領域的落地。
接下來主要分三部分來介紹:
• 首先介紹這次競賽的背景和需求,在此基礎上給出我們方案的設計原則
• 第二部分會詳細介紹這次競賽中使用的演算法方案
• 最後探討方案的不足與改進計劃
有部分同學可能不是太瞭解競賽的規則,這裡先簡單介紹下。
問題描述
在競賽中,主辦方提供了兩份資料集,分別用作訓練和測試,資料集由若干KPI時間序列組成,這些資料都來源於真實的運維場景。訓練資料事先由運維人員手工標註出了異常段,要求根據訓練資料生成模型並對測試資料進行異常檢測(即對每個資料點標註是否為異常點)。
評估
透過對比測試集上模型的檢測結果與真實標註資料,計算F-Score作為演算法的評估標準,考察演算法的精準率和召回率。通常情況下,運維人員往往只關心異常檢測演算法能否檢測到某一連續異常區間,而非檢測到該異常區間的每一個異常點。因此,對於連續的異常段,規定了時效性視窗,只要在視窗內檢出異常點,那麼該異常段都算作成功檢出,否則都判為失敗。
考慮到演算法的實用性,競賽還補充了幾點規則:
• 禁用手工干預:在模型訓練階段,不允許手動地建立從“KPI曲線ID或KPI曲線計算得出的特徵”到“演算法和引數”的一一對映。即在模型訓練階段,不允許手動針對一條特定的KPI曲線進行演算法的選擇和引數的調優。
• 禁用未來資訊:不允許參賽演算法使用未來點的資訊對當前點的異常做出判斷
關於這兩點規則,放到實際應用場景下很好理解。在實際監控系統中,首先,KPI資料規模是非常大的,幾乎不可能針對每條KPI手工地去配置演算法、引數以及調優。那麼就要求演算法足夠的穩定和普適。其次,異常檢測往往需要實時地對資料點進行判定,自然也是無法利用未來資訊來幫助判定。
設計原則
基於以上需求分析,我們確立了以下幾條設計原則:
• 監督學習:因為資料本身是帶標註的,自然很適合用監督學習來進行訓練
• 自動化:為了避免手工干預,我們需要將整個機器學習流程設計為自動化的方式,同時在演算法模型選擇上儘量避免調參需求高的模型。實際上,在決賽中,我們全程是無法接觸到資料以及程式執行過程的,這一點也要求方案本身有較高的魯棒性。
• 流處理:按流處理的方式對測試資料進行特徵提取並實時進行異常檢測,避免使用到未來資料。在特徵方面,需要選擇能夠透過流式獲取到的特徵,避免使用批處理方式提取特徵。
在以上三點的基礎上,兼顧普適性:
• 框架通用,適用於相同場景下的其他資料集
• 實現簡單,流程清晰,易維護
• 效能良好,滿足真實生產環境需求
• 演算法表現穩定
我們將異常檢測作為二分類問題來處理,按照機器學習流程分為四個階段:預處理,特徵提取,模型訓練和最後的異常檢測。
技術棧方面,整個方案透過Python來進行實現,用到的主要工具包括:Keras, Numpy,Pandas和Sklearn。
在預處理過程中,我們首先面對的一個挑戰是樣本極度不平衡,這也是異常檢測問題的主要特點。如圖所示,在本次競賽中,異常樣本比例只有2%,遠遠低於正常樣本。在實際應用中,這個比例可能會更低。如果直接將樣本進行訓練,模型會傾向於將所有樣本預測為正常樣本,那麼將無法達到異常檢測的目的。
為了解決這個問題,我們嘗試了幾種方案:
1. 對正常樣本進行欠取樣以達到正負樣本1:1,實驗發現這種方案因為丟失了大量的樣本資訊,模型會出現比較嚴重的過擬合,泛化效能不佳
2. 欠取樣加整合學習。這種方式雖然效果有所提升,但由於每個基分類器的正確率很低,整合後的效果也不是很理想
3. 異常樣本過取樣以達到正負樣本1:1,最後透過閾值進行決策調整。實測下來,這種方式的結果比較理想,成為了我們的最終方案。
在需求分析中,我們提到了競賽評估標準中有時效性需求,即對於一段連續異常,我們需要在首個異常點出現的後的時效視窗內檢出異常點。這句話怎麼理解呢?我們來看上面這幅圖,圖中紅點表示發生了一段連續異常,藍色框表示時效視窗,基於規則,我們需要在藍框包含的樣本點檢出異常,否則後續異常點即使判斷正確也會視作失敗。
自然地,起始端的異常樣本點價值是遠遠大於後續樣本的,因此我們需要增強該類樣本的權重以提升其價值。結合前面提到的樣本均衡策略,樣本權重增強也是透過過取樣來實現的。
這是預處理階段的第二個關鍵點。
接下來我們來看特徵提取,時間序列的重要特點是在時間維度上的相關性,即上下文資訊。所以我們不宜直接將單個資料點作為樣本來訓練,而需要將上下文特徵提取出來。
異常往往意味著某個維度上的突變,可能是原始值的突變,也可能是均值、方差等統計量的突變,透過前後對比能夠很好的捕捉到這類變化。
考慮到這些特點,我們透過三種方式來獲取特徵:
第一類,透過滑動視窗,提取該視窗類資料的統計特徵
第二類,透過序列前後值的對比,得到對位元徵
第三類,結合滑動視窗和對比,得到比統計特徵
上圖示意了,在T時刻,透過三種方式獲取T時刻對應的不同特徵。
統計特徵方面,我們主要使用了均值、方差和分位數等
對位元徵方面,使用了差分和變化比例這兩種對比方式,差分代表了絕對變化,變化比例則是相對值。需要注意的是,變化比例在原始資料接近0時很容易出現畸變,所以某些場景下不是太好用。
另外我們選擇了不同的視窗寬度來進行特徵提取,所以總的特徵集是視窗寬度、統計特徵、對位元徵的交叉組合。
上圖右側是特徵提取的一個例子,將原始資料轉換到方差差分特徵空間後,異常樣本的辨識度明顯提升,這也利於後續模型訓練和識別。
關於模型,我們主要考量有兩點,第一能夠適應較大的樣本量,第二是能夠自適應地控制過擬合,因為樣本不均衡容易帶來嚴重的過擬合,還有一點是希望模型超引數夠少,儘量避免人工調參。
我們測試過三種模型:
第一個是IsolationForest,這是一種常用的異常檢測模型,但由於它對區域性異常不敏感,在這個問題上表現欠佳
第二個是隨機森林,作為一種整合模型,總體表現很穩定,泛化能力也不錯,實測結果略低於DNN
最終的選擇方案是深度學習模型,主要考慮到模型有足夠的表達能力,能適應大資料,泛化能力強。實測下來,表現也是非常的好。
這是我們最終使用的深度模型,有兩個全連線隱層和一個Sigmoid輸出層,兩個隱藏神經元數量都是128。透過Dropout和L1正則化控制模型的過擬合,以增強泛化能力。
DNN輸出資料點的異常機率,再透過閾值進行二分類。閾值如何確定呢?以F-Score作為評估標準,透過網格搜尋的方式確定最優閾值。這裡使用閾值的目的主要是為了修正樣本不均帶來的偏斜。
在普適性上,我們做到了以下幾點:
• 通用:在競賽中,所有KPI的異常檢測都能透過一套框架來解決,這套方案也可以很容易地推廣到類似的場景和問題,且容易實現和維護。
• 自動:整套流程無需人工介入,演算法模型有較高的自適應能力
• 效能:對於普通監控資料(分鐘級取樣),單個KPI的模型訓練時間在3分鐘以內(單機,單GPU),流處理情況下單資料點檢測時間在毫秒級,基本滿足生產環境需求。
• 穩定:在不同資料集上,演算法的評估分數非常一致和穩定
最後來看一下這套演算法方案的評估結果,上圖列出了演算法在預賽訓練集、預賽測試集以及決賽測試集上的F-Score得分,在三個不同資料集上,得分穩定在0.8左右,表現非常穩定,有不錯的泛化能力。
在測試集標註公開以後,我們對演算法的誤報、漏報情況做過分析,發現目前還存在這樣一些不足:
• 有些異常模式只存在於測試集中,模型無法從訓練集中學習出該模式,這類異常容易出現漏報
• 部分異常在區域性不明顯,只能透過週期同比的方式發現,這類也容易出現漏報
針對這些問題,我們後續計劃從以下幾點對方案做進一步的最佳化:
• 引入週期或時間相關的特徵,比如週期同比、星期、小時等維度,用於發現這類維度上異常
• 整合無監督模型,以適應異常樣本極度稀少或分佈不均的情況
• 提供整合業務規則的能力,以支援業務規則下的異常檢測
本文以AIOps挑戰賽為背景,介紹了LogicMonitor-AI團隊對異常檢測的理解和思考,分享了詳細的演算法方案。該方案通用性強,高效且演算法表現穩定,適用於有標註的KPI異常檢測問題。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31562044/viewspace-2285169/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 機器學習識別植物疾病,這是CVPR挑戰賽冠軍團隊的解決方案機器學習
- ECCV 2020 GigaVision挑戰賽雙賽道冠軍DeepBlueAI團隊技術分享AI
- [原創]乾貨 | 雲安全挑戰賽線上熱身賽冠軍戰隊解題分享
- ICCV 2021 口罩人物身份鑑別全球挑戰賽冠軍方案分享
- ICCV 2021口罩人物身份鑑別全球挑戰賽冠軍方案分享
- 百度,關於技術理想與對未來的期待丨首屆搜尋技術創新挑戰賽 x 冠軍團隊專訪
- 百度搜尋首屆技術創新挑戰賽資料分享
- 200萬獎金全球招募參賽團隊,第二屆京東X機器人挑戰賽再燃戰火機器人
- 恭喜天翼雲“翼起飛”戰隊在CCF國際AIOps挑戰賽中奪得亞軍!AI
- 一不小心晉級“CCF國際AIOps挑戰賽”決賽AI
- 快手聯手清華舉辦大資料挑戰賽 全球 1392 支隊伍決出冠軍大資料
- 第二屆學習影象壓縮挑戰賽
- 2022 雲原生程式設計挑戰賽圓滿收官,見證冠軍戰隊的誕生程式設計
- 當CV碰上無人機:ICCV 2019 VisDrone挑戰賽冠軍解決方案解讀無人機
- NeurIPS 2018 AutoML Phase1 冠軍隊伍 DeepSmart 團隊解決方案分享TOML
- CDA學員參加首屆阿里雲安全演算法挑戰賽獲季軍阿里演算法
- 愛奇藝多模態人物識別挑戰賽TOP3團隊經驗分享:明確目標,奮力前行
- 首屆中國區塊鏈開發大賽將閉關 頂級研發團隊聚首蕭山區塊鏈
- PAKDD 2019 AutoML3+競賽結果公佈,解讀冠軍團隊解決方案TOML
- NeurIPS 2018 AutoML挑戰賽落幕:印度團隊第一,清華第二TOML
- 開發團隊面臨的 3 大安全挑戰
- Kaggle座頭鯨識別賽,TOP10團隊的解決方案分享
- 用AI反制AI詐騙,合合資訊獲全球AI攻防挑戰賽金融場景賽道冠軍AI
- 專訪滴滴演算法大賽冠軍團隊:迴歸樹模型取勝演算法模型
- 第八屆“網際網路+”大賽 | 雲原生賽道邀你來挑戰
- 工程師在創業團隊的技術挑戰工程師創業團隊
- 超越挑戰|綠盟科技助力江蘇銀行業和保險業 首屆網路安全競賽圓滿收官行業
- 聯想高校AI精英挑戰賽總冠軍出爐!助力中國迎來智慧變革AI
- 百度視覺團隊獲世界最大規模目標檢測競賽冠軍視覺
- 第三屆“強網杯”全國網路安全挑戰賽圓滿落幕
- 官宣!第三屆雲原生程式設計挑戰賽正式啟動!程式設計
- 第二屆黃河流域網路安全技能挑戰賽-esay_encrypt
- 首屆“AIIA杯”人工智慧巡迴賽起航,5大賽區邀你來戰AI人工智慧
- 中國AI晶片公司霸榜谷歌Waymo自動駕駛演算法挑戰賽!五個賽道,四項冠軍AI晶片谷歌自動駕駛演算法
- xss挑戰賽writeup
- 超600支隊伍報名!首屆“強基杯”資料安全技能競賽即將開賽
- 首屆AI奧數競賽方案公佈:4支獲獎隊伍,竟都選擇國產模型DeepSeekMathAI模型
- 平臺運維團隊面臨的主要挑戰是什麼?運維