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