朱圳,劉立芳,齊小剛
(1.西安電子科技大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,陜西 西安 710071;2.西安電子科技大學(xué) 數(shù)學(xué)與統(tǒng)計(jì)學(xué)院,陜西 西安 710071)
隨社會(huì)的快速發(fā)展,對(duì)于網(wǎng)絡(luò)的需求也越來越大。智能手機(jī)、智能設(shè)備、智能家居等的出現(xiàn),增大了網(wǎng)絡(luò)的使用。傳統(tǒng)通信網(wǎng)絡(luò)面臨著前所未有的增長,對(duì)網(wǎng)絡(luò)的需求和使用也在增大,導(dǎo)致網(wǎng)絡(luò)負(fù)擔(dān)變大。因此通信網(wǎng)絡(luò)經(jīng)常發(fā)生故障,故障以告警的形式進(jìn)行上報(bào),一旦某處發(fā)生網(wǎng)絡(luò)故障,網(wǎng)絡(luò)中就會(huì)產(chǎn)生大量告警信息,如何快速定位網(wǎng)絡(luò)故障類型是一個(gè)難題,而傳統(tǒng)研究基本都在關(guān)注告警之間的關(guān)聯(lián)規(guī)則。在文獻(xiàn)[1]中將群智能算法用于關(guān)聯(lián)規(guī)則的挖掘,并應(yīng)用于通信領(lǐng)域。文獻(xiàn)[2]同樣利用群智能算法中的蟻群算法進(jìn)行告警的關(guān)聯(lián)分析。文獻(xiàn)[3-5]都是基于頻繁模式樹的關(guān)聯(lián)規(guī)則方法,該方法提高了算法的運(yùn)行效率。除關(guān)聯(lián)規(guī)則模式挖掘之外,序列模式也頻繁地應(yīng)用在通信告警領(lǐng)域,序列模式挖掘考慮時(shí)間上的順序,從而效果更佳。文獻(xiàn)[6]使用的是序列模式挖掘。文獻(xiàn)[7-8]都是基于序列模式挖掘的實(shí)際應(yīng)用。除研究通信網(wǎng)絡(luò)的告警關(guān)聯(lián)和序列模式,還有一些國內(nèi)外的研究學(xué)者研究網(wǎng)絡(luò)的故障定位,也取得了一些不錯(cuò)的成果。2002 年Steinder 等[9]提出一種基于貝葉斯網(wǎng)絡(luò)的故障定位技術(shù),貝葉斯網(wǎng)絡(luò)根據(jù)網(wǎng)絡(luò)拓?fù)浜屯ㄐ艆f(xié)議構(gòu)建,并使用Pearl’s iterative 算法進(jìn)行概率推理,但該方法只能用于單連通網(wǎng)絡(luò)。許多學(xué)者引入貝葉斯網(wǎng)絡(luò)為網(wǎng)絡(luò)故障事件的關(guān)系建立模型[10]。王開選等[11]指出了故障傳播模型下的故障定位問題是NP 困難(non-deterministic polynomial)問題,并提出一種啟發(fā)式的最小損失故障定位算法。同時(shí)故障診斷系統(tǒng)也被開發(fā)和使用,華為諾亞方舟實(shí)驗(yàn)室開發(fā)了診斷系統(tǒng),通過對(duì)歷史數(shù)據(jù)的分析和構(gòu)建知識(shí)圖譜,并根據(jù)知識(shí)圖譜進(jìn)行推理,可以以問答的形式輔助工程師找到故障根因[12]。王迎春等[13]使用規(guī)則進(jìn)行故障定位,規(guī)則使用條件-結(jié)果的語句形式表示,該定位方法主要需要解決規(guī)則知識(shí)庫構(gòu)建的問題。初始進(jìn)行故障診斷多數(shù)依賴專家,根據(jù)專家經(jīng)驗(yàn)和網(wǎng)絡(luò)資源等關(guān)聯(lián)性建立故障推理樹,并完成故障定位[13]。趙燦明等[14]采用二分圖模型考慮了通信網(wǎng)絡(luò)中故障位置對(duì)告警信息的影響,旨在解決大范圍的故障告警下故障定位問題。
為實(shí)現(xiàn)通信網(wǎng)絡(luò)故障分類,本文提出基于數(shù)據(jù)挖掘的通信網(wǎng)絡(luò)告警分類算法。首先,針對(duì)干凈的告警數(shù)據(jù)和故障數(shù)據(jù),對(duì)其進(jìn)行特征工程,將挖掘到的特征與原數(shù)據(jù)合并,得到便于模型訓(xùn)練的數(shù)據(jù)集;然后,基于集成學(xué)習(xí)模型對(duì)數(shù)據(jù)集進(jìn)行模型訓(xùn)練與預(yù)測,并與文獻(xiàn)[15]中的基于卷積神經(jīng)網(wǎng)絡(luò)故障分類進(jìn)行對(duì)比實(shí)驗(yàn),最終獲得通信網(wǎng)絡(luò)故障類型。
數(shù)據(jù)挖掘[16]是指從大量的數(shù)據(jù)中通過算法搜索隱藏于其中信息的過程。數(shù)據(jù)挖掘分為有標(biāo)簽和無標(biāo)簽挖掘兩大類。有標(biāo)簽數(shù)據(jù)可以用來進(jìn)行分類或者預(yù)測任務(wù),無標(biāo)簽數(shù)據(jù)可以用來進(jìn)行聚類或者關(guān)聯(lián)分析等。
特征工程[17]是指將數(shù)據(jù)轉(zhuǎn)換為能更好地表示潛在問題的特征的方法,從而提升機(jī)器學(xué)習(xí)的性能。特征工程就是對(duì)數(shù)據(jù)的特征或者數(shù)據(jù)進(jìn)行分析,將數(shù)據(jù)轉(zhuǎn)換成可以更好地表示問題的潛在特征,從而提高機(jī)器學(xué)習(xí)的性能。特征工程主要包括以下幾個(gè)重要的作用。
1)轉(zhuǎn)換數(shù)據(jù)格式。這也是數(shù)據(jù)預(yù)處理中一個(gè)重要的環(huán)節(jié),但這里的轉(zhuǎn)換數(shù)據(jù)不僅僅針對(duì)干凈數(shù)據(jù),也針對(duì)臟數(shù)據(jù)。有些數(shù)據(jù)以表格為主,無法直接拿來預(yù)處理,需要轉(zhuǎn)換數(shù)據(jù)格式,這也屬于特征工程的范疇。
2)確定特征。原始的數(shù)據(jù)中可能存在多列屬性,但并非所有的屬性都可以用作模型訓(xùn)練的特征,特征是可以標(biāo)識(shí)問題的重要屬性,而不能標(biāo)識(shí)問題的屬性稱為普通屬性。
3)提高學(xué)習(xí)性能。特征工程最大的作用就是獲取最佳的數(shù)據(jù),最佳的數(shù)據(jù)可以更好地標(biāo)識(shí)問題,進(jìn)行機(jī)器學(xué)習(xí)訓(xùn)練時(shí)可以得到更好的效果。
集成學(xué)習(xí)[18]是將若干個(gè)基學(xué)習(xí)器(分類器、回歸器)組合之后產(chǎn)生一個(gè)新的學(xué)習(xí)器。相比單一模型,集成學(xué)習(xí)模型在準(zhǔn)確性、穩(wěn)定性、魯棒性和泛化能力上都有很好的效果。一般來說,集成學(xué)習(xí)可以分為3 類:1)減少方差(Bagging),即防止過擬合;2)減少偏差(Boosting),即提高訓(xùn)練樣本正確率;3)提升預(yù)測結(jié)果(Stacking),即提高驗(yàn)證精度。
1) Bagging:通過對(duì)樣本數(shù)據(jù)集進(jìn)行有放回地重復(fù)采樣,生成多個(gè)采樣子集,并行地訓(xùn)練出多個(gè)模型,測試階段集成多個(gè)模型的泛化輸出,常常采樣直接平均的做法。Bagging 執(zhí)行流程如圖1所示。
圖1 Bagging 執(zhí)行流程Fig.1 Bagging execution process
2) Boosting:其思想是采用串行訓(xùn)練過程來訓(xùn)練模型。同樣是利用數(shù)據(jù)集來訓(xùn)練多個(gè)模型,但Boosting 的最大特征是后訓(xùn)練的模型會(huì)考慮前訓(xùn)練模型的誤差,具體做法就是對(duì)于前訓(xùn)練模型中出錯(cuò)的樣本加大權(quán)重,稱為賦權(quán)法。賦權(quán)法的應(yīng)用使得每個(gè)樣本對(duì)于訓(xùn)練模型的誤差起到的作用是不同的,而后訓(xùn)練模型會(huì)采用貪心算法去不斷適應(yīng)訓(xùn)練集,力爭將每個(gè)訓(xùn)練樣本的誤差都盡量降低。Boosting 執(zhí)行流程如圖2 所示。
圖2 Boosting 執(zhí)行流程Fig.2 Boosting execution process
3) Stacking: 該方法是將多個(gè)不同基學(xué)習(xí)器得到的輸出作為輸入,訓(xùn)練一個(gè)新模型,得到最終結(jié)果。具體過程如下:
①將訓(xùn)練數(shù)據(jù)集隨機(jī)劃分為兩個(gè)數(shù)據(jù)集;
②一個(gè)用于訓(xùn)練多個(gè)基學(xué)習(xí)器,一個(gè)用于測試這幾個(gè)基學(xué)習(xí)器;
③將②得到的預(yù)測結(jié)果作為輸入,訓(xùn)練1 個(gè)更好的分類器。在第2 個(gè)集合上測試這幾個(gè)學(xué)習(xí)器。
從數(shù)據(jù)中提取出可以用于模型訓(xùn)練的數(shù)據(jù)特征,比如將時(shí)間做處理,時(shí)間可以提取出年、月、日等,并且還可以根據(jù)時(shí)間來判斷當(dāng)前是工作日還是休息日,不同的時(shí)間點(diǎn)網(wǎng)絡(luò)的負(fù)擔(dān)情況是不一樣的,這些因素都可能影響網(wǎng)絡(luò)的質(zhì)量情況。分析網(wǎng)絡(luò)告警標(biāo)題,由于標(biāo)題是文本數(shù)據(jù),可以對(duì)其進(jìn)行文本的提取處理,可能某些告警標(biāo)題就是對(duì)應(yīng)著相關(guān)的故障類型,這樣的告警標(biāo)題更能表征故障類型。還可以根據(jù)告警或者故障發(fā)生的基站或小區(qū)名稱進(jìn)行分組處理,得到一些其他的特征信息[19-24],比如某個(gè)小區(qū)出現(xiàn)故障或者告警的頻率、故障發(fā)生的時(shí)間等。
1)針對(duì)告警標(biāo)題做TF-IDF
告警標(biāo)題:故障發(fā)生時(shí)所上報(bào)的告警名稱,不同的告警標(biāo)題表示不同的告警類型,如ETH_LOS表示端口接收不到信號(hào)、RHUB 與pRRU 間鏈路異常告警和用戶面故障告警表示接口異常。
TF-IDF:一種用于信息檢索與數(shù)據(jù)挖掘的常用加權(quán)技術(shù),TF 表示某個(gè)詞出現(xiàn)的頻率,IDF 表示逆文本頻率指數(shù)。IDF 的主要思想是:如果包含某個(gè)詞的文檔越少,IDF 越大,則說明該詞具有很好的類別區(qū)分能力。
使用TF-IDF 對(duì)告警標(biāo)題進(jìn)行轉(zhuǎn)換,對(duì)每個(gè)告警標(biāo)題中的詞統(tǒng)計(jì),將文本信息換為數(shù)值信息。處理后的告警數(shù)據(jù)變成表1 的形式。為了方便記錄生成的詞特征,用 idf_i表示第i個(gè)詞。
表1 TF-IDF 處理后新增的特征Table 1 New features after TF-IDF processing
2)處理告警的時(shí)間特征
告警數(shù)據(jù)的時(shí)間特征主要是考慮告警的發(fā)生時(shí)間信息,將告警的發(fā)生時(shí)間進(jìn)行處理,提取出告警發(fā)生時(shí)所在的月份、是在工作日還是周末等。處理后的告警時(shí)間特征如表2 所示。
表2 告警數(shù)據(jù)時(shí)間處理后特征Table 2 Characteristics of alarm data after time processing
3)處理故障時(shí)間特征
當(dāng)網(wǎng)絡(luò)發(fā)生故障時(shí),統(tǒng)計(jì)故障發(fā)生日期、故障發(fā)生的時(shí)間是否在周末、故障發(fā)生的所在的時(shí)間段、是否在工作日和故障持續(xù)時(shí)間等特征。處理后的故障時(shí)間特征如表3 所示。
表3 網(wǎng)絡(luò)故障時(shí)間處理后特征據(jù)Table 3 Characteristics after network fault time processing
4)比率特征
比率特征是將前面處理后得到的特征進(jìn)行求比例,比如:求每個(gè)告警標(biāo)題出現(xiàn)的次數(shù),當(dāng)前故障中告警標(biāo)題的種類,求告警標(biāo)題在每個(gè)小區(qū)的比例情況,求解每個(gè)小時(shí)發(fā)生告警的比例情況等。處理后的特征如表4 所示。
表4 相關(guān)特征的比例特征Table 4 Proportional features of related features
將上述這些經(jīng)過特征處理后的所有特征進(jìn)行合并,得到最終的訓(xùn)練集數(shù)據(jù),并將得到的最新數(shù)據(jù)集用到集成學(xué)習(xí)模型。
經(jīng)過數(shù)據(jù)處理和特征構(gòu)造后共得到183 個(gè)屬性,并不能將所有的屬性作為特征加入到模型中進(jìn)行訓(xùn)練,有些屬性可能會(huì)影響模型的效果。本文所使用的數(shù)據(jù)量近20 000 個(gè)樣本,每個(gè)樣本有83 個(gè)特征的數(shù)據(jù)量,如果全部用于訓(xùn)練,將對(duì)機(jī)器要求非常高,同時(shí)算法運(yùn)行時(shí)間也較慢,因此需要對(duì)屬性進(jìn)行篩選,使用LightGBM 模型進(jìn)行特征篩選。
LightGBM[25]是2017 年由微軟團(tuán)隊(duì)開源的集成學(xué)習(xí)模型,該模型是對(duì)梯度提升樹優(yōu)化的模型。該模型訓(xùn)練速度快、內(nèi)存占用小,被廣泛運(yùn)用在數(shù)據(jù)科學(xué)競賽中。該模型可以用來評(píng)估特征的重要性,對(duì)數(shù)據(jù)訓(xùn)練后,可以通過模型的feature_importance()函數(shù)獲取特征的重要性值,該函數(shù)對(duì)訓(xùn)練完的各特征進(jìn)行重要性排序。特征篩選流程如圖3 所示。
圖3 特征篩選流程圖Fig.3 Feature screening flow chart
經(jīng)LightGBM 的重要性評(píng)估后,有24 個(gè)特征的重要性值為0,說明這些特征對(duì)最終分類結(jié)果沒有作用,將這些特征剔除。通過特征重要性函數(shù)可以發(fā)現(xiàn)特征重要性值為0 的特征多數(shù)為時(shí)間相關(guān)的特征,如告警發(fā)生的小時(shí)、告警發(fā)生是否在周末等,說明時(shí)間特征對(duì)故障分類的重要性較低。而告警標(biāo)題經(jīng)過TF-IDF 處理后得到的特征,特征的重要性值較高,說明告警標(biāo)題對(duì)故障分類有著重要的作用。
為驗(yàn)證提出算法的性能情況,本部分通過實(shí)驗(yàn)進(jìn)行性能分析。與文獻(xiàn)[15]中的基于卷積神經(jīng)網(wǎng)絡(luò)的故障分類算法進(jìn)行對(duì)比實(shí)驗(yàn),通過實(shí)驗(yàn)分析可以看出提出的基于數(shù)據(jù)挖掘的通信網(wǎng)絡(luò)故障分類算法有更高的分類準(zhǔn)確率,且時(shí)間也相對(duì)比CNN 快,因此提出的方法在故障分類的準(zhǔn)確率上是有優(yōu)勢的。所有實(shí)驗(yàn)均在帶有8RAM 和1T 硬盤的Interi(R)、Core(TM)i5-4 790 CPU@3.6 GHz 的計(jì)算機(jī)上進(jìn)行,并使用Python 語言和Java 語言一起實(shí)現(xiàn)。
實(shí)驗(yàn)所使用的數(shù)據(jù)如表5 所示,其主要包括電力、硬件、軟件、傳輸和動(dòng)環(huán)故障五大故障。告警序列 Alarmi表示第i個(gè)告警,其中每個(gè)告警中又包含告警發(fā)生和告警清除的時(shí)間、告警標(biāo)題名稱、告警發(fā)生站點(diǎn)等信息。
表5 實(shí)驗(yàn)數(shù)據(jù)Table 5 Experimental data
分類是機(jī)器學(xué)習(xí)中常見的任務(wù),常見的評(píng)價(jià)指標(biāo)有準(zhǔn)確率、精確率、召回率、F1-score、ROC曲線等?;煜仃嚾绫? 所示,其中TP (true positive)表示真正類,即樣本為正且預(yù)測也為正;FN(false negative)表示假負(fù)類,即樣本為正預(yù)測為負(fù);FP (false positive)表示假正類,即樣本為負(fù)預(yù)測為正;TN (true negative)表示真負(fù)類,即樣本為負(fù)且預(yù)測為負(fù)。
表6 數(shù)據(jù)檢測結(jié)果Table 6 Data test result
準(zhǔn)確率為
準(zhǔn)確率是分類問題中直觀的評(píng)價(jià)指標(biāo),有明顯弊端,在各分類樣本比重不均勻時(shí),占比較大的分類會(huì)影響準(zhǔn)確性的評(píng)價(jià)。
精確率為
精度率是描述分類器不將負(fù)樣本預(yù)測為正樣本的能力。
召回率為
召回率是描述分類器找出全部真正樣本的能力。
F1-score 為
式中:P代表精準(zhǔn)度;R代表召回率;F1-score 越大,說明模型越穩(wěn)定。
圖4(a)中,對(duì)比在新數(shù)據(jù)集下3 種不同集成學(xué)習(xí)模型的分類準(zhǔn)確率差異,可以得到在不同K折交叉驗(yàn)證下,每個(gè)模型的分類準(zhǔn)確率都在提高。當(dāng)K≥7時(shí),LightGBM 和CatBoost 的分類準(zhǔn)確率基本趨于不變,而XGBoost 的分類準(zhǔn)確率隨K值變大而變大;當(dāng)K≥9時(shí),XGBoost 的分類準(zhǔn)確率也趨于穩(wěn)定,基本都在83.50%。從圖中可明顯看出在新數(shù)據(jù)集下,XGBoost 的分類準(zhǔn)確率比Light-GBM 和CatBoost 模型的分類準(zhǔn)確率高,而Cat-Boost 的分類準(zhǔn)確率又高于LightGBM。綜上所述,3 種集成學(xué)習(xí)模型的分類準(zhǔn)確率大小分別是XGBoot>CatBoost>LightGBM。
考慮到數(shù)據(jù)類型存在一定的不均衡性,從模型的F1-score 值來對(duì)比一下3 種集成學(xué)習(xí)模型的性能差異。在圖4(b) 中可以看出在不同K值下3 種集成學(xué)習(xí)模型的F1-score 也不同,當(dāng)K不斷增大時(shí)只有XGBoost 模型的F1-score 在不斷變化,而LightGBM 和CatBoost 模型的F1-score 沒有變化。對(duì)于XGBoost 集成學(xué)習(xí)模型,隨著K值的增加F1-score 越來越大,說明模型越來越穩(wěn)定,當(dāng)K=10 時(shí),9=F1-score<K的值,說明模型的穩(wěn)定性下降了。為了說明XGBoost 集成學(xué)習(xí)模型在K=9時(shí)的效果最佳,對(duì)XGboost 模型多做幾組K>10 的實(shí)驗(yàn),進(jìn)一步對(duì)比K值對(duì)該模型的影響。
圖4 不同K 值下的結(jié)果Fig.4 Results under different K values
從圖5 可以看出,當(dāng) 6 ≤K<9時(shí),XGBoost 模型的F1-score 值越來越大;當(dāng)K>9時(shí),XGBoost 模型的F1-score 值越來越?。划?dāng)K=9時(shí),XGBoost 模型穩(wěn)定性最好。
圖5 不同K 值下的F1-scoreFig.5 F1-score under different K values
為了證明本文提出的基于數(shù)據(jù)挖掘的方法比文獻(xiàn)[15]中基于卷積神經(jīng)網(wǎng)絡(luò)的網(wǎng)絡(luò)故障分類效果好,進(jìn)一步做對(duì)比實(shí)驗(yàn),將新數(shù)據(jù)集在集成學(xué)習(xí)模型上的結(jié)果和文獻(xiàn)[15]中基于CNN 的結(jié)果進(jìn)行對(duì)比分析。
從圖6(a)可以看出,隨著訓(xùn)練集數(shù)據(jù)量增大,基于CNN 網(wǎng)絡(luò)故障分類算法和本文提出的方法在不同集成學(xué)習(xí)模型下的分類準(zhǔn)確率都在提高,在相同訓(xùn)練集數(shù)據(jù)量時(shí),本文提出的方法在XGBoost 集成學(xué)習(xí)模型下的分類準(zhǔn)確率高于CNN 算法。CNN 算法的分類準(zhǔn)確率高于LightGBM 和CatBoost 集成學(xué)習(xí)模型,說明基于CNN 的網(wǎng)絡(luò)故障分類算法有一定的效果。如果在數(shù)量集足夠多的情況下,可能CNN 算法的分類效果會(huì)更好,但是由于數(shù)據(jù)量有限,就目前數(shù)據(jù)來看,XGBoost 集成學(xué)習(xí)模型的分類準(zhǔn)確率更高。其主要原因是:本文提出的基于數(shù)據(jù)挖掘的網(wǎng)絡(luò)故障分類算法考慮告警和故障之間的潛在特征,并將告警相關(guān)的特征進(jìn)行了處理,挖掘到的特征可以更好地區(qū)分故障類別。而文獻(xiàn)[15]中提出的基于卷積神經(jīng)網(wǎng)絡(luò)的故障分類算法,并沒有考慮告警標(biāo)題、時(shí)間等潛在信息,只是將告警和故障根據(jù)時(shí)間進(jìn)行劃分,所以信息挖掘不充分。
圖6(b) 中,對(duì)比幾種模型運(yùn)行時(shí)間的差異,從圖可得,隨數(shù)據(jù)量增大,所有模型的運(yùn)行時(shí)間都增大。4 種模型的運(yùn)行時(shí)間:CatBoost>CNN>XGBoost>LightBG。雖然LightGBM 的運(yùn)行時(shí)間最短,但準(zhǔn)確率最小。而新數(shù)據(jù)集在XGBoost 集成學(xué)習(xí)模型下的運(yùn)行時(shí)間小于CNN,因此,本文提出的方法所得到的新數(shù)據(jù)集在XGBoost 這種集成學(xué)習(xí)模型下的效果最好。
圖6 不同數(shù)據(jù)規(guī)模下的結(jié)果Fig.6 Results under different data scales
綜上所述,本文提出的基于數(shù)據(jù)挖掘方法所得到的新數(shù)據(jù)集,在XGBoost 集成學(xué)習(xí)模型上有更好的分類準(zhǔn)確率和更快的分類結(jié)果,可以用于通信網(wǎng)絡(luò)故障分類。但所提出的方法也存在一定的缺點(diǎn),所使用的數(shù)據(jù)量有局限,未來如果可以獲取到更多的有效數(shù)據(jù)集,可以再做進(jìn)一步的研究。
本文根據(jù)通信網(wǎng)絡(luò)告警數(shù)據(jù)和網(wǎng)絡(luò)故障數(shù)據(jù),進(jìn)行數(shù)據(jù)挖掘和特征構(gòu)造,得到一些潛在的特征信息,將潛在特征與原數(shù)據(jù)一同進(jìn)行模型的訓(xùn)練與預(yù)測,從結(jié)果可以看出得到的新數(shù)據(jù)集在XGBoost 集成學(xué)習(xí)模型上的分類準(zhǔn)確率更高。其次,從XGBoost 和CNN 算法的運(yùn)行時(shí)間來看,XGBoost 的運(yùn)行時(shí)間更短,可以在短時(shí)間內(nèi)得到網(wǎng)絡(luò)的故障類型。