朱圳,劉立芳,齊小剛
(1.西安電子科技大學 計算機科學與技術學院,陜西 西安 710071;2.西安電子科技大學 數學與統計學院,陜西 西安 710071)
隨社會的快速發展,對于網絡的需求也越來越大。智能手機、智能設備、智能家居等的出現,增大了網絡的使用。傳統通信網絡面臨著前所未有的增長,對網絡的需求和使用也在增大,導致網絡負擔變大。因此通信網絡經常發生故障,故障以告警的形式進行上報,一旦某處發生網絡故障,網絡中就會產生大量告警信息,如何快速定位網絡故障類型是一個難題,而傳統研究基本都在關注告警之間的關聯規則。在文獻[1]中將群智能算法用于關聯規則的挖掘,并應用于通信領域。文獻[2]同樣利用群智能算法中的蟻群算法進行告警的關聯分析。文獻[3-5]都是基于頻繁模式樹的關聯規則方法,該方法提高了算法的運行效率。除關聯規則模式挖掘之外,序列模式也頻繁地應用在通信告警領域,序列模式挖掘考慮時間上的順序,從而效果更佳。文獻[6]使用的是序列模式挖掘。文獻[7-8]都是基于序列模式挖掘的實際應用。除研究通信網絡的告警關聯和序列模式,還有一些國內外的研究學者研究網絡的故障定位,也取得了一些不錯的成果。2002 年Steinder 等[9]提出一種基于貝葉斯網絡的故障定位技術,貝葉斯網絡根據網絡拓撲和通信協議構建,并使用Pearl’s iterative 算法進行概率推理,但該方法只能用于單連通網絡。許多學者引入貝葉斯網絡為網絡故障事件的關系建立模型[10]。王開選等[11]指出了故障傳播模型下的故障定位問題是NP 困難(non-deterministic polynomial)問題,并提出一種啟發式的最小損失故障定位算法。同時故障診斷系統也被開發和使用,華為諾亞方舟實驗室開發了診斷系統,通過對歷史數據的分析和構建知識圖譜,并根據知識圖譜進行推理,可以以問答的形式輔助工程師找到故障根因[12]。王迎春等[13]使用規則進行故障定位,規則使用條件-結果的語句形式表示,該定位方法主要需要解決規則知識庫構建的問題。初始進行故障診斷多數依賴專家,根據專家經驗和網絡資源等關聯性建立故障推理樹,并完成故障定位[13]。趙燦明等[14]采用二分圖模型考慮了通信網絡中故障位置對告警信息的影響,旨在解決大范圍的故障告警下故障定位問題。
為實現通信網絡故障分類,本文提出基于數據挖掘的通信網絡告警分類算法。首先,針對干凈的告警數據和故障數據,對其進行特征工程,將挖掘到的特征與原數據合并,得到便于模型訓練的數據集;然后,基于集成學習模型對數據集進行模型訓練與預測,并與文獻[15]中的基于卷積神經網絡故障分類進行對比實驗,最終獲得通信網絡故障類型。
數據挖掘[16]是指從大量的數據中通過算法搜索隱藏于其中信息的過程。數據挖掘分為有標簽和無標簽挖掘兩大類。有標簽數據可以用來進行分類或者預測任務,無標簽數據可以用來進行聚類或者關聯分析等。
特征工程[17]是指將數據轉換為能更好地表示潛在問題的特征的方法,從而提升機器學習的性能。特征工程就是對數據的特征或者數據進行分析,將數據轉換成可以更好地表示問題的潛在特征,從而提高機器學習的性能。特征工程主要包括以下幾個重要的作用。
1)轉換數據格式。這也是數據預處理中一個重要的環節,但這里的轉換數據不僅僅針對干凈數據,也針對臟數據。有些數據以表格為主,無法直接拿來預處理,需要轉換數據格式,這也屬于特征工程的范疇。
2)確定特征。原始的數據中可能存在多列屬性,但并非所有的屬性都可以用作模型訓練的特征,特征是可以標識問題的重要屬性,而不能標識問題的屬性稱為普通屬性。
3)提高學習性能。特征工程最大的作用就是獲取最佳的數據,最佳的數據可以更好地標識問題,進行機器學習訓練時可以得到更好的效果。
集成學習[18]是將若干個基學習器(分類器、回歸器)組合之后產生一個新的學習器。相比單一模型,集成學習模型在準確性、穩定性、魯棒性和泛化能力上都有很好的效果。一般來說,集成學習可以分為3 類:1)減少方差(Bagging),即防止過擬合;2)減少偏差(Boosting),即提高訓練樣本正確率;3)提升預測結果(Stacking),即提高驗證精度。
1) Bagging:通過對樣本數據集進行有放回地重復采樣,生成多個采樣子集,并行地訓練出多個模型,測試階段集成多個模型的泛化輸出,常常采樣直接平均的做法。Bagging 執行流程如圖1所示。

圖1 Bagging 執行流程Fig.1 Bagging execution process
2) Boosting:其思想是采用串行訓練過程來訓練模型。同樣是利用數據集來訓練多個模型,但Boosting 的最大特征是后訓練的模型會考慮前訓練模型的誤差,具體做法就是對于前訓練模型中出錯的樣本加大權重,稱為賦權法。賦權法的應用使得每個樣本對于訓練模型的誤差起到的作用是不同的,而后訓練模型會采用貪心算法去不斷適應訓練集,力爭將每個訓練樣本的誤差都盡量降低。Boosting 執行流程如圖2 所示。

圖2 Boosting 執行流程Fig.2 Boosting execution process
3) Stacking: 該方法是將多個不同基學習器得到的輸出作為輸入,訓練一個新模型,得到最終結果。具體過程如下:
①將訓練數據集隨機劃分為兩個數據集;
②一個用于訓練多個基學習器,一個用于測試這幾個基學習器;
③將②得到的預測結果作為輸入,訓練1 個更好的分類器。在第2 個集合上測試這幾個學習器。
從數據中提取出可以用于模型訓練的數據特征,比如將時間做處理,時間可以提取出年、月、日等,并且還可以根據時間來判斷當前是工作日還是休息日,不同的時間點網絡的負擔情況是不一樣的,這些因素都可能影響網絡的質量情況。分析網絡告警標題,由于標題是文本數據,可以對其進行文本的提取處理,可能某些告警標題就是對應著相關的故障類型,這樣的告警標題更能表征故障類型。還可以根據告警或者故障發生的基站或小區名稱進行分組處理,得到一些其他的特征信息[19-24],比如某個小區出現故障或者告警的頻率、故障發生的時間等。
1)針對告警標題做TF-IDF
告警標題:故障發生時所上報的告警名稱,不同的告警標題表示不同的告警類型,如ETH_LOS表示端口接收不到信號、RHUB 與pRRU 間鏈路異常告警和用戶面故障告警表示接口異常。
TF-IDF:一種用于信息檢索與數據挖掘的常用加權技術,TF 表示某個詞出現的頻率,IDF 表示逆文本頻率指數。IDF 的主要思想是:如果包含某個詞的文檔越少,IDF 越大,則說明該詞具有很好的類別區分能力。
使用TF-IDF 對告警標題進行轉換,對每個告警標題中的詞統計,將文本信息換為數值信息。處理后的告警數據變成表1 的形式。為了方便記錄生成的詞特征,用 idf_i表示第i個詞。

表1 TF-IDF 處理后新增的特征Table 1 New features after TF-IDF processing
2)處理告警的時間特征
告警數據的時間特征主要是考慮告警的發生時間信息,將告警的發生時間進行處理,提取出告警發生時所在的月份、是在工作日還是周末等。處理后的告警時間特征如表2 所示。

表2 告警數據時間處理后特征Table 2 Characteristics of alarm data after time processing
3)處理故障時間特征
當網絡發生故障時,統計故障發生日期、故障發生的時間是否在周末、故障發生的所在的時間段、是否在工作日和故障持續時間等特征。處理后的故障時間特征如表3 所示。

表3 網絡故障時間處理后特征據Table 3 Characteristics after network fault time processing
4)比率特征
比率特征是將前面處理后得到的特征進行求比例,比如:求每個告警標題出現的次數,當前故障中告警標題的種類,求告警標題在每個小區的比例情況,求解每個小時發生告警的比例情況等。處理后的特征如表4 所示。

表4 相關特征的比例特征Table 4 Proportional features of related features
將上述這些經過特征處理后的所有特征進行合并,得到最終的訓練集數據,并將得到的最新數據集用到集成學習模型。
經過數據處理和特征構造后共得到183 個屬性,并不能將所有的屬性作為特征加入到模型中進行訓練,有些屬性可能會影響模型的效果。本文所使用的數據量近20 000 個樣本,每個樣本有83 個特征的數據量,如果全部用于訓練,將對機器要求非常高,同時算法運行時間也較慢,因此需要對屬性進行篩選,使用LightGBM 模型進行特征篩選。
LightGBM[25]是2017 年由微軟團隊開源的集成學習模型,該模型是對梯度提升樹優化的模型。該模型訓練速度快、內存占用小,被廣泛運用在數據科學競賽中。該模型可以用來評估特征的重要性,對數據訓練后,可以通過模型的feature_importance()函數獲取特征的重要性值,該函數對訓練完的各特征進行重要性排序。特征篩選流程如圖3 所示。

圖3 特征篩選流程圖Fig.3 Feature screening flow chart
經LightGBM 的重要性評估后,有24 個特征的重要性值為0,說明這些特征對最終分類結果沒有作用,將這些特征剔除。通過特征重要性函數可以發現特征重要性值為0 的特征多數為時間相關的特征,如告警發生的小時、告警發生是否在周末等,說明時間特征對故障分類的重要性較低。而告警標題經過TF-IDF 處理后得到的特征,特征的重要性值較高,說明告警標題對故障分類有著重要的作用。
為驗證提出算法的性能情況,本部分通過實驗進行性能分析。與文獻[15]中的基于卷積神經網絡的故障分類算法進行對比實驗,通過實驗分析可以看出提出的基于數據挖掘的通信網絡故障分類算法有更高的分類準確率,且時間也相對比CNN 快,因此提出的方法在故障分類的準確率上是有優勢的。所有實驗均在帶有8RAM 和1T 硬盤的Interi(R)、Core(TM)i5-4 790 CPU@3.6 GHz 的計算機上進行,并使用Python 語言和Java 語言一起實現。
實驗所使用的數據如表5 所示,其主要包括電力、硬件、軟件、傳輸和動環故障五大故障。告警序列 Alarmi表示第i個告警,其中每個告警中又包含告警發生和告警清除的時間、告警標題名稱、告警發生站點等信息。

表5 實驗數據Table 5 Experimental data
分類是機器學習中常見的任務,常見的評價指標有準確率、精確率、召回率、F1-score、ROC曲線等。混淆矩陣如表6 所示,其中TP (true positive)表示真正類,即樣本為正且預測也為正;FN(false negative)表示假負類,即樣本為正預測為負;FP (false positive)表示假正類,即樣本為負預測為正;TN (true negative)表示真負類,即樣本為負且預測為負。

表6 數據檢測結果Table 6 Data test result
準確率為

準確率是分類問題中直觀的評價指標,有明顯弊端,在各分類樣本比重不均勻時,占比較大的分類會影響準確性的評價。
精確率為

精度率是描述分類器不將負樣本預測為正樣本的能力。
召回率為

召回率是描述分類器找出全部真正樣本的能力。
F1-score 為

式中:P代表精準度;R代表召回率;F1-score 越大,說明模型越穩定。
圖4(a)中,對比在新數據集下3 種不同集成學習模型的分類準確率差異,可以得到在不同K折交叉驗證下,每個模型的分類準確率都在提高。當K≥7時,LightGBM 和CatBoost 的分類準確率基本趨于不變,而XGBoost 的分類準確率隨K值變大而變大;當K≥9時,XGBoost 的分類準確率也趨于穩定,基本都在83.50%。從圖中可明顯看出在新數據集下,XGBoost 的分類準確率比Light-GBM 和CatBoost 模型的分類準確率高,而Cat-Boost 的分類準確率又高于LightGBM。綜上所述,3 種集成學習模型的分類準確率大小分別是XGBoot>CatBoost>LightGBM。
考慮到數據類型存在一定的不均衡性,從模型的F1-score 值來對比一下3 種集成學習模型的性能差異。在圖4(b) 中可以看出在不同K值下3 種集成學習模型的F1-score 也不同,當K不斷增大時只有XGBoost 模型的F1-score 在不斷變化,而LightGBM 和CatBoost 模型的F1-score 沒有變化。對于XGBoost 集成學習模型,隨著K值的增加F1-score 越來越大,說明模型越來越穩定,當K=10 時,9=F1-score<K的值,說明模型的穩定性下降了。為了說明XGBoost 集成學習模型在K=9時的效果最佳,對XGboost 模型多做幾組K>10 的實驗,進一步對比K值對該模型的影響。

圖4 不同K 值下的結果Fig.4 Results under different K values
從圖5 可以看出,當 6 ≤K<9時,XGBoost 模型的F1-score 值越來越大;當K>9時,XGBoost 模型的F1-score 值越來越小;當K=9時,XGBoost 模型穩定性最好。

圖5 不同K 值下的F1-scoreFig.5 F1-score under different K values
為了證明本文提出的基于數據挖掘的方法比文獻[15]中基于卷積神經網絡的網絡故障分類效果好,進一步做對比實驗,將新數據集在集成學習模型上的結果和文獻[15]中基于CNN 的結果進行對比分析。
從圖6(a)可以看出,隨著訓練集數據量增大,基于CNN 網絡故障分類算法和本文提出的方法在不同集成學習模型下的分類準確率都在提高,在相同訓練集數據量時,本文提出的方法在XGBoost 集成學習模型下的分類準確率高于CNN 算法。CNN 算法的分類準確率高于LightGBM 和CatBoost 集成學習模型,說明基于CNN 的網絡故障分類算法有一定的效果。如果在數量集足夠多的情況下,可能CNN 算法的分類效果會更好,但是由于數據量有限,就目前數據來看,XGBoost 集成學習模型的分類準確率更高。其主要原因是:本文提出的基于數據挖掘的網絡故障分類算法考慮告警和故障之間的潛在特征,并將告警相關的特征進行了處理,挖掘到的特征可以更好地區分故障類別。而文獻[15]中提出的基于卷積神經網絡的故障分類算法,并沒有考慮告警標題、時間等潛在信息,只是將告警和故障根據時間進行劃分,所以信息挖掘不充分。
圖6(b) 中,對比幾種模型運行時間的差異,從圖可得,隨數據量增大,所有模型的運行時間都增大。4 種模型的運行時間:CatBoost>CNN>XGBoost>LightBG。雖然LightGBM 的運行時間最短,但準確率最小。而新數據集在XGBoost 集成學習模型下的運行時間小于CNN,因此,本文提出的方法所得到的新數據集在XGBoost 這種集成學習模型下的效果最好。

圖6 不同數據規模下的結果Fig.6 Results under different data scales
綜上所述,本文提出的基于數據挖掘方法所得到的新數據集,在XGBoost 集成學習模型上有更好的分類準確率和更快的分類結果,可以用于通信網絡故障分類。但所提出的方法也存在一定的缺點,所使用的數據量有局限,未來如果可以獲取到更多的有效數據集,可以再做進一步的研究。
本文根據通信網絡告警數據和網絡故障數據,進行數據挖掘和特征構造,得到一些潛在的特征信息,將潛在特征與原數據一同進行模型的訓練與預測,從結果可以看出得到的新數據集在XGBoost 集成學習模型上的分類準確率更高。其次,從XGBoost 和CNN 算法的運行時間來看,XGBoost 的運行時間更短,可以在短時間內得到網絡的故障類型。