王瑋 嚴文濤 蘇琦 劉蔭 于展鵬 殷齊林 趙憲佳 孫更新
摘要: 為快速準確地提取和挖掘信息系統運維服務過程中的關鍵咨詢問題,本文利用分布式技術,基于Hadoop的客服運維文本聚類算法,對海量文本數據進行聚類研究。給出了基于Hadoop的運維數據分布式并行計算模型,并在Hadoop框架中對系統中所有運維數據進行分析處理。同時,給出了分布式文本聚類算法,并以10萬余條電力信息系統運維數據為數據源,對設計的分布式聚類算法和傳統聚類算法進行分析對比。實驗結果表明,本文設計的分布式聚類算法所需時間低于傳統聚類算法,不僅解決了傳統聚類算法在處理海量數據方面由于數據規模過大引起的速度慢、效率低的問題,而且還借助大數據中蘊含的價值和動力,提升了企業運維服務水平。該研究具有較高的實用價值和理論意義。
關鍵詞: 聚類算法; 數據挖掘; 大數據分析; Hadoop; 客服運維
中圖分類號: TP311.13文獻標識碼: A
收稿日期: 20170518; 修回日期: 20170828
作者簡介: 王瑋(1970),女,漢族,山東濟南人,碩士,高級工程師,主要研究方向為企業信息化應用。Email: zhaoxj@jacore.com在信息系統運維服務過程中,及時解決用戶問題成為企業提升服務質量的關鍵。當用戶進行咨詢時,能否及時解決問題會對用戶滿意度產生巨大影響。但用戶咨詢的問題涉及面廣且重復,因此要達到用戶滿意則需配置數量較多的運維人員,不利于企業降低運行成本。大部分運維服務信息都是以文本信息的形式存在,對咨詢的關鍵問題進行內容提取和挖掘,并對運維信息進行精確、快速的處理,從分析處理結果中獲取有用的信息成為運維信息知識發現領域急需解決的核心問題。利用分布式計算技術和文本聚類技術,通過并行數據挖掘的方法對大量的運維數據進行計算,這是解決該問題的必要途徑。海量運維客服數據中包含很多用戶重復咨詢的問題,利用數據挖掘方法對關鍵咨詢的問題進行內容提取,識別出關鍵信息,自動統計用戶常見問題及熱點問題,自動編寫專門的培訓資料并更新知識庫,用以支撐決策及業務的智能化運轉,為用戶提供個性化的運維服務和針對性的知識培訓,以便提高信息系統運維水平及效率,從而實現以用戶為中心,多維度了解用戶,實現數據化管理,借助大數據中蘊含的價值和動力促進公司服務水平不斷提升。在數據挖掘的技術領域中,文本聚類是重要的技術,無監督的機器學習[1]是文本聚類技術的重要特點,一般流程是首先將文本進行數據化預處理,然后通過相似度的計算方法對數據進行處理,最后得出聚類結果。本文以分析聚類的基本原理為依據,在大量運維數據分析過程中對現有聚類方法的優點和缺點進行總結,在此基礎上,把分布式計算機技術應用到數據挖掘領域中,提出了文本聚類算法的分布式計算方法的應用。針對傳統聚類算法中大量數據的稀疏和高維兩方面不足所導致的問題,文本聚類算法中的分布式計算采取了有效的解決方法,提升了算法執行的速度和分析效率。該研究具有較高的實際應用價值。
1基于Hadoop的運維數據分布式并行計算模型
聚類是按照一定的標準把數據集合進行多個簇的方式來劃分的分析過程,計算聚類結果[2]就是用這些簇的集合進行表示。在聚類技術應用領域,文本聚類具有很高的應用性,文本聚類以聚類的規則作為依據,根據文本內容將不同的文檔進行聚類,最終將內容相似的文檔劃分為一類。隨著聚類技術的發展及其在實際中的廣泛應用,根據實現的具體思想和應用領域不同,產生了很多不同的聚類算法,主要包括基于劃分(partitionbased methods,PBM)的聚類算法、基于層次(hierarchical methods,HM)的聚類算法、基于密度(hensitybased methods,DBM)的聚類算法、基于網格(gridbased methods,GBM)的聚類算法和基于模型(modelbased methods,MBM)的聚類算法。基于劃分的聚類算法的代表算法是Kmeans聚類算法[3],其核心思想是對包含N個對象的數據集合預先劃分為K個類,然后對數據集合中任何K個對象進行選取,把選取出來的對象作為聚類的初始中心點,再以之前設定好的啟發式算法為依據進行迭代重置,直到類內部對象的平均值不再發生變化為止。層次聚類算法通過將數據組織成一個樹狀結構來計算樣本之間的距離。層次聚類以聚類的順序為標準,劃分為從下向上和從上向下兩種順序的層次聚類。在凝聚(agglomerative nesting,AGENES)聚類算法[4]中,把數據集合的各個對象分別作為一個類,再按照每個類之間的相似度規則逐層合并,直到全部對象合成一個類。分裂分析(divisive analysis,DIANA)聚類算法[5]則是典型的自上向下的聚類算法,首先設置要得到的聚類數目作為聚類結束條件,采用類的平均相異度作為相似度規則。基于劃分的聚類方法的典型算法是基于密度的空間聚類(densitybased spatial clustering of application with noise,DBSCAN)聚類算法[6]。在DBSCAN聚類算法中,如果一個對象的鄰域中包含多個對象,則創建一個以該對象為核心的新類,進而繼續迭代,從核心對象出發對直接接觸的其他對象進行尋找,直至尋找不到任何可以添加到類的對象為止。統計信息網格(statistical information grid,STING)算法是基于網格的聚類算法中最具有代表性的算法之一[7],該算法首先按照矩形方式對空間區域進行單元格的劃分,劃分出來的矩形單元格和不同級別的對象之間相互對應,單元格按照對象之間的關系建立一個層次結構,然后劃分成諸多低一層的單元格。這樣可依據預先設定的網格單元屬性的信息來進行統計查詢。基于模型的聚類算法的代表性算法是自組織神經網絡(self organizing maps,SOM)算法[8],該算法首先對神經網絡輸出層賦予隨機的連接權向量,并對設置網絡的學習率進行初始值的設置,向量的隨機選取是從訓練數據中進行選擇,然后再對選取的向量進行操作,選取的向量與各連接權向量之間的相似度通過計算可以得出,把得出的相似度的值進行比較,選出最大相似度的節點作為獲勝節點,獲勝節點的作用是作為t時間學習權值的調整域進行確定的中心,以獲勝節點為中心,對優勝領域內的節點的權值和獲勝節點的權值進行及時更新。按照上面的操作過程執行,直到學習率衰減到0或某個指定的閾值為止。
對于海量運維數據,通過分布式系統對其進行并行處理是提高計算效率和處理能力的重要途徑之一。Hadoop作為目前應用最廣泛的一種云計算平臺,利用HDFS分布式文件系統對海量運維數據進行存儲,在分布式環境下通過MapReduce編程模型對運維數據進行并行處理。MapReduce是一種分布式并行計算編程模型,“Map(映射)”和“Reduce(歸約)”及其主要思想都是借鑒矢量編程語言的特性。運維數據Hadoop并行計算模型的基本執行流程如圖1所示。
圖1運維數據Hadoop并行計算模型的基本執行流程在Hadoop結構模型框架中,對系統中的所有運維數據分析的MapReduce任務進行初始化,轉化為系統中的Job,Job又被分為Map和Reudce部分。在MapReduce部分的執行過程中,把輸入文件劃分為M份,如圖1左方所示分成了split 0~4,然后把每個split傳送給每個單獨的Map,因此Map作業數量是由M決定,和split一一對應。在Map部分,形式為“
2分布式文本聚類算法
本文的分布式文本聚類算法,是為適應客服運維系統的海量數據集合的特點而設計,與傳統聚類算法相比,本算法具有支持分布式并行運算和實時性的特點。本文的分布式聚類算法是由基于劃分的聚類和基于層次聚類兩部分組成。客服運維系統自身的特點決定了本算法必須具有較強的實時性,這就要求必須對海量運維數據集合進行預處理,從而達到初步降維的效果,在此基礎上,對已有明確相關性的文檔進行初步聚類,然后再進行二次聚類,最終達到系統要求的聚類結果。分布式文本聚類算法實現流程如圖2所示。
圖2分布式文本聚類算法實現流程對大文檔數據集進行聚類之前,首先需要進行數據預處理,即對文檔集中的每個文檔對象進行中文分詞。本文以IKAnalyer分詞器為工具,采用改進的二元gram分詞方法準確分詞,同時將文檔集合中的文檔對象表示成算法所需的數據形式。文檔對象空間的高維度可能會降低聚類算法的準確度,因此需對文檔對象首先進行降維處理。本算法選取文檔對象中的特征詞,根據特征詞的權重是否小于設定的閾值,決定是否消去該特征詞與文檔對象的關系,以實現初步降維的效果。倒排表是將文檔對象中的特征詞作為劃分標準,將文檔對象進行聚合的數據結構[9]。利用倒排表可以為后續基于劃分的聚類算法初步聚類進行數據相關性準備。
在初步聚類過程中,需要計算文檔對象間的相似度,由于在算法中文檔是以向量的形式表示,所以計算文檔對象間的相似度通常采用向量間的余弦夾角公式,即
Sim(D1,D2)=(∑ni=1x1ky2k)/(∑ni=1x21k∑ni=1y22k)
式中,x1k和y2k分別表示向量D1和D2中的元素;如果Sim(D1,D2)的值越大,那么向量D1和D2之間的相似度就會越高。
初始聚類是按照一定的方法,選擇反倒排表的文檔對象,然后進行歸類處理。初始聚類的目的是把文檔對象進行劃分,然后放入文檔集合中,這些文檔集合是全劃分,所有文檔集合間沒有重疊。初始聚類算法流程如下:
1)在反倒排表的文檔對象中,把特征詞進行關聯處理,再把進行關聯處理后的文檔集合以權重值為依據進行聚類中心點的計算。
2)應用余弦夾角公式對文檔對象和文檔集合中心點相似度進行計算,從而將該文檔對象劃入與其相似度最大的文檔集合中。
3)在所有包含該文檔對象的文檔集合中刪除該文檔。
在二次聚類過程中,需要對初步聚類的劃分結果再次聚類,達到最終的穩定聚類結果。二次聚類的基本流程如下:
1)計算初步聚類后劃分的每個文檔集合的中心點。
2)通過基于層次的聚類算法對初步聚類結果集進行二次聚類計算。
3)把二次聚類的結果合并在一起,最終實現在相同類集合中存放的文檔對象內容都是相同的,不同類的結合中存放的文檔內容不同,并且每個文檔只能歸屬到一個類。
3Hadoop的分布式文本聚類算法實現
在Hadoop的分布式文本聚類算法中,分布式應用程序主要包括Mapper和Reducer兩部分。Mapper負責處理由InputFormat切割成的數據分片,然后通過Inputformat提供的記錄讀取器將輸入解析成鍵值對的形式提供給Mapper部分中的Map函數[10]。經過map處理后的數據仍會以鍵值對的形式輸出[1116]。Mapper部分的輸出將分發到各個Reducer部分,在此過程中,Reducer部分為了對Mapper的輸出進行并行處理,需要對Mapper的輸出進行劃分和分割處理,然后在相同的Reducer上把相同的鍵的輸出進行分配,最后要實現把輸入的鍵和與鍵對應的值在Reducer部分進行疊加結合。數據經過Reducer部分處理后會繼續以鍵值對的形式輸出[1720]。該算法的具體步驟如下:
1)將文檔數據集合保存到分布式Hadoop分布式文件系統(Hadoop distributed file system,HDFS)文件系統中作為輸入數據,在Map中利用正則表達式對值進行歸一化,然后使用分詞器對值進行分詞操作。Reduce的輸入是Map的輸出的集合,Reduce把相同的key匯總后,再把相同的key的value值相加,得到特征詞語在該文檔中出現的次數。
2)以1)的Reduce輸出為Map的數據輸入,計算每個文檔中特征詞語在哪些文檔中出現過,Reduce部分的輸入將作為Map的輸出,計算文檔中特征詞語出現的頻率,進而通過權重計算公式獲得每個特征詞語在每一個文檔中的加權權重值。將全部特征詞語進行權重計算,對權重值小的詞語消去,進行降維。
3)以2)的Reduce輸出作為Map部分的輸入,通過Map的處理對中間結果的表達形式進行格式轉換,Reduce的輸入為Map的輸出的集合,對value的集合進行合并。
4)以3)的Reduce輸出為Map部分的輸入,以文本特征詞為鍵,以文檔的編號為值,Reducer的輸入為Mapper輸出的集合,對文檔號進行合并。
5)Map的數據輸入是以4)的Reduce輸出為準,并且key值取決于文檔號,value值取決于特征詞語,Reduce的輸入為Mapper輸出的集合,對特征詞語進行合并。
6)以5)中的Reduce部分的輸出作為Map的輸入,對文檔編號為docId的文檔進行權重關聯,從而得到文檔編號為docId的文檔中特征詞的權重集合,然后通過反倒排表關聯對鍵值對中的所有特征詞進行關聯,并通過得出的特征詞關聯文檔的集合,對文檔集合的中心點進行計算,并利用余弦公式計算中心點與文檔編號為docId的文檔間的相似度,從中找到相似度最大的文檔集合。最后以該文檔集合所對應的特征詞為鍵,以該文檔編號docId為值。Reduce部分中以Map的輸出為Reduce的輸入,完成對值集合的合并。
7)Map的輸入通過6)中的Reduce部分輸出得出,首先建立空集合,如果第1個文檔集合首先被輸入,那么就在建立的空集合中把第1個文檔集合添加進來。如果輸入不是第1個文檔集合,則與已有集合中的類進行相似度比較,進行比較之后的相似度的值如果超過了設定的閾值,那么就在已有的文檔集合中把進行比較的類的文檔添加進來,原來的類將會被新合并的類所取代,如果進行比較的相似度的值沒有超過設定的閾值,那么就建立一個新的類,并把新的類添加到已有的集合中。Reduce部分的輸入作為Map部分的輸出,在Reduce部分中對所有文檔集合進行合并,直到所有文檔集合都添加到類集合中。至此,整個分布式文檔聚類算法結束。
4實驗與分析
本文以10萬余條電力信息系統運維數據為數據源,從3個方面對設計的分布式聚類算法和傳統聚類算法的性能表現進行測試,這些數據具有高維和稀疏性等特點。
在同一分布式集群節點數量保持不變的情況下,分別使用10 000,40 000,70 000,100 000條測試數據,計算所需時間的增減關系。不同數量級的數據對傳統聚類算法和分布式聚類算法的性能測試結果如圖3所示。由圖3可以看出,當集群節點數量穩定時,數據量雖然增加,但是系統運行時間卻在減少,而且在相同數據量的情況下,本文設計的分布式聚類算法所需時間要低于傳統聚類算法。
保持測試數據量不變,通過分布式集群節點數量的變化,測試處理時間增量的增減關系。使用不同集群節點數量對傳統聚類算法和分布式聚類算法進行測試,不同節點的數量運行時間如圖4所示。
由圖4可以看出,測試數據總量保持不變,隨著分布式集群節點數量的增加,系統運行時間逐漸減少,而且在相同集群節點數量的情況下,本文設計的分布式聚類算法所需時間要低于傳統的聚類算法。
以50 000條數據集分別對本文提出的分布式文本聚類算法中的二次聚類步驟分別進行測試,查看在不同分布式集群節點的數量下,時間的增減關系。初步聚類算法實現所消耗時間如圖5所示,二次聚類算法實現所消耗時間如圖6所示。
在分布式文本聚類算法計算過程中,如果分布式集群節點數量保持不變,隨著處理的數據數量增加,系統運行需要的時間減少;在處理數據數量不變的情況下,聚類算法需要的時間隨著分布式集群節點數量的增加而呈遞減變化。從兩個聚類步驟的時間復雜度測試算法中可以看出,在兩個聚類步驟的時間增量上,分布式文本聚類算法呈遞減變化。
5結束語
本文設計的分布式聚類算法通過Hadoop分布式平臺來實現,對運維系統中咨詢的關鍵問題進行內容提取,利用聚類算法從海量數據中識別出關鍵信息,自動統計出用戶常見問題及熱點問題,用以支撐決策及運維服務的智能化運轉,借助大數據中蘊含的價值和動力促進企業服務水平不斷提升,具有較高的實用價值和理論意義,對于海量數據的聚類算法的執行效率將是下一步研究的主要問題。
參考文獻:
[1]王繼成, 潘金貴, 張福炎. Web 文本挖掘技術研究[J]. 計算機研究與發展, 2000, 37(5): 513520.
[2]吳啟明, 易云飛. 文本聚類綜述[J]. 河池學院學報, 2008, 28(2): 2830.
[3]毛國君, 段立娟, 王實. 數據挖掘原理與算法[M]. 北京: 清華大學出版社, 2005.
[4]Zhang T, Rramakrishoan R, Livny M. An Efficient Data Clustering Method for Very Large Databases [C]//In Procof ACMSIGMOD International Conference on Management of Data. Canada: ACM, 1996: 103114.
[5]Aggarwal C, Han J, Yu P S, et al. A Framework for Projected Clustering of High Dimensional Data Streams[C]//13th International Conference on Very Large Databases. Endowment: VLDB, 2004: 852863.
[6]胡可云, 田鳳占, 黃厚寬. 數據挖掘理論與應用[M]. 北京: 清華大學出版社, 2008.
[7]Fmurtagh S. A Survey of Recent Advances in Hierarchical Clustering Algorithms[J]. The Computer Journal, 1983, 26(4): 354359.
[8]薛貴榮. 數據挖掘[M]. 北京: 清華大學出版社, 2007.
[9]劉務華, 羅鐵堅, 王文杰. 文本聚類算法的質量評價[J]. 中國科學院研究生院學報, 2006, 23(5): 640646.
[10]Klusch M, Lodi S, Moro G. Distributed Clustering Based on Sampling Local Density Estimates[C]//Eighteenth International JointConference on Artificial Intelligence. London: Morgan Kaufmann Publishers, 2003: 485490.
[11]欒亞建, 黃翀民, 龔高晟. Hadoop平臺的性能優化研究[J]. 計算機工程, 2010, 36(14): 262263.
[12]向小軍, 高陽, 商琳, 等. 基于Hadoop平臺的海量文本分類的并行化[J]. 計算機科學, 2011, 38(10): 184188.
[13]許丞, 劉洪, 譚良. Hadoop云平臺的一種新的任務調度和監控機制[J]. 計算機科學, 2013, 40(1): 112117.
[14]楊來, 史忠植, 梁帆, 等. 基于Hadoop云平臺的并行數據挖掘方法[J]. 系統仿真學報, 2013, 25(5): 8694.
[15]胡丹, 于炯, 英昌甜, 等. Hadoop平臺下改進的LATE調度算法[J]. 計算機工程與應用, 2014, 50(4): 8689.
[16]陳明麗, 劉旭敏. Hadoop平臺下改進的推測任務調度算法[J]. 傳感器與微系統, 2017, 36(2): 134137.
[17]劉莎, 譚良. Hadoop云平臺中基于信任的訪問控制模型[J]. 計算機科學, 2014, 41(5): 155163.
[18]史文浩, 江國華, 秦小麟. 基于用戶信任值的HDFS訪問控制模型研究[J]. 計算機科學與探索, 2016, 10(1): 2535.
[19]宛婉, 周國祥. Hadoop平臺的海量數據并行隨機抽樣[J]. 計算機工程與應用, 2014, 50(20): 115118.
[20]趙慶. 基于Hadoop平臺下的CanopyKmeans高效算法[J]. 電子科技, 2014, 27(2): 2931.