在實(shí)際的運(yùn)維場景中,構(gòu)建一個異常檢測系統(tǒng)往往需要兩個角色共同參與:領(lǐng)域?qū)<液退惴ㄩ_發(fā)人員。領(lǐng)域?qū)<乙簿褪俏覀兊倪\(yùn)維人員,他們對KPI曲線的行為很熟悉,可以通過觀察KPI曲線并結(jié)合自己的領(lǐng)域知識,判斷KPI曲線是否出現(xiàn)異常;算法開發(fā)人員負(fù)責(zé)構(gòu)建異常檢測系統(tǒng),他們熟悉異常檢測器(算法),但是實(shí)際中有各種不同類型的KPI曲線需要維護(hù),所以需要為不同類型的KPI曲線選擇合適的異常檢測器以及合適的算法參數(shù)。
在實(shí)際構(gòu)建異常檢測系統(tǒng)時,首先需要運(yùn)維人員結(jié)合自己的領(lǐng)域知識向算法開發(fā)人員描述異常,然后開發(fā)人員根據(jù)這些描述來為KPI曲線選擇合適的檢測器和算法參數(shù),接著領(lǐng)域?qū)<腋鶕?jù)這些檢測器的檢測結(jié)果向開發(fā)人員反饋,來進(jìn)一步優(yōu)化檢測器。所以實(shí)際中經(jīng)常需要經(jīng)過多次迭代才能開發(fā)出可用的異常檢測系統(tǒng),有時還會出現(xiàn)最終開發(fā)失敗的例子,這是因?yàn)椋?/p>
1.運(yùn)維人員難以事先給出準(zhǔn)確、量化的異常定義
2.選擇和綜合不同的檢測器需要很多人力
3.檢測器算法復(fù)雜,參數(shù)調(diào)節(jié)不直觀
實(shí)際中經(jīng)常需要經(jīng)過多次迭代才能開發(fā)出可用的異常檢測系統(tǒng),有時還會出現(xiàn)最終開發(fā)失敗的例子。因此,我們就會問,有沒有一個可以自動選擇異常檢測器和自動調(diào)節(jié)算法參數(shù)的系統(tǒng)呢?答案是有!,我們實(shí)驗(yàn)室的研究成果:基于機(jī)器學(xué)習(xí)的KPI自動化異常檢測系統(tǒng)(Opprentice)就是針對它設(shè)計(jì)的,下文將主要介紹Opprentice 的設(shè)計(jì)思想以及設(shè)計(jì)框架。
設(shè)計(jì)思想
Opprentice (Operator's Apprentice)的主要思想就是跟著運(yùn)維人員從歷史數(shù)據(jù)中學(xué)習(xí),運(yùn)維人員就像是一個“師傅”,將自己的領(lǐng)域知識“教“給Opprentice,然后Opprentice根據(jù)“學(xué)”到的知識來自動選擇合適的異常檢測器和算法參數(shù)。如下圖所示,運(yùn)維人員首先在歷史的KPI曲線上標(biāo)記出異常,接著Opprentice 使用十幾種不同類型的檢測器提取出上百個異常特征,此時有了人工標(biāo)記的數(shù)據(jù)和異常特征,我們就可以將異常檢測問題轉(zhuǎn)化成機(jī)器學(xué)習(xí)中監(jiān)督式的分類問題,將提取出的特征作為機(jī)器學(xué)習(xí)算法的輸入,通過分類算法將KPI曲線上的點(diǎn)分為正常和異常,從而實(shí)現(xiàn)了異常檢測。
設(shè)計(jì)框架
Opprentice主要由兩部分組成:離線訓(xùn)練分類器和在線檢測,在離線訓(xùn)練分類器部分,首先運(yùn)維人員使用我們開發(fā)的異常標(biāo)注工具,方便快速的標(biāo)注出KPI曲線上的異常數(shù)據(jù),并且設(shè)置期望Opprentice達(dá)到的準(zhǔn)確率(precision)和召回率(recall),然后Opprentice會使用十幾種不同類型的檢測器提取出KPI曲線的特征,其中每種檢測器都有多種不同的參數(shù)配置,因此最終會提取出上百個異常特征。因?yàn)樘崛〕龅纳习賯€異常特征中會存在無關(guān)特征和冗余特征,一些機(jī)器學(xué)習(xí)算法使用包含有這些特征的數(shù)據(jù)訓(xùn)練模型時準(zhǔn)確度會降低,為了解決這個問題,我們選擇了一種集成學(xué)習(xí)算法(ensemble learning algorithm)來訓(xùn)練分類器:隨機(jī)森林,隨機(jī)森林算法使用了多棵決策樹,最終的結(jié)果是由每棵決策樹的結(jié)果投票決定的,并且訓(xùn)練決策樹的特征和數(shù)據(jù)都只是采樣了整體特征和數(shù)據(jù)的一部分,因此使用隨機(jī)森林訓(xùn)練模型時,無關(guān)特征和冗余特征不會影響算法的性能。最后,將提取出的異常特征,運(yùn)維人員的標(biāo)注數(shù)據(jù)和準(zhǔn)確性傾向作為輸入,訓(xùn)練出異常分類器。
在線檢測部分中,首先對于新的數(shù)據(jù)點(diǎn)進(jìn)行特征提取,然后用訓(xùn)練出的分類器判斷數(shù)據(jù)點(diǎn)是否異常。在實(shí)際中,新的KPI數(shù)據(jù)中往往會出現(xiàn)一些歷史數(shù)據(jù)中沒有出現(xiàn)過的異常類型,為了讓分類器可以適應(yīng)新出現(xiàn)的異常,就需要運(yùn)維人員定期的對最新的KPI數(shù)據(jù)進(jìn)行異常標(biāo)記,Opprentice會定期訓(xùn)練新的模型來更新分類器。
離線訓(xùn)練分離器
我們使用了來自百度和清華校園網(wǎng)的數(shù)個月的真實(shí)數(shù)據(jù)對系統(tǒng)的性能進(jìn)行了驗(yàn)證,下面四幅圖是在四個不同類型的KPI數(shù)據(jù)上,Opprentice使用的隨機(jī)森林模型跟其它檢測器的性能對比,可以看出Opprentice均取得了優(yōu)異的結(jié)果。
總結(jié)
Opprentice將異常檢測問題轉(zhuǎn)換成了機(jī)器學(xué)習(xí)中的監(jiān)督式分類問題,使用運(yùn)維人員的標(biāo)注數(shù)據(jù),在歷史數(shù)據(jù)中訓(xùn)練出分類模型來自動構(gòu)建異常檢測系統(tǒng),從而解決了異常檢測器的選擇和算法參數(shù)調(diào)整的難題,為復(fù)雜檢測器的實(shí)際應(yīng)用提供了自動化的框架。
(審核編輯: 林靜)
分享