甘超,陸遠,李娟,胡瑩,鄒博宇
(1.南昌大學(xué)機電工程學(xué)院,江西南昌330031;2.中國北方車輛研究所車輛傳動重點實驗室,北京100072)
隨著科學(xué)技術(shù)的進步和制造業(yè)的發(fā)展,機械設(shè)備日益呈現(xiàn)復(fù)雜化、大型化和多功能化[1]。設(shè)備維護是保障設(shè)備穩(wěn)定和可靠運行的重要手段。設(shè)備的維修方式從早期的無計劃維修到預(yù)防性維修逐步向基于狀態(tài)維修 (Condition-Based Maintenance,CBM)[2]方式轉(zhuǎn)變,而設(shè)備故障預(yù)測是CBM的關(guān)鍵。近年來,國內(nèi)外針對設(shè)備故障預(yù)測的研究取得了巨大的成果,主要有王寧等人[3]提出的一種基于時變轉(zhuǎn)移概率的隱半Markov模型,用于設(shè)備運行狀態(tài)的識別和故障預(yù)測;CAESARENDRA等[4]通過仿真和實驗的故障數(shù)據(jù),利用概率論和支持向量機來預(yù)測故障的衰減過程;武兵等人[5]提出了利用支持向量回歸技術(shù)對多個特性量進行并行預(yù)測,并對各類特征和預(yù)測結(jié)果進行趨勢分析。文中提出了基于時序關(guān)聯(lián)規(guī)則的設(shè)備故障預(yù)測方法,將故障數(shù)據(jù)轉(zhuǎn)換為時序項集矩陣,利用Apriori改進算法和頻繁時序關(guān)聯(lián)規(guī)則查找算法,求出時序項集矩陣的頻繁時序關(guān)聯(lián)規(guī)則,為管理人員提供決策支持。最后給出了該方法的可行性實例驗證。
隨著設(shè)備使用壽命的增多,發(fā)生故障的概率越來越大,企業(yè)能采集到很多故障數(shù)據(jù)。這些故障數(shù)據(jù)具有動態(tài)性、大量性、冗余性、噪聲大等特點。基于這些特點,利用Apriori傳統(tǒng)關(guān)聯(lián)規(guī)則算法的思想[6-7],將故障記錄表中的數(shù)據(jù)按照設(shè)備編號進行分組,并記錄故障發(fā)生時間,剔除無效的數(shù)據(jù),得到時序故障數(shù)據(jù)模型。如表1所示。
表1 時序故障數(shù)據(jù)模型
模型的數(shù)據(jù)結(jié)構(gòu)需要滿足兩個性質(zhì):
性質(zhì)1:每個事務(wù)T有唯一的設(shè)備編號標識,事務(wù)中的所有數(shù)據(jù)項對應(yīng)設(shè)備的故障數(shù)據(jù)。不存在相同設(shè)備編號的兩個事務(wù)。
性質(zhì)2:事務(wù)中的數(shù)據(jù)項都由一個二元組<i,t>表示,稱為時序項。其中,i為項 (此處為故障代碼),t為時序項的時間戳。
為了便于利用關(guān)聯(lián)規(guī)則算法求出頻繁項集,同時為了更清楚地表達設(shè)備編號和故障代碼之間的關(guān)系,將表1時序故障數(shù)據(jù)模型轉(zhuǎn)換為類似于位圖的形式,如表2所示。其中 (1,T)表示設(shè)備在時間T發(fā)生了某故障,<0,0>表示設(shè)備從來沒有發(fā)生某故障。同一設(shè)備可能在不同時間發(fā)生多次某故障,所以單元格中可能出現(xiàn)多個時序項。
表2 時序故障數(shù)據(jù)轉(zhuǎn)換模型
所以,設(shè)備故障關(guān)系數(shù)據(jù)可以表示為矩陣D:
其中:Rj為表示故障代碼;Ti為表示設(shè)備編號。Rj∈Ti表示設(shè)備Ti在時間Tij1,Tij2,…TijS發(fā)生了故障Rj;S表示Ti發(fā)生故障Rj的次數(shù);TijS表示故障發(fā)生時間;Rj?Ti表示設(shè)備Ti從來沒有發(fā)生故障Rj。
將故障數(shù)據(jù)庫轉(zhuǎn)換為形如式 (1)矩陣,可以形象地描述設(shè)備和故障代碼的關(guān)聯(lián)關(guān)系。這種故障數(shù)據(jù)模型可以減小掃描數(shù)據(jù)庫的次數(shù),降低計算機配置要求,提高算法的運行效率。
定義1,時序項集矩陣。矩陣的每一行代表一個事務(wù)Ti,每一列代表一個項目Ij。當?shù)趇個事務(wù)包含第j個項目時,對應(yīng)位置的值為 {(1,Tij1), (1,Tij2),…, (1,TijS)},TijS表示時序項的時間戳,S為包含項目的個數(shù);當?shù)趇個事務(wù)不包含第j個項目時,對應(yīng)位置的值為 (0,0)。形如式 (1)的矩陣就是一個時序項集矩陣。
定義2,時序候選項集矩陣。用關(guān)聯(lián)規(guī)則算法,對時序項集矩陣剪枝操作后,刪除不滿足要求的行和列,重新計算,得到時序候選項集矩陣。
定義3,時序關(guān)聯(lián)規(guī)則。A,B是項集I的子集,滿足A?I,B?I,且A∩B=φ,t表示在同一個事務(wù)Ti中項集B在項集A之后t的時間發(fā)生。時序關(guān)聯(lián)規(guī)則是形如以下的蘊含式:
定義4,時序規(guī)則模式。在由關(guān)聯(lián)規(guī)則算法計算出的頻繁N項集中,對于某個頻繁項集的子集A,由該子集在ΔT時間之后發(fā)生補集B,稱為時序規(guī)則模式。可以表示為A→B。
定義5,最大同一時序關(guān)聯(lián)規(guī)則。
定義時間模式判別運算,用運算符“∩”表示。運算表達式為:ΔT1∩ΔT2∩…∩ΔTi,運算結(jié)果是ΔT1,ΔT2,…ΔTi中相同個數(shù)的最大值。如:7∩6∩7∩7∩5∩6=3。
定義時間模式相減運算,用運算符“-”表示。運算表達式為:(A,Ta)-(B,Tb)=A→B:ΔT=(Tb-Ta)。
時序規(guī)則模式A→B,在頻繁時序項集中有j條記錄支持該模式,表示為 {(A,Ta1),(B,Tb1)},{(A,Ta2), (B,Tb2)},…, {(A,Taj), (B,Tbj)},其中 ΔT1=Tb1-Ta1,ΔT2=Tb2-Ta2,ΔTj=Tbj-Taj。若 ΔT1∩ΔT2∩…∩ΔTj=number,且對應(yīng)的相同值為t',則稱時序關(guān)聯(lián)規(guī)則A→B:ΔT=t'為時序規(guī)則模式A→B的最大同一時序關(guān)聯(lián)規(guī)則。
定義6,頻繁時序關(guān)聯(lián)規(guī)則。是指某時序規(guī)則模式的最大同一時序關(guān)聯(lián)規(guī)則支持度不小于最小支持度的時序關(guān)聯(lián)規(guī)則。
由上文可知,在頻繁N項集的所有時序規(guī)則模式中,不一定每個時序規(guī)則模式的最大同一時序關(guān)聯(lián)規(guī)則都能滿足最小支持度,所以設(shè)備故障預(yù)測可以轉(zhuǎn)換為求頻繁項集的頻繁時序關(guān)聯(lián)規(guī)則。
(1)求時序項集矩陣中所有頻繁項集
Apriori算法是關(guān)聯(lián)規(guī)則挖掘中最經(jīng)典的算法。由于挖掘的對象是海量的故障數(shù)據(jù),傳統(tǒng)的挖掘算法有兩個弊端[8-9]:①重復(fù)掃描數(shù)據(jù)庫,數(shù)據(jù)庫開銷大;②迭代次數(shù)多,處置的數(shù)據(jù)量大,算法適應(yīng)性差。文中提出一種Apriori改進算法,將故障數(shù)據(jù)庫轉(zhuǎn)換為形如式 (1)的矩陣。對數(shù)據(jù)庫的操作轉(zhuǎn)換為對矩陣的處理,減小了對計算機配置的要求,提高了算法效率和計算速度。利用該關(guān)聯(lián)規(guī)則算法找出時序項集矩陣中所有頻繁項集。
(2)求頻繁時序關(guān)聯(lián)規(guī)則
在所有頻繁項集中,找到每個頻繁項集的所有時序規(guī)則模式。通過最小支持度,篩選出所有頻繁時序關(guān)聯(lián)規(guī)則,最后做出相應(yīng)的決策。
圖1為算法在設(shè)備故障預(yù)測中的應(yīng)用過程。
圖1 算法在設(shè)備故障預(yù)測中的應(yīng)用過程
文中主要用到兩個算法:Apriori改進算法和頻繁時序關(guān)聯(lián)規(guī)則查找算法。將詳細描述這兩個算法。
基于Apriori改進算法找出時序項集矩陣中的所有頻繁項集步驟如下:
(1)采集的故障數(shù)據(jù)預(yù)處理。將沒有噪聲的數(shù)據(jù)轉(zhuǎn)換為形如式 (1)的時序項集矩陣M,每個事務(wù)代表一臺設(shè)備,每個項目代表一個故障代碼。在進行矩陣計算時,矩陣時序項的值用d[i,j]代替,矩陣時序項的值若為 (0,0),d[i,j]=0,否則d[i,j]=1。
For(int i=0;i<m;i++){//將故障數(shù)據(jù)轉(zhuǎn)換為時序項集矩陣
(2)增加第 (m+1)行和第 (n+1)列,得到時序候選項集矩陣M0。矩陣M每行求和,得到每臺設(shè)備發(fā)生的故障代碼數(shù);每列求和,得到故障代碼的設(shè)備支持數(shù)。生成 (m+1)行和 (n+1)列,將支持數(shù)從大到小排列,得到矩陣M0。
order by d[m+1,j]desc// 矩陣按故障代碼的設(shè)備支持數(shù)降序排列
(3)計算時序項集最小支持數(shù) minSupCount,minSupCount等于時序項集最小支持度minSup與事務(wù)數(shù)的乘積,也就是與設(shè)備數(shù)的乘積,并取不小于它的最小整數(shù)。
其中:Ceiling表示不小于給定數(shù)的最小整數(shù),m為事務(wù)的數(shù)量。
(4)求頻繁K項集L[k]
在求頻繁K項集支持數(shù)時,對每項所在的列做向量內(nèi)積運算,只有所有項對應(yīng)的值均為1時,結(jié)果才為1,否則為0。如果某設(shè)備的項目數(shù)小于k,則該設(shè)備所在的行d[i,j]值為“1”的數(shù)目也小于k,所以可以直接刪除該行。
刪除不滿足要求的行后,重新進行列運算,并按支持數(shù)從大到小排列。
刪除支持數(shù)小于最小支持數(shù)的列,重新進行運算。最后得到時序候選項集矩陣Mn。
通過向量內(nèi)積運算計算各項集的支持數(shù),與最小支持數(shù)比較,得到頻繁K項集L[k]。
for(int i=0;i<m;i++)//計算頻繁項集L[k],刪除項目數(shù)小于k的行;
//刪除i行后,i行后面的事務(wù)往前移動;m--;//行數(shù)減1;
for(int j=0;j<n;j++)//刪除支持數(shù)小于最小支持數(shù)額列;
//刪除j列后,j列后面的項目往前移動;
n--;//列數(shù)減1;
//重新進行行列求和;
//做向量內(nèi)積運算得到各個候選項集的支持數(shù)s;
L[k]={C[k]|s> =minSupCount};// 得到頻繁項集 L[k];
為了便于描述算法,對于時序項集((I),T)提出以下方法:
時序項集((I),T),其中I為項集,T為時序項集的時間戳,T的值為I中最后一個時序項的時間戳。定義運算符“#”,表達式#((I),T),若T為所有時序項中的最大值,輸出1,否則輸出0。
算法偽代碼如下:
輸入:所有的頻繁項集List{L[K]},最小支持度minSup
輸出:頻繁時序關(guān)聯(lián)規(guī)則
for all pattern{//每個頻繁項集的所有時序規(guī)則模式做循環(huán);
按照”→”拆分時序規(guī)則模式為時序項集A和時序項B;
//時序規(guī)則模式相減運算;
//時間大于0,保存結(jié)果;
ΔT1∩ΔT2∩…∩ΔTi//時間模式判別運算;
計算最大同一時序關(guān)聯(lián)規(guī)則的支持度,與最小支持度比較,輸出頻繁時序關(guān)聯(lián)規(guī)則;
舉例說明,如表3所示,假設(shè)為某汽車企業(yè)處理后的時序故障數(shù)據(jù),其中設(shè)備編號為同一類型的設(shè)備。
表3 時序故障數(shù)據(jù)
掃描故障數(shù)據(jù)庫,表3數(shù)據(jù)轉(zhuǎn)換為時序項集矩陣M:
時序項的值若為 (0,0)用0代替,否則用1代替,分別對行列求和,并按項目支持數(shù)降序排列,得到矩陣M0:
設(shè)最小支持度為40%,最小支持數(shù)minSupCount=40% ×6=2.4,取整數(shù)3。
求頻繁1項集L[1]。刪除支持數(shù)小于3的列,重新計算后的矩陣為M1:
所以,頻繁1 項集L[1]={{P02},{P03},{P05},{P06}}。
求頻繁2項集L[2]。刪除矩陣最后一列項目數(shù)小于2的行,此處沒有小于2的行,故M2=M1。計算候選2項集的支持數(shù):
所以,頻繁 2 項集L[2]={{P02,P05},{P02,P06},{P02,P03},{P05,P03}}。
求頻繁3項集L[3]。刪除矩陣最后一列項目數(shù)小于3的行,刪除支持數(shù)小于3的列,重新計算后的矩陣為M3:
計算候選3項集的支持數(shù):
SupCount(P02*P05*P03)=4;
所以,頻繁 3 項集L[3]={{P02,P03,P05}};頻繁3項集是最大頻繁項集。
所有頻繁項集為:
找到每個頻繁項集的所有時序規(guī)則模式,根據(jù)頻繁時序關(guān)聯(lián)規(guī)則查找算法,輸出頻繁時序關(guān)聯(lián)規(guī)則。限于篇幅,文中以頻繁3項集L[3]為例介紹。
L[3]的所有時序規(guī)則模式為:P02P05→P03,P05P02→P03,P02P03→P05,P03P02→P05,P03P05→P02,P05P03→P02。
對于P02P05→P03,在時序候選項集矩陣M3的第一條記錄中,拆分時序規(guī)則模式,對應(yīng)的時序項集為((P02,P05),24)和(P03,12),#((P02,P05),24)=1,做時間模式相減運算:
由于ΔT<0,放棄該記錄,繼續(xù)循環(huán),同理計算,其他記錄的ΔT都小于0,故無最大同一時序關(guān)聯(lián)規(guī)則,支持度小于最小支持數(shù)3。
同理可知,P05P02→P03,P03P02→P05,P03P05→P02,P05P03→P02的支持度都小于最小支持數(shù)3,放棄這些規(guī)則模式。
對于P02P03→P05。每條記錄的時序關(guān)聯(lián)規(guī)則為:
12∩12∩12=3,故矩陣中有3條記錄支持時序關(guān)聯(lián)規(guī)則P02P03→P05:ΔT=12,不小于最小支持數(shù)3。
輸出時序關(guān)聯(lián)規(guī)則P02P03→P05:ΔT=12,可以描述為:這種類型的設(shè)備首先發(fā)生故障P02,再發(fā)生故障P03,之后的12個單位時間內(nèi)會發(fā)生故障P05。
設(shè)備故障預(yù)測是提高設(shè)備穩(wěn)定性和可靠性的重要方法。文中提出了基于時序關(guān)聯(lián)規(guī)則的設(shè)備故障預(yù)測方法,考慮故障數(shù)據(jù)的特點,應(yīng)用Apriori傳統(tǒng)關(guān)聯(lián)規(guī)則算法的思想,將故障數(shù)據(jù)轉(zhuǎn)換為時序項集矩陣,利用Apriori改進算法和頻繁時序關(guān)聯(lián)規(guī)則查找算法,求出時序項集矩陣的頻繁時序關(guān)聯(lián)規(guī)則,從而預(yù)測設(shè)備故障趨勢,為管理人員制定維修決策提供可靠依據(jù),減小設(shè)備維護支出,提高了設(shè)備維護效率。該算法的缺點是沒有考慮設(shè)備保養(yǎng)的情況,下一步將針對保養(yǎng)設(shè)備,增加反饋機制,調(diào)整現(xiàn)有算法規(guī)則進行研究。
[1]趙永滿,梅衛(wèi)江,吳疆,等.機械故障診斷技術(shù)發(fā)展及趨勢分析[J].機床與液壓,2009,37(10):255 -256.
[2]YAM R C M,TSE P W,Li L,et al.Intelligent predictive decision support system for condition-based maintenance[J].International Journal of Advanced Manufacturing Technology,2001,17(5):383 -391.
[3]王寧,孫樹棟,李淑敏,等.基于DD-HSMM的設(shè)備運行狀態(tài)識別與故障預(yù)測方法[J].計算機集成制造系統(tǒng),2012(8):1861-1868.
[4]CAESRENDRA W,WIDODO A,YANG B S.Combination of Probability Approach and Support Vector Machine Towards Machine Health Prognostics[J].Probabilistic Engineering Mechanics,2011,26(2):165 -173.
[5]武兵,林健,熊曉燕.基于支持向量回歸的多參數(shù)設(shè)備故障預(yù)測方法[J].振動測試與診斷,2012(5):791-795,864.
[6]AGRAWAL R,IMIELINSKI T,SWAMI A.Mining Sssociation Rules between Sets of Items in Large Databases[C]//Proceedings of the 1993 ACM SIGMOD International Conference on Management of Data.Washington DC,United states,1993:207 -216.
[7]王愛平,王占鳳,陶嗣干,等.數(shù)據(jù)挖掘中常用關(guān)聯(lián)規(guī)則挖掘算法[J].計算機技術(shù)與發(fā)展,2010(4):105-108.
[8]崔貫勛,李梁,王柯柯,等.關(guān)聯(lián)規(guī)則挖掘中Apriori算法的研究與改進[J].計算機應(yīng)用,2010(11):2952-2955.
[9]朱其祥,徐勇,張林.基于改進Apriori算法的關(guān)聯(lián)規(guī)則挖掘研究[J].計算機技術(shù)與發(fā)展,2006(7):102-104.