張振海,張湘婷
(蘭州交通大學(xué)自動化與電氣工程學(xué)院,蘭州 730070)
鐵路信號設(shè)備在保障列車運行安全、提高鐵路運輸效率等方面有著關(guān)鍵性作用。隨著我國鐵路快速發(fā)展,列車運行速度的提升,鐵路信號設(shè)備的重要性日益凸顯,使電務(wù)段對信號設(shè)備的維修管理變得更加嚴(yán)格。傳統(tǒng)的鐵路信號設(shè)備故障診斷主要靠人工經(jīng)驗,且設(shè)備故障原因有明顯的隨機性和模糊性,因此,對人員專業(yè)水平要求高[1]。與此同時,鐵路信號領(lǐng)域的歷史故障維修成功案例大多以文本形式儲存,使得許多知識和經(jīng)驗難以被充分利用。針對這一現(xiàn)狀,如何合理的運用這些文本故障信息輔助故障診斷,是一個亟待解決的問題。
故障診斷是利用現(xiàn)代檢測系統(tǒng)確定是否有故障發(fā)生,并確定故障發(fā)生的位置和類型等,故障診斷方式大致分為基于定性分析的故障診斷方法,基于信號處理的故障診斷方法,基于人工智能的故障診斷方法[2]。王蘭勇[3]根據(jù)鐵路信號設(shè)備發(fā)生故障現(xiàn)象、原因和處理方案設(shè)計專家系統(tǒng);LEE等[4]運用聲學(xué)分析法對道岔系統(tǒng)進(jìn)行故障探測分析;張娟[5]采用神經(jīng)網(wǎng)絡(luò)BP算法解決鐵路信號設(shè)備多故障處理順序問題。隨著人工智能技術(shù)的成熟,通過人工智能方法將故障文本數(shù)據(jù)作為數(shù)據(jù)源的故障診斷方式,是當(dāng)前研究的熱點之一。上官偉等[2]針對車載設(shè)備的故障日志,引入改進(jìn)主題模型(Labeled-LDA),通過支持向量機算法進(jìn)行故障診斷;盛春東[6]根據(jù)案例推理建立鐵路信號設(shè)備維修決策模型;ZHAO等[7]結(jié)合PLSA模型和貝葉斯網(wǎng)絡(luò)的方法對高速鐵路車載設(shè)備進(jìn)行故障診斷。以上這些學(xué)者并未深入挖掘出故障信息內(nèi)的隱藏規(guī)律,同時缺少考慮鐵路領(lǐng)域先驗知識的影響。關(guān)聯(lián)規(guī)則是數(shù)據(jù)挖掘的重要領(lǐng)域,通過算法在海量數(shù)據(jù)中挖掘出潛在未知的規(guī)律,建立兩種或兩種以上事務(wù)數(shù)據(jù)之間的聯(lián)系。朱興動等[8]將關(guān)聯(lián)規(guī)則運用在飛機維修記錄上,查找出飛機故障與其他因素的聯(lián)系;張宏[9]提出基于Apriori算法的汽車運行數(shù)據(jù)采集設(shè)備故障診斷方法。
為此采用基于關(guān)聯(lián)規(guī)則的故障診斷方法,首先采用TF-IDF算法[10-11],對以往的鐵路信號設(shè)備故障案例進(jìn)行故障特征提取。由于故障特征詞可能出現(xiàn)的文本不同,相互之間隱藏某些關(guān)聯(lián)規(guī)律。需建立基于關(guān)聯(lián)規(guī)則的故障診斷模型,進(jìn)而用改進(jìn)FP-Growth算法[12-13]進(jìn)行數(shù)據(jù)挖掘,計算項的權(quán)重使之表示支持度,依據(jù)頻繁1-項集劃分?jǐn)?shù)據(jù)庫進(jìn)行挖掘,在減少運行時間的同時可挖掘出更具有實際意義的關(guān)聯(lián)規(guī)則,從而提供維修輔助決策,簡化故障處理流程,保障列車運行安全。
鐵路信號設(shè)備故障案例庫按照信號設(shè)備分成不同子庫,為道岔故障、軌道電路故障、信號機故障、電源屏故障、控制設(shè)備故障、移頻發(fā)送設(shè)備故障和移頻接收設(shè)備故障等[6]。為更好地描述故障設(shè)備信息潛在的關(guān)聯(lián)規(guī)則,以道岔故障為例,部分故障維修記錄如表1所示。
表1 故障維修記錄
由表1可知,鐵路信號設(shè)備故障維修案例總結(jié)主要是以文本形式記錄,存在故障數(shù)據(jù)不規(guī)范性,如“2013年3月21日18時45分,29/30號道岔瞬間斷表示”,其中,與道岔故障有關(guān)的信息只有“道岔瞬間斷表示”,無關(guān)信息的冗余會造成有實際意義的規(guī)律信息無法挖掘出來,故將鐵路信號設(shè)備故障診斷主要分為兩步:故障特征提取和故障診斷。鐵路信號設(shè)備故障診斷首先采用TF-IDF算法處理所采集的故障數(shù)據(jù),提取關(guān)鍵故障特征詞,使其具有區(qū)分文本的能力。再用改進(jìn)的FP-Growth算法,挖掘鐵路信號設(shè)備故障特征數(shù)據(jù)庫,得到關(guān)聯(lián)規(guī)則,結(jié)合專家相關(guān)經(jīng)驗對其故障診斷,整體流程如圖1所示。
圖1 故障診斷整體流程
鐵路信號設(shè)備維修成功案例是以故障文本數(shù)據(jù)為基礎(chǔ),且故障文本數(shù)據(jù)是非結(jié)構(gòu)化數(shù)據(jù),需轉(zhuǎn)換成計算機可識別和處理的結(jié)構(gòu)化數(shù)據(jù),而且有效的文本特征提取可降低數(shù)據(jù)冗余度和維度,在故障診斷中占有重要的位置。故障特征項須具有以下特點:①可以真實反映文本內(nèi)容;②具有良好的區(qū)分其他文本的能力;③特征項數(shù)量不能過多,否則會導(dǎo)致算法復(fù)雜度太高;④特征值之間需要有區(qū)分度[14]。主要步驟如下。
(1)使用NLPIR-ICTCLAS系統(tǒng)將收集的歷史故障文本信息進(jìn)行分詞,并且刪除無關(guān)詞,轉(zhuǎn)化成以詞語組成的文本數(shù)據(jù)。
(2)將文本數(shù)據(jù)用VSM模型表示,采用TF-IDF算法計算每個詞語在文本的權(quán)重,刪除權(quán)重小的詞語。
(3)最終建立故障診斷模型。
NLPIR-ICTCLAS是由中科院張華平團(tuán)隊開發(fā)的一款漢語分詞系統(tǒng),結(jié)合鐵路信號專業(yè)詞庫和停用詞,對故障文本數(shù)據(jù)進(jìn)行預(yù)處理,去除如“故障發(fā)生地址”和“時間”等無關(guān)詞語,保留關(guān)鍵詞。
分詞后的結(jié)果,依舊是非結(jié)構(gòu)化的數(shù)據(jù),需將文本轉(zhuǎn)化為結(jié)構(gòu)化數(shù)據(jù),目前常用的文本表示方法有:布爾模型(Boolean Model)、概率模型(Probabilistic Model)、向量空間模型(Vector Space Model)[15-16]。目前使用最廣泛的是向量空間模型VSM。
向量空間模型VSM旨在把文本內(nèi)容轉(zhuǎn)換特征詞-特征權(quán)重的向量并保存。把特征項t1,t2,…,tn看作是一個n維坐標(biāo)系,權(quán)值w1,w2…,wn表示其對應(yīng)的坐標(biāo)值,文本di映射為該向量坐標(biāo)空間中的一個特征向量V(di)=(t1,wm1;t2,wm2;…;tn,wmn),文本總體的VSM表示見表2。
表2 文本的向量空間模型
TF-IDF算法是一種經(jīng)典的基于向量空間模型計算特征項重要程度的方法,通過考慮詞語在文本中出現(xiàn)的頻率和在文本集中的分布,計算詞語權(quán)重[10],其中,TF為詞頻,IDF為逆向文檔頻率。核心思想:假設(shè)某個詞在某條文本中出現(xiàn)頻率較高(TF較高),但在剩余文本中頻率低(IDF較高),則該詞有很好地類別區(qū)分能力。TF-IDF方法計算公式如下
Wt,d=tft,d×idft,d
(1)
式中,Wt,d為特征值t在文本d中的權(quán)重;tft,d為詞頻;idft,d為逆文檔頻率。
tft,d詞頻為特征值t在文本d出現(xiàn)的次數(shù)與文本d中所有特征值之比,計算公式如下
(2)
式中,nt,d為特征值t在文本d中出現(xiàn)次數(shù);∑knt,d為文本d中所有特征值的個數(shù)。
逆文檔頻率idft,d是文本數(shù)量與特征值t在文本集中出現(xiàn)的次數(shù)比值,計算公式如下
(3)
式中,N為文本數(shù)據(jù)庫中文本總數(shù);Nt,d為文本含有特征值t的文本數(shù)量。如果某詞不在樣本中,會導(dǎo)致分母為0,因此,分母加1是為避免該情況。
將NLPIR系統(tǒng)處理后文件加入TF-IDF算法,計算權(quán)重Wt,d。
由于鐵路信號設(shè)備種類繁多,遇到的故障多種多樣。通過對鐵路信號故障數(shù)據(jù)總結(jié),結(jié)合鐵路信號專家的經(jīng)驗知識,建立基于關(guān)聯(lián)規(guī)則故障診斷模型,如圖2所示。故障診斷模型分為3層:故障特征層、故障類型層(一級故障層)和故障原因?qū)?二級故障層)[17]。故障特征層是故障文本進(jìn)行預(yù)處理后得到的故障特征,故障類型層是根據(jù)第1節(jié)鐵路信號設(shè)備分類結(jié)構(gòu)細(xì)分得到的設(shè)備名稱如“轉(zhuǎn)轍機相關(guān)故障”“整流匣相關(guān)故障”,故障原因?qū)邮窍鄬τ陬愋蛯痈泳唧w的故障部位如“繼電器”“補償電容”等。本次研究認(rèn)為導(dǎo)致故障現(xiàn)象發(fā)生的原因是單一的,因此,根據(jù)故障傳播原理,對故障診斷模型層進(jìn)行以下說明。
圖2 故障診斷模型
(1)二級故障是一級故障出現(xiàn)的原因。
(2)一級故障和二級故障均是故障特征出現(xiàn)的原因。
(3)一級故障之間相互獨立,每次只能推導(dǎo)出1個一級故障。
(4)二級故障之間相互獨立,每次只能推導(dǎo)出1個二級故障。
根據(jù)故障診斷模型,對各屬性進(jìn)行編號,表1的處理結(jié)果如表3~表5所示,如表1中的維修記錄5,根據(jù)故障診斷模型可得出F7(表示時有時無)→T5(整流匣相關(guān)故障)→R4(整流匣電阻內(nèi)部開路),從中可看出,故障特征層、故障原因?qū)优c故障類型層3層之中具有因果關(guān)系。
表3 故障類型
表4 故障特征
表5 故障原因
關(guān)聯(lián)分析是發(fā)現(xiàn)隱含于大數(shù)據(jù)中具有實際意義的規(guī)律信息,描述為關(guān)聯(lián)規(guī)則或頻繁項集[18]。采用改進(jìn)FP-Growth算法挖掘出隱含在故障特征的關(guān)聯(lián)規(guī)律,得到故障特征、類型和原因之間關(guān)聯(lián)關(guān)系,作為鐵路信號設(shè)備故障診斷的重要依據(jù)。
FP-Growth算法優(yōu)勢是只需遍歷2次事務(wù)數(shù)據(jù)庫,運行效率高。首次遍歷數(shù)據(jù)庫D,目的是刪掉小于最小支持度的項,建立頻繁項集,第二次遍歷用于建立FP-Tree,具體步驟如下。
(1) 遍歷事務(wù)數(shù)據(jù)庫,計算每項支持度并除去多余項,獲得頻繁1項集L,按照支持度降序排列得到有序頻繁1項集P,然后對事務(wù)數(shù)據(jù)庫D重新調(diào)整。
(2) 創(chuàng)建根節(jié)點root和頻繁項目頭表,再次遍歷事務(wù)數(shù)據(jù)庫D,根據(jù)頻繁1-項集P調(diào)整每條事務(wù),掃描每條事務(wù)建立分支創(chuàng)建FP-Tree。
(3) 根據(jù)FP-Tree找到單項的條件模式基,遞歸挖掘條件FP-Tree,最終依據(jù)頻繁項集從中得出關(guān)聯(lián)規(guī)則。
3.2.1 支持度計算
傳統(tǒng)FP-Growth算法中每個項的支持度等于項在事務(wù)數(shù)據(jù)庫中出現(xiàn)的頻率,但忽視每個項在事務(wù)數(shù)據(jù)庫D的重要程度,以至于挖掘出大量無用的關(guān)聯(lián)規(guī)則[19-20],因此,提出基于權(quán)重的支持度計算方法。為體現(xiàn)項對事務(wù)的重要性,同時保留發(fā)生頻次低但一旦發(fā)生會產(chǎn)生重大事故的故障特征。人為對每個故障特征進(jìn)行危險性評估,分為輕度危險、中度危險、重度危險和極重度危險,將評定為重度危險和極重度危險項,自動保留且支持度設(shè)為0.3,其余項按照所提出的基于權(quán)重的支持度計算,計算方法如下。
設(shè)I={I1,I2,…In}為事務(wù)數(shù)據(jù)庫D的項集,n為表示項的個數(shù),設(shè)置項Im在事務(wù)數(shù)據(jù)庫中的權(quán)重為w(Im),表示項Im在數(shù)據(jù)庫出現(xiàn)的次數(shù)與數(shù)據(jù)庫中總體事務(wù)數(shù)量之比,計算公式為
w(Im)=l/k
(4)
式中,l為項Im在數(shù)據(jù)庫中出現(xiàn)頻率;k為數(shù)據(jù)庫中事務(wù)總數(shù)。
事務(wù)Ti為事務(wù)數(shù)據(jù)庫中第i條數(shù)據(jù),該事務(wù)的權(quán)重是事務(wù)本身含有全部項的權(quán)重的平均值,記為wt(Ti),即對第i條事務(wù)的所有項的項權(quán)重w(Im)求取平均值,其中,m=1,2,…,n。計算公式為
(5)
項Im的支持度是含有該項的全部事務(wù)權(quán)重和數(shù)據(jù)庫中全部事務(wù)權(quán)重之比,即sup(Im),計算公式為
(6)
式中,f為包含項Im的事務(wù)個數(shù);wt(Tx)是包含項Im的事務(wù)權(quán)重;k為事務(wù)數(shù)據(jù)庫中所有事務(wù)數(shù)量;wt(Ty)為事物數(shù)據(jù)庫中每條事務(wù)的權(quán)重。
3.2.2 關(guān)聯(lián)規(guī)則挖掘
傳統(tǒng)FP-Growth算法遍歷數(shù)據(jù)庫時,需建立FP-Tree實現(xiàn)頻繁項集挖掘,當(dāng)事務(wù)數(shù)據(jù)庫過于龐大時,建立的FP-Tree占用內(nèi)存大,導(dǎo)致運行速率低,降低挖掘效率[21-22]。另一個改進(jìn)地方是根據(jù)頻繁1-項集劃分?jǐn)?shù)據(jù)庫的思想挖掘數(shù)據(jù),構(gòu)建各項的數(shù)據(jù)庫子庫并直接構(gòu)造每項的條件FP-Tree,在減小內(nèi)存占用,同時提升挖掘效率。具體算法描述如下。
(1)遍歷事物數(shù)據(jù)庫D,按照3.2.1節(jié)的支持度計算得到每項支持度確保項的重要性,去除小于最小支持度的項,降序排序得到頻繁1項集L,設(shè)L={T1,T2,…,Tn},調(diào)整事務(wù)數(shù)據(jù)庫按照頻繁1-項集排序得到有序的事務(wù)數(shù)據(jù)庫D′。
(2)再次遍歷事務(wù)數(shù)據(jù)庫D′,找到包含項Tm所有的事務(wù),刪除小于項Tm支持度的其他項,得到包含項Tm的數(shù)據(jù)子庫DT。
(3)采用FP-Growth算法對項Tm的數(shù)據(jù)子庫進(jìn)行關(guān)聯(lián)規(guī)則挖掘,具體步驟如下。
①根據(jù)包含項Tm的數(shù)據(jù)子庫DT建立FP-Tree,創(chuàng)建項頭表N。其中,項Tm排在最后,當(dāng)已有分枝存在,判斷新來節(jié)點是否屬于該分枝節(jié)點,屬于重合計數(shù)加1,否則重新建立分枝,最終得到數(shù)據(jù)子庫DT的FP-Tree。
②只挖掘項表頭N最后一項的信息,即只挖掘包含項Tm的頻繁項集,找到項Tm的條件模式基,建立條件FP-Tree,遞歸調(diào)用樹結(jié)構(gòu),得到包含項Tm的數(shù)據(jù)子庫DT頻繁項集UT。
③重復(fù)步驟①②,把頻繁1-項集L內(nèi)所有項的頻繁項集UT全部挖掘出來,取并集得到頻繁項集U,為事務(wù)數(shù)據(jù)庫D的所有頻繁項集。
通過對鐵路信號設(shè)備故障特征進(jìn)行挖掘得到關(guān)聯(lián)規(guī)則,保存到歷史故障文本數(shù)據(jù)的知識庫KB,從知識庫中提取規(guī)則進(jìn)行故障診斷,步驟如下。
(1)將信號設(shè)備故障現(xiàn)象進(jìn)行故障特征提取,再與知識庫KB中的已有規(guī)則進(jìn)行匹配,如果匹配成功,直接輸出診斷結(jié)果。
(2)若只有部分匹配,將其放入知識集KS中,選擇包含此故障特征置信度大的規(guī)則,得出最優(yōu)解。
(3)若KS為空,則詢問用戶是否加入新規(guī)則,若不加入,系統(tǒng)失敗進(jìn)入人工診斷,若加入,即此時用戶添加了新的知識,則根據(jù)新的知識庫,重新進(jìn)行診斷,流程如圖3所示。
圖3 基于關(guān)聯(lián)規(guī)則的故障診斷流程
實驗使用的硬件為Intel(R)酷睿I5-42210U,2.70 GHz處理器,8 GB內(nèi)存,操作系統(tǒng)是Windows 7旗艦版64位;軟件為eclipse3.4-jee-ganymede開發(fā)運行平臺,JDK7.0版本。
本實驗以2013年~2018年的某鐵路局電務(wù)段的鐵路信號設(shè)備故障案例庫為數(shù)據(jù)源,包括道岔、信號機、軌道電路等。
圖4(a)表示在數(shù)據(jù)庫中,隨機選擇1 000~6 000條事務(wù)對其挖掘,分別計算每個故障案例子庫中項的支持度,根據(jù)現(xiàn)場經(jīng)驗,設(shè)置最小支持度為0.02。由圖4(a)可知,事務(wù)數(shù)據(jù)庫越龐大優(yōu)化算法的優(yōu)勢越明顯,因為傳統(tǒng)算法是針對數(shù)據(jù)庫構(gòu)造整體FP-Tree,數(shù)據(jù)越多FP-Tree所占內(nèi)存越大挖掘效率也越低。
圖4 實驗結(jié)果比較
圖4(b)表示隨機從數(shù)據(jù)庫中選取5 000條數(shù)據(jù)進(jìn)行實驗,設(shè)置不同最小支持度min_sup,比較兩種算法的運行時間。由圖4(b)可知,在相同規(guī)模下的數(shù)據(jù)庫和不同最小支持度的條件下,改進(jìn)算法要比傳統(tǒng)算法的運行時間要短,并且最小支持度設(shè)置越小改進(jìn)算法的優(yōu)勢越明顯。
從鐵路信號設(shè)備故障案例庫中,隨機選取其中10 000條數(shù)據(jù)進(jìn)行實驗,其中,75%作為訓(xùn)練集,25%作為測試集,分別計算每個故障案例子庫中項的支持度,設(shè)置最小支持度為0.02,置信度為0.6,得到的關(guān)聯(lián)規(guī)則有3578條,其中符合最小置信度和故障診斷模型的關(guān)聯(lián)規(guī)則有2281條。因篇幅有限,僅列出道岔故障相關(guān)的10條具有代表意義的關(guān)聯(lián)規(guī)則,如表6所示。
表6 關(guān)聯(lián)規(guī)則
根據(jù)對鐵路信號設(shè)備故障挖掘關(guān)聯(lián)規(guī)則再結(jié)合專家經(jīng)驗,根據(jù)診斷結(jié)果選擇維修方案。例如,根據(jù)規(guī)則9中故障特征詞道岔無表示與道岔扳不到位可推出是轉(zhuǎn)轍機相關(guān)故障,即從故障特征層推到故障類型層,如果推理正確,再根據(jù)規(guī)則8中轉(zhuǎn)轍機相關(guān)故障推出轉(zhuǎn)轍機減速器抱死,即從故障類型層推到故障原因?qū)?,如果原因正確,推出解決方案更換減速器。如果推理不正確換一條規(guī)則重新推理,直到推出最終結(jié)果。
為驗證本文算法的有效性與實用性,同時避免重要故障原因的遺漏,將P@N(N=5)作為評價指標(biāo)[23],將最可能出現(xiàn)的5條原因作為輸出結(jié)構(gòu),具體公式如下
(7)
式中,i為第i類故障;Ci為第i類故障的個數(shù);I(j)為以第i類的故障數(shù)為基礎(chǔ),輸入測試集的故障現(xiàn)象通過故障診斷算法輸出的5個故障原因是否包括實際的故障原因,如果包括I(j)取1,反之取0,若實際故障原因單一,且推理出的原因包括實際原因,則P@N=1。
選擇本文算法、文獻(xiàn)[6]基于案例推理的故障診斷(CBR算法)、文獻(xiàn)[7]基于PLSA模型和貝葉斯網(wǎng)絡(luò)的故障診斷(BNPLSA算法),根據(jù)第1節(jié)的對鐵路信號設(shè)備分類,進(jìn)行P@N(N=5)的比較,所得結(jié)果如圖5所示。
圖5 各類故障的P@N比較
由圖5可知,本文算法的P@N均高于其他兩種算法,且平均診斷準(zhǔn)確率86.77%,比其他兩種算法分別提高10.35%和11.44%?;诎咐评淼墓收显\斷采用的VSM模型的余弦相似度和BTM模型的相似度,該方法僅考慮當(dāng)前故障現(xiàn)象與歷史案例的相似度,并未綜合考慮到故障維修文本數(shù)據(jù)的潛在規(guī)律?;赑LSA模型和貝葉斯網(wǎng)絡(luò)的故障診斷,采用PLSA模型進(jìn)行主題分類,但PLSA模型為無監(jiān)督學(xué)習(xí),缺少考慮鐵路領(lǐng)域的先驗知識,導(dǎo)致取得的故障特征較少。因此,本文算法提取故障特征詞,通過改進(jìn)FP-Growth算法,挖掘出故障文本數(shù)據(jù)的潛在規(guī)律,最終通過故障診斷流程,能夠更加精確的推出故障原因,輔助現(xiàn)場維修人員快速處理故障設(shè)備。
(1)通過分析當(dāng)前鐵路信號設(shè)備維修所存在的問題,利用大量歷史維修文本記錄,提出鐵路信號設(shè)備故障診斷流程;采取TF-IDF算法提取歷史維修記錄的故障特征詞,按照故障診斷模型進(jìn)行分類;最終通過改進(jìn)的FP-Growth算法,發(fā)現(xiàn)具有維修指導(dǎo)意義的關(guān)聯(lián)規(guī)則。
(2)實驗證明,計算每項權(quán)重來確定支持度,依據(jù)頻繁1-項集對其進(jìn)行分塊挖掘的改進(jìn)FP-Growth算法比傳統(tǒng)FP-Growth更具有優(yōu)勢。該方法可以挖掘出鐵路信號設(shè)備中的故障特征、類型和原因之間的關(guān)聯(lián)關(guān)系,為鐵路信號設(shè)備維修提供幫助。通過對比實驗分析,本文方法可提高故障診斷的效率,為鐵路安全運行提供保障。
(3)由于文中最小支持度是根據(jù)現(xiàn)場經(jīng)驗人為設(shè)定的,會影響頻繁項的數(shù)量,當(dāng)數(shù)據(jù)庫不斷擴大時,頻繁項數(shù)量的增多導(dǎo)致會挖掘出大量冗余的關(guān)聯(lián)規(guī)則。如何根據(jù)事務(wù)數(shù)據(jù)庫中的事務(wù)數(shù)量動態(tài)設(shè)定最小支持度,是下一步研究的重點。