申罕驥 付翔 李俊
(*中國(guó)科學(xué)院計(jì)算機(jī)網(wǎng)絡(luò)信息中心 北京100190)
(**中國(guó)科學(xué)院大學(xué) 北京100049)
(***北京藍(lán)天前沿科技創(chuàng)新中心 北京100085)
隨著信息時(shí)代的轉(zhuǎn)變,信息系統(tǒng)的數(shù)據(jù)量呈現(xiàn)爆炸式增長(zhǎng),而基于分布式系統(tǒng),由于其組件的異構(gòu)性、開(kāi)放性(允許增加或替換組件)、安全性、可伸縮性(用戶數(shù)量增加時(shí)能正常運(yùn)行的能力)、故障處理及組件的并發(fā)性,越來(lái)越受到業(yè)界重視,其產(chǎn)生的日志數(shù)據(jù)使傳統(tǒng)的人工日志檢測(cè)及分析方法已不可接受。檢測(cè)手段的日益更新,例如機(jī)器學(xué)習(xí)的應(yīng)用,使得從大量的日志中檢測(cè)異常日志變得可行,檢測(cè)效率及準(zhǔn)確率等得到不同程度的提高。
本文的主要貢獻(xiàn)和創(chuàng)新點(diǎn)是:(1)針對(duì)大數(shù)據(jù)平臺(tái)日志數(shù)據(jù)集特點(diǎn),提出一種新的思路對(duì)數(shù)據(jù)特征分布不平衡的日志進(jìn)行一系列處理,設(shè)計(jì)了基于邏輯回歸監(jiān)督學(xué)習(xí)的大樣本日志異常檢測(cè)優(yōu)化方法。該方法易理解、處理流程較簡(jiǎn)單,能廣泛應(yīng)用于大數(shù)據(jù)平臺(tái)日志。(2)針對(duì)大樣本日志異常檢測(cè)效率問(wèn)題,通過(guò)正則表達(dá)式、向量化處理和邏輯回歸監(jiān)督學(xué)習(xí)算法實(shí)現(xiàn)對(duì)異常檢測(cè)模型的訓(xùn)練和優(yōu)化,并采用真實(shí)數(shù)據(jù)集和不同的測(cè)試指標(biāo)對(duì)模型進(jìn)行了參數(shù)訓(xùn)練,實(shí)驗(yàn)驗(yàn)證此方法獲取的模型能夠達(dá)到較優(yōu)的檢測(cè)結(jié)果。(3)經(jīng)實(shí)驗(yàn)對(duì)比,本文最終的模型方法在召回率、精確率、F1 值方面呈現(xiàn)較好的結(jié)果。
目前日志模板抽取研究主要有兩種類型技術(shù)路線:基于聚類思想和基于啟發(fā)式的方法。
1.1.1 基于聚類思想的日志解析
聚類分析的目的是通過(guò)分析日志特點(diǎn),把日志劃分為不同的分組,組內(nèi)中的日志相似度越大越好,組間的日志相似度越小越好,聚類屬于無(wú)監(jiān)督學(xué)習(xí)。Lighari 和Hussain[1]提出了一種離線和在線日志解析的新方法LPV(log parser based on vectorization),與現(xiàn)有的日志解析方法相比,LPV 具有很好的性能。其方法是先將日志信息轉(zhuǎn)化為向量,通過(guò)向量之間的距離度量?jī)蓷l日志信息之間的相似度,然后通過(guò)向量的聚類對(duì)日志信息進(jìn)行聚類,并從聚類結(jié)果中提取日志模板。在線日志解析為日志模板分配了一些平均向量,這樣傳入的日志消息和每個(gè)日志模板之間的相似度也可以通過(guò)兩個(gè)向量之間的距離來(lái)衡量。
Ren 等人[2]提出了一種在圖形處理器(graph processing unit,GPU)上利用獨(dú)特的層次索引結(jié)構(gòu)計(jì)算加權(quán)編輯距離的并行方法。該方法使用LKE(log key extraction)可以減少處理大規(guī)模日志所需的時(shí)間。實(shí)驗(yàn)表明,利用GPU 計(jì)算加權(quán)編輯距離的LKE解析器在HDFS 數(shù)據(jù)集和海洋信息數(shù)據(jù)集上具有較高的效率和準(zhǔn)確性。文獻(xiàn)[3-5]研究了一系列的日志分析方法,其中文獻(xiàn)[4]提出的IPLoM(iterative partitioning log mining)方法把每條日志轉(zhuǎn)換成詞對(duì)的集合,基于具有公共詞對(duì)的數(shù)量進(jìn)行聚類,根據(jù)專家領(lǐng)域知識(shí)人工指定類簇的個(gè)數(shù),對(duì)每一類進(jìn)行模板提取,該方法不受日志格式的限制。Ning 等人[6]提出的HLAer(heterogeneous log analyzer)是一個(gè)異構(gòu)的日志分析系統(tǒng),首先采用層次聚類把異構(gòu)日志依據(jù)格式信息進(jìn)行分類并索引,然后針對(duì)每一種日志類型進(jìn)行自然語(yǔ)言處理中常用的分詞處理,并構(gòu)建日志間的距離函數(shù),應(yīng)用基于密度的方法進(jìn)行聚類,進(jìn)而提取日志模板。
1.1.2 基于啟發(fā)式的日志解析
基于啟發(fā)式的日志模板抽取方法是根據(jù)日志的格式信息或日志中的詞信息得到適合日志的啟發(fā)式算法并提取模板。Du 和Li[7]提出的Spell(a structured streaming parser for event logs using an longest common subsequence)方法是基于流模式的最長(zhǎng)公共子序列匹配的思想提取出日志模板,解決了日志模板的在線提取問(wèn)題。實(shí)驗(yàn)結(jié)果表明,該方法和其之前的離線算法相比,在準(zhǔn)確度和效率上都有明顯提升。He 等人[8]提出的Drain(a fixed depth tree based online log parsing)方法是以流的工作方式,在領(lǐng)域知識(shí)的基礎(chǔ)上對(duì)相同類型日志建立正則表達(dá)式,對(duì)原始日志預(yù)處理,根據(jù)日志長(zhǎng)度把日志分組,并把日志長(zhǎng)度作為樹(shù)結(jié)構(gòu)的第一層節(jié)點(diǎn)。對(duì)于新的一條原始日志,首先預(yù)處理,然后遍歷第一層節(jié)點(diǎn),找到其所屬的長(zhǎng)度分組,根據(jù)預(yù)處理后日志的第一個(gè)標(biāo)識(shí)符遍歷樹(shù)結(jié)構(gòu)的第二層。以此類推,樹(shù)的葉子節(jié)點(diǎn)是當(dāng)前具有相似日志結(jié)構(gòu)的日志集合,遍歷到葉子節(jié)點(diǎn)層時(shí),計(jì)算新日志和已知日志模板的相似度,比較其和事先定義閾值的大小,確定所屬分組。
邏輯回歸是廣泛應(yīng)用于分類的統(tǒng)計(jì)模型,通過(guò)訓(xùn)練得到邏輯函數(shù),該函數(shù)可以計(jì)算問(wèn)題中所有狀態(tài)的概率,概率最大的狀態(tài)即所屬分類。近年來(lái),國(guó)內(nèi)外關(guān)于邏輯回歸的研究成果主要集中在數(shù)據(jù)預(yù)處理、標(biāo)簽噪聲問(wèn)題、算法的優(yōu)化(如梯度下降法、坐標(biāo)下降法及自適應(yīng)隨機(jī)梯度下降法)及并行化實(shí)現(xiàn)。Farshchi 等人[9]采用基于回歸的分析技術(shù)來(lái)查找操作活動(dòng)日志與操作活動(dòng)對(duì)云資源的影響之間的相關(guān)性,然后將相關(guān)模型用于導(dǎo)出聲明規(guī)范,該聲明規(guī)范可用于對(duì)運(yùn)行中的操作及其對(duì)資源的影響進(jìn)行運(yùn)行時(shí)驗(yàn)證。在實(shí)驗(yàn)時(shí)注入了隨機(jī)故障,該方法有效地對(duì)隨機(jī)注入的故障發(fā)出了警報(bào),能用于對(duì)云應(yīng)用操作進(jìn)行異常檢測(cè)。
決策樹(shù)(decision tree)常用于數(shù)據(jù)領(lǐng)域的分類和回歸,是一種流行的機(jī)器學(xué)習(xí)手段。Rochmawati等人[10]使用臨床癥狀數(shù)據(jù)集,利用J48 and Hoeffding Tree 決策樹(shù)對(duì)癥狀進(jìn)行分類,并取得較好結(jié)果。Gavankar 和Sawarkar[11]提出了一種新的算法Eage 決策樹(shù),該算法在訓(xùn)練時(shí)構(gòu)造一個(gè)單一的預(yù)測(cè)模型,該模型考慮了測(cè)試數(shù)據(jù)中未知屬性值的所有可能性。它很自然地解決了決策樹(shù)歸納法中測(cè)試數(shù)據(jù)未知值的處理問(wèn)題。Sahu 等人[12]提出了一種貪婪的啟發(fā)式二值化策略,以配分函數(shù)作為可分性測(cè)度。與大多數(shù)主要的多類支持向量機(jī)(support vector machines,SVM)分類器相比,該方法具有較高的分類精度和較少的計(jì)算開(kāi)銷。Erfani 等人[13]提出了一種混合模型,用無(wú)監(jiān)督的深度置信網(wǎng)絡(luò)(deep belief networks,DBNs)提取通用的基礎(chǔ)特征,然后從DBNs 學(xué)習(xí)的特征中訓(xùn)練一類SVM?;旌夏P筒粫?huì)造成精度損失,且具有可伸縮性。Lin 等人[14]設(shè)計(jì)了LogCluster 聚類方法用來(lái)識(shí)別在線系統(tǒng)問(wèn)題。Azevedo 等人[15]使用聚類算法檢測(cè)衛(wèi)星系統(tǒng)中的異常。Wurzenberger 等人[16]引入了日志數(shù)據(jù)增量聚類的半監(jiān)督概念,它不依賴于日志的語(yǔ)法和語(yǔ)義,通用性較強(qiáng),為基于日志數(shù)據(jù)流的在線異常檢測(cè)解決方案奠定了基礎(chǔ)。Rehman 等人[17]通過(guò)對(duì)主成分分析(principal component analysis,PCA)、稀疏PCA、核PCA 和增量PCA 等不同特征提取算法性能的評(píng)價(jià),尋找最優(yōu)的特征提取算法。這些算法與機(jī)器學(xué)習(xí)模型相結(jié)合,提高了高頻預(yù)測(cè)的精度。通過(guò)對(duì)克利夫蘭心衰數(shù)據(jù)庫(kù)的分析,評(píng)價(jià)了這些綜合模型的性能。該實(shí)驗(yàn)結(jié)果表明,核主成分分析算法與線性判別分析模型相結(jié)合,稀疏主成分分析算法與高斯樸素貝葉斯(Gaussian naive Bayes,GNB)模型相結(jié)合,可獲得91.11%的高頻分類準(zhǔn)確率。
本文設(shè)計(jì)基于邏輯回歸監(jiān)督學(xué)習(xí)的大樣本日志異常檢測(cè)優(yōu)化方法,系統(tǒng)框架流程如下。
(1)對(duì)日志使用正則表達(dá)式對(duì)所有日志進(jìn)行解析,得到一系列日志模板。
(2)對(duì)每個(gè)日志模板,使用獨(dú)熱(One-Hot) 編碼進(jìn)行映射,并且在任意時(shí)候,其中只有一位有效。
(3)將所有原始日志以其BlockID 為關(guān)鍵字進(jìn)行分類,相同的BlockID 聚合成日志序列,再利用日志編碼將日志序列進(jìn)行向量化處理,得到一個(gè)完整的向量。
(4)將取得的向量進(jìn)行標(biāo)準(zhǔn)化處理,用邏輯回歸模型進(jìn)行訓(xùn)練,并使用正則化,以使模型能進(jìn)行特征向量的一定取舍,使訓(xùn)練結(jié)果有更佳的性能以及更好的泛化能力。
(5)對(duì)訓(xùn)練所得的模型用測(cè)試數(shù)據(jù)進(jìn)行檢測(cè),以檢測(cè)本次方法。
系統(tǒng)架構(gòu)如圖1 所示。
圖1 基于邏輯回歸監(jiān)督學(xué)習(xí)的大樣本日志異常檢測(cè)模型
2.2.1 原始日志
選用Amazon EC2 平臺(tái)上的203 節(jié)點(diǎn)集群收集的日志數(shù)據(jù)集,該HDFS 數(shù)據(jù)集屬于大規(guī)模分布式系統(tǒng)產(chǎn)生的日志,是Amazon 公開(kāi)的生產(chǎn)環(huán)境日志,具有一定的研究?jī)r(jià)值,可作為日志異常檢測(cè)的方法及模型的參考標(biāo)準(zhǔn)。該日志數(shù)據(jù)集HDFS 包含38.7 h的11 175 629 條原始日志記錄,大小為1.6 GB,包含的數(shù)據(jù)塊有575 061 個(gè),其中異常數(shù)據(jù)塊有16 838個(gè)。HDFS 日志為每個(gè)工作執(zhí)行分配唯一的ID 號(hào),以每個(gè)塊ID 劃分為一個(gè)時(shí)域窗口,每個(gè)唯一的塊ID 將日志劃分為一組日志序列,該序列對(duì)應(yīng)一系列塊操作,例如分配、寫入、復(fù)制、刪除等。
2.2.2 日志特征
(1)日志格式為日期+時(shí)間+時(shí)間參數(shù)+日志級(jí)別(INFO 和WARN) +數(shù)據(jù)操作者+具體信息。具體示例為081110 123628 11303 INFO dfs.DataNode $ PacketResponder: Received block blk88601410 04676523018 of size 67108864 from/10.250.13.240。
(2) 每條日志都有數(shù)據(jù)塊的號(hào)碼,如blk_8860141004676523018。
(3)有些數(shù)據(jù)塊日志數(shù)量極少,僅有2 條日志3418 個(gè)數(shù)據(jù)塊。
(4)日志中出現(xiàn)的詞的字?jǐn)?shù)統(tǒng)計(jì)分布極其不平衡,日志信息中單詞頻繁度的不平衡特征會(huì)影響傳統(tǒng)文本挖掘技術(shù)對(duì)日志進(jìn)行研究的效果。如基于頻繁項(xiàng)日志挖掘算法和聚類算法。
(5)日志記錄的語(yǔ)法結(jié)構(gòu)非常弱,但是字段及其參數(shù)之間仍然有相當(dāng)?shù)倪壿嬯P(guān)系和語(yǔ)義關(guān)系。
(6)日志冗余信息較多,許多日志異常檢測(cè)算法利用此特點(diǎn),根據(jù)不同的窗口定義方法,得到以相同日志出現(xiàn)次數(shù)為特征的特征矩陣。
(7)相同源的日志數(shù)據(jù)有相同的結(jié)構(gòu),不同源的日志數(shù)據(jù)有不同的結(jié)構(gòu),大多數(shù)現(xiàn)有的日志數(shù)據(jù)聚類算法隱式地或明確地利用了日志結(jié)構(gòu)的這一特點(diǎn)。
(8)日志還有明顯的時(shí)序特征,時(shí)序數(shù)據(jù)由時(shí)間戳、標(biāo)簽和指標(biāo)三要素組成。時(shí)間戳表明數(shù)據(jù)發(fā)生的時(shí)間;標(biāo)簽為屬性信息,表明數(shù)據(jù)屬于的設(shè)備/模塊,不隨著時(shí)間變化;指標(biāo)為統(tǒng)計(jì)數(shù)據(jù)、狀態(tài)指標(biāo)。
2.2.3 日志預(yù)處理
(1)日志解析
日志解析通常作為后續(xù)日志分析任務(wù)的第一步,是訓(xùn)練機(jī)器學(xué)習(xí)模型的必要數(shù)據(jù)預(yù)處理步驟。將文本日志消息解析為結(jié)構(gòu)化格式可以有效地搜索、過(guò)濾、分組、計(jì)數(shù)和進(jìn)行復(fù)雜的日志挖掘。
數(shù)據(jù)清洗:通過(guò)對(duì)大量的日志事件進(jìn)行觀察發(fā)現(xiàn),一些標(biāo)記變量通常都是以數(shù)字、IP 地址、端口號(hào)、塊大小等形式出現(xiàn),或者這些標(biāo)記中包含了大括號(hào)、中括號(hào)、圓括號(hào),再或者標(biāo)記中有下劃線、斜線、反斜線等。這些標(biāo)記在事件消息中非常容易辨認(rèn),可以使用規(guī)則定義的方法進(jìn)行識(shí)別。因此,通過(guò)定義顯式的規(guī)則表達(dá)來(lái)描述這些典型的標(biāo)記變量,并將這些標(biāo)記變量使用空來(lái)表示。這一步驟之后,剩下的標(biāo)記為候選的標(biāo)記常量?;谝陨先罩镜奶攸c(diǎn)及日志分析的目的,本次預(yù)處理只提取具體信息部分,日志開(kāi)頭的日期時(shí)間及日志級(jí)別均不作提取,且對(duì)于每條日志的信息部分,本次用正則表達(dá)式來(lái)進(jìn)行解析。
算法:以每條日志為單位,將其中的關(guān)鍵字(非關(guān)鍵字及數(shù)字等除外)保留,以作為依據(jù)判斷為某個(gè)特征語(yǔ)句。而其中的非關(guān)鍵字,即日志中的日期、時(shí)間、級(jí)別直接刪除,IP 地址、端口號(hào)、塊大小等帶數(shù)字信息標(biāo)記為變量,以“*”代替。示例如下:
(2)日志模板提取
提取日志模板是處理海量系統(tǒng)日志十分有效的方法。其對(duì)所有日志進(jìn)行處理,得到一個(gè)不含任何參數(shù)信息的通用日志,并進(jìn)行去重處理,最后得出相互獨(dú)立的日志,且每種格式代表不同種類的日志消息,這些日志就稱為日志模板,由這些模板可以組成各種各樣的日志。
算法:根據(jù)上一步的日志解析方法,將所有日志解析成不帶參數(shù)的通用日志,然后將得到的日志進(jìn)行去重處理,最后得到的日志即為需要的日志模板。
優(yōu)勢(shì):由于該算法使用正則表達(dá)式,能準(zhǔn)確提取出日志的關(guān)鍵字,且手動(dòng)去重解析后的日志比其他算法(如基于聚類思想和基于啟發(fā)式)的準(zhǔn)確率高。在相對(duì)不復(fù)雜的日志結(jié)構(gòu)中,是一個(gè)比較理想的選擇。
算法偽碼如算法1~算法3 所示。
用正則表達(dá)式即可提取出日志模板,得到一個(gè)非重復(fù)的日志模板,如表1 所示。
表1 本數(shù)據(jù)集日志模板
2.3.1 日志向量化處理
算法:將54 條日志用一個(gè)54 個(gè)行列的單位矩陣表示,矩陣每行表示一條日志,且單位矩陣中的每個(gè)向量是正交關(guān)系,即每個(gè)向量相互獨(dú)立,所以每條日志也是相互獨(dú)立。
每個(gè)日志模板與一個(gè)單位向量形成一一對(duì)應(yīng)的關(guān)系,且單位向量?jī)蓛烧?所以日志之間無(wú)關(guān)聯(lián),即不會(huì)相互影響。
獲得的文件包括日志模板及每個(gè)模板的向量。
2.3.2 樣本特征向量化
算法:將所有日志依據(jù)不同的BlockID 創(chuàng)建一個(gè)log 文件(如沒(méi)有該文件),相同的BlockID 則放入相同的文件中,然后再根據(jù)每個(gè)文件,讀出所有的日志。根據(jù)上述中的日志解析方法解析出日志后,對(duì)比日志模板中的向量表,找出該條日志的向量,并相加于該BlockID 的向量,如此循環(huán),直到日志讀取完畢,得到的向量即為該BlockID 的向量。
算法偽碼如算法6 和算法7 所示。
得到每個(gè)BlockID 與其日志序列相對(duì)應(yīng)的向量表,該表可作為后續(xù)模型訓(xùn)練直接使用的數(shù)據(jù)樣本。
2.3.3 日志標(biāo)簽處理
算法:將每個(gè)block 的標(biāo)簽加到對(duì)應(yīng)的每個(gè)BlockID 的額外向量中,即數(shù)據(jù)+標(biāo)簽,其中最后一維為標(biāo)簽。
算法偽碼如算法8 所示。
得到一個(gè)數(shù)據(jù)文件,該文件不含表頭,但包含每個(gè)樣本值及對(duì)應(yīng)的標(biāo)簽值。同時(shí),該文件可作為后續(xù)監(jiān)督學(xué)習(xí)模型的直接輸入數(shù)據(jù)樣本。
2.4.1 樣本選擇
本次訓(xùn)練按照經(jīng)典的比例選擇訓(xùn)練和測(cè)試樣本。
訓(xùn)練樣本:575 061×75%=431 300。
測(cè)試樣本:575 061×25%=143 761。
2.4.2 數(shù)據(jù)處理技術(shù)
(1)數(shù)據(jù)標(biāo)準(zhǔn)化處理
此樣本中有些特征的方差過(guò)大,會(huì)主導(dǎo)目標(biāo)函數(shù)從而使參數(shù)估計(jì)器無(wú)法正確地學(xué)習(xí)其他特征,所以需要對(duì)數(shù)據(jù)作標(biāo)準(zhǔn)化處理。標(biāo)準(zhǔn)化處理有兩個(gè)好處,一個(gè)是提升模型精度,標(biāo)準(zhǔn)化/歸一化使不同維度的特征在數(shù)值上更具比較性,提高分類器的準(zhǔn)確性;另一個(gè)是提升收斂速度,對(duì)于線性模型,數(shù)據(jù)歸一化使梯度下降過(guò)程更加平緩,更易正確地收斂到最優(yōu)解。
其算法適用于本身服從正態(tài)分布的數(shù)據(jù),所以本次使用標(biāo)準(zhǔn)差標(biāo)準(zhǔn)化算法對(duì)向量進(jìn)行預(yù)處理,用來(lái)去均值和方差歸一化,且針對(duì)每一個(gè)特征維度,而不是針對(duì)樣本。標(biāo)準(zhǔn)化的縮放通過(guò)方差和每個(gè)點(diǎn)都相關(guān),即每個(gè)點(diǎn)都作出了貢獻(xiàn)。
(2)數(shù)據(jù)正則化處理
邏輯回歸算法中添加多項(xiàng)式項(xiàng)后,可以對(duì)非線性數(shù)據(jù)進(jìn)行分類。添加多項(xiàng)式項(xiàng)后,模型變得復(fù)雜,容易出現(xiàn)過(guò)擬合現(xiàn)象。在算法中加入正則化項(xiàng)能在一定程度上避免過(guò)擬合問(wèn)題。見(jiàn)式(1)~(6)。
回歸函數(shù):
選擇L2 正則化方法時(shí),代價(jià)函數(shù):
選擇L1 正則化方法時(shí),代價(jià)函數(shù):
選用彈性網(wǎng)絡(luò)函數(shù)時(shí),代價(jià)函數(shù):
其中,ρ控制L1 與L2 的強(qiáng)度,C值表示懲罰值。
假定目標(biāo)yi在測(cè)試時(shí)應(yīng)屬于集合[-1,1],可以發(fā)現(xiàn)彈性網(wǎng)絡(luò)函數(shù)在ρ=1 時(shí)與L1 正則化等價(jià),在ρ=0 時(shí)與L2 正則化等價(jià)。
C值是對(duì)錯(cuò)誤預(yù)測(cè)的懲罰值。C值越大,分類器的準(zhǔn)確性越高,但容錯(cuò)率會(huì)越低,泛化能力變差。相反,如果C值較小,分類器則具有較好的容錯(cuò)率,其泛化能力較好。
正則化的目的是L1 正則化將系數(shù)w的L1 范數(shù)作為懲罰項(xiàng)加到損失函數(shù)上,由于正則項(xiàng)非零,這就迫使那些弱的特征所對(duì)應(yīng)的系數(shù)變成0。因此L1正則化往往會(huì)使學(xué)到的模型很稀疏(系數(shù)w經(jīng)常為0),這個(gè)特性使得L1 正則化成為一種很好的特征選擇方法。L2 正則化將系數(shù)向量的L2 范數(shù)添加到損失函數(shù)中。由于L2 懲罰項(xiàng)中系數(shù)是二次方的,這使得L2 和L1 有著諸多差異,最明顯的一點(diǎn)是L2正則化會(huì)讓系數(shù)的取值變得平均。對(duì)于關(guān)聯(lián)特征,這意味著它們能夠獲得更相近的對(duì)應(yīng)系數(shù)。
總的來(lái)說(shuō),L2 正則化可以防止模型過(guò)擬合(overfitting),但一定程度上,L1 也可以防止過(guò)擬合。如果特征量很大,數(shù)據(jù)維度很高,傾向于使用L1 正則化;如果目的只是為了防止過(guò)擬合,選擇L2 就足夠了。
實(shí)驗(yàn)環(huán)境采用華為服務(wù)器FusionServer 2288H V5(CentOS 7.6 系統(tǒng),Intel gold 6248 處理器,384 GB DDR4 內(nèi)存),數(shù)據(jù)集采用Amazon EC2 平臺(tái)上的HDFS 原始日志數(shù)據(jù)集,再隨機(jī)抽取其中一部分?jǐn)?shù)據(jù)(所屬數(shù)據(jù)塊有142 730 個(gè))進(jìn)行實(shí)驗(yàn)。所抽取的數(shù)據(jù)中異常數(shù)據(jù)塊的比例與整個(gè)數(shù)據(jù)塊一致,以保證該數(shù)據(jù)訓(xùn)練的模型盡可能反映整個(gè)數(shù)據(jù)集的特征。
(1)精確度(precision)是正確預(yù)測(cè)為正的占全部預(yù)測(cè)為正的比例,即TP/(TP+FP)。
(2)召回率(recall)是正確預(yù)測(cè)為正的占全部實(shí)際為正的比例,即TP/(TP+FN)。
(3)F1-score 是精確率和召回率的調(diào)和平均數(shù),即2×precision×recall/(precision+recall)。
(4)準(zhǔn)確率(accuracy)是正確預(yù)測(cè)占所有樣本的比例,即(TP+TN)/(TP+TN+FP+FN)。
(5)受試者工作特性(receiver operating characteristic,ROC)曲線是反映敏感性和特異性的綜合指標(biāo)。
(6) AUC(area under curve)為ROC 曲線下的面積大小,它能夠量化地反映基于ROC 曲線衡量出的模型性能。
本次通過(guò)Amazon EC2 平臺(tái)上的HDFS 原始日志數(shù)據(jù)集,使用Python 開(kāi)發(fā)語(yǔ)言,采用scikit-learn模型庫(kù)進(jìn)行實(shí)驗(yàn)。根據(jù)引言中的系統(tǒng)架構(gòu)圖,從原始日志經(jīng)過(guò)數(shù)據(jù)解析、特征提取、模型訓(xùn)練后得到相關(guān)參數(shù),并比較模型測(cè)試指標(biāo)得到參數(shù)的最優(yōu)解。其實(shí)驗(yàn)步驟如下。
(1)將日志解析后生成模板。
(2)模板向量化及特征提取。
(3)日志序列向量化。
(4)標(biāo)簽數(shù)字化處理及加入數(shù)據(jù)樣本中。
(5)數(shù)據(jù)標(biāo)準(zhǔn)化處理。
(6)使用不同的正則化強(qiáng)度、迭代次數(shù)來(lái)進(jìn)行參數(shù)的優(yōu)化。
(7)得出使得參數(shù)最優(yōu)化的模型。
本次比較不同的C值(正則化強(qiáng)度相關(guān)參數(shù))及迭代次數(shù)與準(zhǔn)確率、召回率(精確度)、耗時(shí)及AUC 的關(guān)系,從中找到使精確度與耗時(shí)得到平衡的最佳參數(shù)值。
3.4.1 迭代次數(shù)選擇
訓(xùn)練模型時(shí),通常迭代次數(shù)越多,得到的模型越好。但迭代次數(shù)和時(shí)間消耗是一對(duì)矛盾體,二者不可兼得。此時(shí)需要在模型好壞與時(shí)間消耗上找到一個(gè)平衡點(diǎn),既能得到盡可能好的模型,又使消耗的時(shí)間較少。
本節(jié)通過(guò)比較不同的迭代次數(shù),查看各個(gè)不同性能指標(biāo)對(duì)變化。
圖2 和圖3 分別是準(zhǔn)確率、召回率、精確率及F1 值隨著迭代次數(shù)變化的關(guān)系圖。
圖2 準(zhǔn)確率與迭代次數(shù)的關(guān)系圖
圖3 召回率、精確率及F1 值與迭代次數(shù)的關(guān)系圖
實(shí)驗(yàn)結(jié)果表明,當(dāng)?shù)螖?shù)超過(guò)80 次時(shí),模型在L1 和L2 正則化方法下均能達(dá)到99.9%以上的準(zhǔn)確率,F1 值達(dá)到99.73%以上,性能指標(biāo)情況見(jiàn)表2。此時(shí)訓(xùn)練得到的邏輯回歸模型參數(shù)較好。
表2 迭代次數(shù)80 次以上時(shí)性能指標(biāo)情況
3.4.2 正則化強(qiáng)度選擇
邏輯回歸的代價(jià)函數(shù)中,加入正則化項(xiàng)后,其代價(jià)函數(shù)中參數(shù)C為正則化強(qiáng)度的倒數(shù),為正數(shù),其值更小代表更強(qiáng)的正則化。
本節(jié)通過(guò)比較不同的正則化強(qiáng)度相關(guān)參數(shù),查看各個(gè)不同性能指標(biāo)對(duì)變化。
圖4 和圖5 分別是準(zhǔn)確率、召回率、精確率及F1 值隨著C值變化的關(guān)系圖。
圖4 準(zhǔn)確率與C 值的關(guān)系圖
圖5 召回率、精確率及F1 值與迭代次數(shù)的關(guān)系圖
實(shí)驗(yàn)結(jié)果表明,當(dāng)C值約為0.8 時(shí),模型在L1和L2 正則化方法下均能達(dá)到99.9%以上的準(zhǔn)確率,F1 值達(dá)到99.64%以上,性能指標(biāo)情況見(jiàn)表3。此時(shí)訓(xùn)練得到的邏輯回歸模型參數(shù)較好。
表3 C 值約0.8 時(shí)性能指標(biāo)情況
綜上實(shí)驗(yàn)可知,當(dāng)?shù)螖?shù)為80 次,C值約為0.8 時(shí),本模型訓(xùn)練所需時(shí)間與模型的性能均能得到較理想的結(jié)果。
3.4.3 算法對(duì)比
針對(duì)已訓(xùn)練的模型參數(shù),選取PCA、DeepLog 算法進(jìn)行對(duì)比實(shí)驗(yàn),其中DeepLog 選用top-2 判斷為預(yù)測(cè)正確。實(shí)驗(yàn)結(jié)果見(jiàn)圖6,通過(guò)實(shí)驗(yàn)發(fā)現(xiàn)本文訓(xùn)練的邏輯回歸監(jiān)督學(xué)習(xí)方法在召回率、精確率、F1 值方面呈現(xiàn)較好的結(jié)果。
圖6 PCA、DeepLog 與邏輯回歸監(jiān)督學(xué)習(xí)算法對(duì)比
針對(duì)大數(shù)據(jù)平臺(tái)日志數(shù)據(jù)集特點(diǎn),本文提出一種新的思路對(duì)數(shù)據(jù)特征分布不平衡的日志進(jìn)行一系列處理。即用正則表達(dá)式準(zhǔn)確提出日志模板,將日志作為一個(gè)詞向量,以BlockID 作為時(shí)間窗口域,將屬于每個(gè)BlockID 的日志對(duì)應(yīng)的向量相加得到該Block 的日志序列化向量;然后使用數(shù)據(jù)標(biāo)準(zhǔn)化處理算法將樣本數(shù)據(jù)進(jìn)行歸一化,再選擇邏輯回歸及正則化進(jìn)行模型訓(xùn)練;最后用測(cè)試樣本對(duì)訓(xùn)練后的模型進(jìn)行測(cè)試,得到使得模型最優(yōu)的參數(shù)及最終的模型。該方法易理解、處理流程較簡(jiǎn)單,能廣泛應(yīng)用于大數(shù)據(jù)平臺(tái)日志。