陳適宜
摘要:為了提高異常檢測(cè)的準(zhǔn)確性和高效性,提出了基于xgboost的異常檢測(cè)算法。首先對(duì)異常檢測(cè)當(dāng)前遇到的挑戰(zhàn)進(jìn)行分析,指出缺少樣本和模型泛化是異常檢測(cè)中的難點(diǎn)。在此基礎(chǔ)上設(shè)計(jì)了異常注入算法,利用3sigma原則對(duì)數(shù)據(jù)集進(jìn)行擴(kuò)充;然后設(shè)計(jì)特征提取器,針對(duì)正常數(shù)據(jù)和異常數(shù)據(jù)的特點(diǎn)設(shè)計(jì)相關(guān)特征;最后選擇xgboost模型對(duì)時(shí)序數(shù)據(jù)進(jìn)行異常檢測(cè)。此異常檢測(cè)流程提高了異常檢測(cè)的準(zhǔn)確性和泛化能力。通過在KPI公共數(shù)據(jù)集上進(jìn)行實(shí)驗(yàn),驗(yàn)證了該設(shè)計(jì)的準(zhǔn)確性和有效性。
關(guān)鍵詞: 異常檢測(cè); xgboost; 異常注入; 特征提取; 智能運(yùn)維
中圖分類號(hào): TP311? ? ? ? 文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1009-3044(2021)02-0188-02
Abstract:In order to improve the accuracy and efficiency of anomaly detection, an anomaly detection algorithm based on xgboost is proposed. First, analyze the current challenges of anomaly detection, and point out that lack of samples and model generalization are the difficulties in anomaly detection. On this basis, an anomaly injection algorithm is designed, and the data set is expanded using the 3sigma principle; then a feature extractor is designed to design related features according to the characteristics of normal data and abnormal data; finally, the xgboost model is selected to perform anomaly detection on time series data. This anomaly detection process improves the accuracy and generalization ability of anomaly detection. Through experiments on the KPI public data set, the accuracy and effectiveness of the design are verified.
Key words:anomaly detection; xgboost;anomaly injection;feature extraction;AIOPS
計(jì)算機(jī)硬件和軟件的飛速發(fā)展帶來了功能強(qiáng)大的應(yīng)用,但是由于硬件、軟件和人為等原因,程序時(shí)刻都有可能發(fā)生故障。及時(shí)發(fā)現(xiàn)并快速介入故障,能最小化對(duì)用戶體驗(yàn)的損害。為了能夠及時(shí)發(fā)現(xiàn)故障,需要對(duì)系統(tǒng)進(jìn)行連續(xù)監(jiān)控,系統(tǒng)監(jiān)控從數(shù)據(jù)分析的角度來看,即意味著需要不間斷地監(jiān)控大量時(shí)序數(shù)據(jù),以檢測(cè)出潛在的異常。由于需要監(jiān)控的時(shí)序數(shù)據(jù)規(guī)模很大,通過人工的方式是幾乎不可能的,這就要求我們使用機(jī)器學(xué)習(xí)和數(shù)據(jù)挖掘技術(shù)進(jìn)行自動(dòng)異常檢測(cè)。
異?;蛘弋惓|c(diǎn)是指與其他數(shù)據(jù)明顯不同的數(shù)據(jù)點(diǎn),異常檢測(cè)旨在發(fā)現(xiàn)這些異常點(diǎn)。通常,時(shí)序數(shù)據(jù)是由一個(gè)或多個(gè)反映系統(tǒng)功能或業(yè)務(wù)能力的應(yīng)用程序創(chuàng)建的,當(dāng)這些應(yīng)用程序發(fā)生行為異常時(shí),就會(huì)產(chǎn)生異常點(diǎn)。準(zhǔn)確的異常檢測(cè)可以快速準(zhǔn)確的定位故障并進(jìn)行故障排除,對(duì)入侵檢測(cè)、信用卡欺詐、醫(yī)療診斷等[1]等實(shí)際應(yīng)用有重大意義。但是,當(dāng)前時(shí)序數(shù)據(jù)的自動(dòng)化異常檢測(cè)服務(wù)面臨著許多挑戰(zhàn)。
挑戰(zhàn)1:缺少樣本。在實(shí)際中,故障發(fā)生的概率較低,從而導(dǎo)致很難積累大量異常樣本。這就要求我們必須具備自動(dòng)化構(gòu)建樣本的能力以支持異常檢測(cè)模型的訓(xùn)練。
挑戰(zhàn)2:模型泛化。時(shí)間序列有不同的模式:周期型、穩(wěn)定型和無(wú)規(guī)律波動(dòng)型,系統(tǒng)需要能夠?qū)@些不同模式的時(shí)間序列識(shí)別出異常。
為了解決上述問題,本文開發(fā)了一種準(zhǔn)確、高效、通用的異常檢測(cè)方法,解決了樣本缺少與模型泛化問題。本文重點(diǎn)研究了針對(duì)時(shí)間序列數(shù)據(jù)的異常檢測(cè)服務(wù)的機(jī)器學(xué)習(xí)算法,包括樣本增強(qiáng),樣本特征設(shè)計(jì)和基于xgboost的異常檢測(cè)。
1 基于3sigma原理的異常注入算法
基于機(jī)器學(xué)習(xí)的異常檢測(cè)算法缺乏訓(xùn)練數(shù)據(jù),數(shù)據(jù)集中包含的異常點(diǎn)比例總是遠(yuǎn)遠(yuǎn)少于正常點(diǎn),這阻礙了算法的訓(xùn)練和實(shí)用性,同時(shí),依賴人工標(biāo)注異常數(shù)據(jù)工作量大且不易完成。雖然可以通過傳統(tǒng)的機(jī)器學(xué)習(xí)過采樣或欠采樣來動(dòng)態(tài)調(diào)整正負(fù)樣本比例,但是過采樣會(huì)使異常樣本過于單一,最終導(dǎo)致分類器過擬合。因此,本文開發(fā)了一種自動(dòng)異常注入算法,在保證異常注入的隨機(jī)性和多樣性的同時(shí)有效地?cái)U(kuò)充數(shù)據(jù)集。
1.1 3sigma原理
3sigma原則[2]是一種最常使用的處理異常值數(shù)據(jù)的方法。3sigma原理可以簡(jiǎn)單描述為:若數(shù)據(jù)服從正態(tài)分布,則異常值被定義為一組結(jié)果值中與平均值的偏差超過三倍標(biāo)準(zhǔn)差的值。即在正態(tài)分布的假設(shè)下,距離平均值三倍標(biāo)準(zhǔn)差之外的值出現(xiàn)的概率很小,因此可認(rèn)為是異常值。數(shù)值分布在[(μ-3σ,μ+3σ)]中的概率為0.9973其中,[μ]為平均值,[σ]為標(biāo)準(zhǔn)差。
一般可以認(rèn)為,數(shù)據(jù)的取值幾乎全部集中在[(μ-3σ,μ+3σ)]區(qū)間內(nèi),超出這個(gè)范圍的可能性僅占不到0.3%,這些超出該范圍的數(shù)據(jù)可以認(rèn)為是異常值。
1.2 基于3sigma原理的異常注入算法
根據(jù)3sigma原理,我們可以根據(jù)原始數(shù)據(jù)生成異常數(shù)據(jù),生成的異常數(shù)據(jù)插入原始數(shù)據(jù)中可以生成異常樣本。通常異常的產(chǎn)生會(huì)持續(xù)一段時(shí)間,然后逐步恢復(fù),恢復(fù)過程會(huì)影響異常兩側(cè)的值。異常注入算法步驟如下:
首先給定一段時(shí)序值S,確定注入的異常個(gè)數(shù)N,將時(shí)序數(shù)據(jù)劃分為N塊;對(duì)每一塊數(shù)據(jù)X進(jìn)行異常注入:
①隨機(jī)選定一個(gè)點(diǎn)Xi作為異常種子;
②設(shè)定異常點(diǎn)數(shù)目范圍[2,15],基于此范圍,產(chǎn)生隨機(jī)異常點(diǎn)數(shù)anomaly_count;
③異常點(diǎn)隨機(jī)分布在異常種子兩側(cè),左側(cè)和右側(cè)的數(shù)目均隨機(jī)產(chǎn)生;
④異常數(shù)據(jù)的產(chǎn)生基于異常種子點(diǎn)兩側(cè)的值,設(shè)定種子點(diǎn)兩側(cè)范圍區(qū)間為[15,30],兩側(cè)的數(shù)目由上述區(qū)間隨機(jī)產(chǎn)生,異常點(diǎn)的基礎(chǔ)數(shù)據(jù)anomaly_base_data。
接下來確定異常點(diǎn)的數(shù)據(jù),基于3sigma原理,異常點(diǎn)的大小計(jì)算如下:
①產(chǎn)生一個(gè)隨機(jī)數(shù),若為奇數(shù),該次為異常上漲,否則異常下跌;
②利用異常基礎(chǔ)數(shù)據(jù)產(chǎn)生異常值。根據(jù)數(shù)據(jù)波動(dòng)范圍的不同,可將數(shù)據(jù)分為不同的類型比如成功率、延時(shí)型和0值突刺型,三種類型數(shù)據(jù)特征如下:成功率型,取值范圍大多在40-100之間,少部分在0.5-1之間,數(shù)據(jù)波動(dòng)小,標(biāo)準(zhǔn)差較小,經(jīng)常為0;延時(shí)型,在一定范圍內(nèi)波動(dòng),波動(dòng)較小,標(biāo)準(zhǔn)差基本不隨時(shí)間變化;0值突刺型,多為0值,偶有突刺,突刺不一定是異常值。根據(jù)不同類型的數(shù)據(jù)取不同的均值和方差生成異常數(shù)據(jù)。
異常點(diǎn)會(huì)引起異常兩側(cè)的值有波動(dòng),設(shè)定一個(gè)影響范圍,隨機(jī)產(chǎn)生影響的范圍大小,使用3sigma原理生成異常點(diǎn)附近的波動(dòng)值。
確定好左右兩側(cè)影響范圍后,隨機(jī)產(chǎn)生異常衰減的方式,分三種:簡(jiǎn)單移動(dòng)平均、加權(quán)移動(dòng)平均、指數(shù)加權(quán)移動(dòng)平均。左側(cè)影響的值的產(chǎn)生由其右側(cè)的值移動(dòng)平均產(chǎn)生,對(duì)于右側(cè)影響范圍的值的確定,直接由左側(cè)的值移動(dòng)平均產(chǎn)生。
2 特征提取
2.1 孤立森林
孤立森林,由周志華教授等人于2008年提出[3]。在孤立森林中,認(rèn)為異常是“少且不同于其他值”,因此異常值更容易被隔離。在生成隨機(jī)樹的過程中,遞歸隨機(jī)地重復(fù)進(jìn)行數(shù)據(jù)集的化分,在這種隨機(jī)分割的策略下,異常點(diǎn)通常具有較短的路徑。
2.2 特征設(shè)計(jì)
由于數(shù)據(jù)值大小、波動(dòng)情況均有所不同,設(shè)計(jì)提取數(shù)據(jù)特征是提高異常檢測(cè)泛化能力的前提。騰訊Metis[4]將其分為三種特征,一是統(tǒng)計(jì)特征,包括方差、均值、偏度等統(tǒng)計(jì)學(xué)特征;二是擬合特征,包括如移動(dòng)平均、指數(shù)加權(quán)移動(dòng)平均等特征;三是分類特征,包含一些自相關(guān)性、互相關(guān)性等特征。參考Metis的特征提取方法,本章設(shè)計(jì)了一套特征工程,區(qū)別于上述特征提取方法,本文對(duì)提取的結(jié)果用孤立森林進(jìn)行了一層特征抽象,使得模型的泛化能力更強(qiáng),所選擇的特征及說明如表1所示。
3 基于xgboost的異常檢測(cè)
Xgboost[5]是基于決策樹的集成機(jī)器學(xué)習(xí)算法。2015年Kaggle發(fā)布的29個(gè)獲勝方法里有17個(gè)用了Xgboost。Xgboost具有高可擴(kuò)展性和高計(jì)算速度,廣泛被應(yīng)用在實(shí)際中。使用Xgboost進(jìn)行異常檢測(cè)流程如下圖所示。
在訓(xùn)練階段,首先將進(jìn)行異常注入的數(shù)據(jù)集標(biāo)注好,然后通過章節(jié)2設(shè)計(jì)的特征提取器構(gòu)建特征數(shù)據(jù)集,再將特征數(shù)據(jù)集輸入xgboost模型訓(xùn)練,最后保存訓(xùn)練好的模型。在測(cè)試階段調(diào)用保存好的xgboost分類模型進(jìn)行預(yù)測(cè),最終得到異常檢測(cè)結(jié)果。
4 實(shí)驗(yàn)結(jié)果
我們使用KPI數(shù)據(jù)集來評(píng)估我們的模型。KPI由AIOPS數(shù)據(jù)競(jìng)賽發(fā)布[6-7],通常用于評(píng)估時(shí)間序列異常檢測(cè)的性能。該數(shù)據(jù)集由多個(gè)KPI曲線組成,這些曲線從各個(gè)互聯(lián)網(wǎng)公司(包括搜狗,騰訊等)收集。異常點(diǎn)被標(biāo)記為正樣本,正常點(diǎn)被標(biāo)記為負(fù)、正樣本。本章從精確性、召回率和F1分?jǐn)?shù)來表示模型的準(zhǔn)確性。
首先,將KPI數(shù)據(jù)集分為訓(xùn)練集和測(cè)試集,訓(xùn)練集和測(cè)試集比例為7:3。經(jīng)過章1的異常注入算法處理訓(xùn)練集并標(biāo)注,特征提取后輸入xgboost進(jìn)行訓(xùn)練。測(cè)試集使用FFT[8]、Twitter-AD[9]、xgboost異常檢測(cè)模型結(jié)果如表2。
5 總結(jié)
智能化以及數(shù)據(jù)化是未來 IT 運(yùn)維的總體趨勢(shì),互聯(lián)網(wǎng)業(yè)務(wù)的連續(xù)性保障的方方面面將依靠智能運(yùn)維。異常檢測(cè)是智能運(yùn)維的首推場(chǎng)景。本文首先介紹了基于3sigma原理的異常注入算法,接著介紹了異常檢測(cè)的特征提取器,最后確定基于xgboost異常檢測(cè)的整體流程。將設(shè)計(jì)的特征提取器應(yīng)用到數(shù)據(jù)集上得到特征數(shù)據(jù)集,特征數(shù)據(jù)集輸入xgboost進(jìn)行訓(xùn)練和測(cè)試,與現(xiàn)有模型相比獲得了更好性能。
參考文獻(xiàn):
[1] C. Aggarwal. Outlier Analysis. Springer New York, 2013.
[2]? https://www.cnblogs.com/hellochennan/p/6706884.html.
[3]? Liu, Fei Tony, Kai Ming Ting, and Zhi-Hua Zhou. “Isolation forest.” Data Mining, 2008. ICDM08. Eighth IEEE International Conference on. IEEE, 2008.
[4]? https://github.com/bchretien/metis4.
[5] Chen T , Guestrin C . XGBoost: A Scalable Tree Boosting System[J]. 2016.
[6]? [n. d.]. http://iops.ai/dataset_detail/?id=10.
[7] [n. d.]. http://iops.ai/competition_detail/?competition_id=5&flag=1.
[8] Faraz Rasheed, Peter Peng, Reda Alhajj, and Jon Rokne. 2009. Fourier transform based spatial outlier mining. In International Conference on Intelligent Data Engineering and Automated Learning. Springer, 317–324.
[9] Owen Vallis, Jordan Hochenbaum, and Arun Kejariwal. 2014. A Novel Technique for Long-Term Anomaly Detection in the Cloud. In 6th USENIX Workshop on Hot Topics in Cloud Computing (HotCloud 14). USENIX Association, Philadelphia, PA.
【通聯(lián)編輯:唐一東】