邱 昕,甘 超,江雄心,涂海寧,顧 嘉
(南昌大學(xué) 機(jī)電工程學(xué)院,南昌 330031)
基于云計(jì)算環(huán)境下Apriori算法的設(shè)備故障診斷技術(shù)研究*
邱 昕,甘 超,江雄心,涂海寧,顧 嘉
(南昌大學(xué) 機(jī)電工程學(xué)院,南昌 330031)
故障診斷是保障設(shè)備安全運(yùn)行的重要手段。文章采用結(jié)構(gòu)化存儲(chǔ)的故障數(shù)據(jù)模型,考慮到故障數(shù)據(jù)的特點(diǎn),以及傳統(tǒng)Apriori算法的瓶頸,提出了一種改進(jìn)的Apriori算法,應(yīng)用于MapReduce計(jì)算框架,減少了算法的掃描次數(shù),提高了算法的執(zhí)行效率。在云計(jì)算環(huán)境下對(duì)故障數(shù)據(jù)進(jìn)行關(guān)聯(lián)規(guī)則挖掘,找出發(fā)生故障時(shí)各設(shè)備檢測(cè)狀態(tài)的關(guān)聯(lián)關(guān)系,為設(shè)備維修和管理提供可靠依據(jù)。最后給出了該方法的可行性實(shí)例驗(yàn)證。
云計(jì)算;故障診斷;數(shù)據(jù)挖掘;Apriori算法
故障數(shù)據(jù)挖掘是故障診斷技術(shù)的重要研究?jī)?nèi)容之一。關(guān)聯(lián)規(guī)則是數(shù)據(jù)挖掘的研究重點(diǎn),Apriori算法是最經(jīng)典的關(guān)聯(lián)規(guī)則算法[1]。近年來,國(guó)內(nèi)外對(duì)Apriori算法的改進(jìn)和優(yōu)化取得了很大的成就。高宏賓等[2]提出了樹形結(jié)構(gòu)來存儲(chǔ)事務(wù)項(xiàng)集數(shù)據(jù),有效提高數(shù)據(jù)量巨大時(shí)算法的性能;苗苗苗等[3]利用了一種基于數(shù)組和矩陣壓縮的Apriori改進(jìn)算法,按照相關(guān)性質(zhì)對(duì)事務(wù)矩陣進(jìn)行壓縮,以減少算法的運(yùn)算量;BRIN等[4]采用動(dòng)態(tài)模式計(jì)數(shù)法DIC,通過分段增加候選頻繁模式集,簡(jiǎn)化了支持率的計(jì)算;劉興濤等[5]利用二維數(shù)組標(biāo)志位進(jìn)行事務(wù)壓縮和利用項(xiàng)集有序性進(jìn)行項(xiàng)目壓縮,優(yōu)化Apriori算法的運(yùn)行效率。
盡管Apriori算法具有很多改進(jìn)方法,但用于設(shè)備故障診斷在算法效率和可行性上還不是很理想?;诠收蠑?shù)據(jù)的特點(diǎn),為了進(jìn)一步提高算法的效率,本文提出了一種云計(jì)算環(huán)境下Apriori算法的設(shè)備故障診斷方法。云計(jì)算(Cloud Computing)是一種新興的計(jì)算模型,是分布式計(jì)算、并行計(jì)算和網(wǎng)格計(jì)算的發(fā)展[6]。處理海量數(shù)據(jù)和并行計(jì)算是云計(jì)算技術(shù)的優(yōu)勢(shì)所在。
1.1 故障數(shù)據(jù)的特點(diǎn)
隨著檢測(cè)技術(shù)的發(fā)展以及企業(yè)對(duì)設(shè)備診斷的重視,制造企業(yè)能收集到大量的原始故障數(shù)據(jù)。這些故障數(shù)據(jù)有以下特點(diǎn)[7-8]:
(1)大量性。隨著設(shè)備使用時(shí)間的推移,會(huì)產(chǎn)生大量的故障數(shù)據(jù);
(2)動(dòng)態(tài)性。近年來,多功能型設(shè)備不斷增多,故障機(jī)理具有多樣性和突發(fā)性的特點(diǎn)。由于設(shè)備處于不停的運(yùn)行狀態(tài),采集的故障數(shù)據(jù)具有大量的動(dòng)態(tài)信息;
(3)冗余性。設(shè)備發(fā)生故障時(shí)需要記錄大量的狀態(tài)參數(shù)、故障信息、設(shè)備信息等,這些信息具有一定的冗余性;
(4)噪音大。故障數(shù)據(jù)具有比較大的噪音。
1.2 模型的數(shù)據(jù)結(jié)構(gòu)
在大量的原始故障數(shù)據(jù)中,可以通過每次維修行為的維修單號(hào)來識(shí)別,其中一次維修行為可能存在多個(gè)狀態(tài)檢測(cè)信息。為了便于采用關(guān)聯(lián)規(guī)則挖掘思想,將原始故障數(shù)據(jù)中所有的記錄按照維修單號(hào)進(jìn)行合并,得到所需的數(shù)據(jù)模型。
(1)由于涉及維修單、備件、故障代碼、維修人員、設(shè)備狀態(tài)等信息,元素比較多,數(shù)據(jù)量很大,為了便于管理和維護(hù),采用結(jié)構(gòu)化存儲(chǔ)方式,如圖1所示;
(2)每條記錄由唯一的維修單號(hào)標(biāo)識(shí),某條記錄中的狀態(tài)信息都與某次維修行為相關(guān),不存在相同維修單號(hào)的兩條記錄;
(3)每條記錄用
MapReduce[9-10]是Google實(shí)驗(yàn)室提出的為多臺(tái)計(jì)算機(jī)并行處理大量數(shù)據(jù)而設(shè)計(jì)的并行計(jì)算框架。它通過“Map(映射)”和“Reduce(化簡(jiǎn))”這兩個(gè)函數(shù)處理運(yùn)行于大規(guī)模集群上的并行計(jì)算。Map階段的功能是將輸入的子數(shù)據(jù)集解析出一個(gè)鍵值對(duì)
如圖2是MapReduce計(jì)算框架的執(zhí)行過程。
3.1 Apriori算法改進(jìn)描述
Apriori算法使用的是一種逐層搜索的迭代算法,通過對(duì)頻繁K項(xiàng)集的剪枝、連接操作,搜索得到頻繁(K+1)項(xiàng)集。
在設(shè)備故障診斷中,隨著設(shè)備使用壽命的推移和監(jiān)控時(shí)間的積累,數(shù)據(jù)庫存儲(chǔ)了海量的故障數(shù)據(jù)和狀態(tài)數(shù)據(jù)。傳統(tǒng)的Apriori算法有一下幾個(gè)劣勢(shì)[11-12]:
1)重復(fù)掃描數(shù)據(jù)庫,數(shù)據(jù)庫開銷大,診斷速度緩慢;
2)迭代次數(shù)多,算法適應(yīng)性差;
3)需要高配置的計(jì)算機(jī),加劇企業(yè)在故障診斷方面的經(jīng)濟(jì)開銷。
為了提高設(shè)備故障診斷中Apriori算法的效率和伸縮性,提高算法的運(yùn)行速度和挖掘效率,本文在云計(jì)算環(huán)境下對(duì)Apriori算法加以改進(jìn),由于云計(jì)算可支持算法的并行執(zhí)行,具有分布性的特點(diǎn),為Apriori算法的改進(jìn)提供了可能。算法的思路如下:
1)將故障數(shù)據(jù)庫分為數(shù)據(jù)量相當(dāng)?shù)腗個(gè)數(shù)據(jù)子集,發(fā)送到M個(gè)工作站點(diǎn),掃描每個(gè)工作站點(diǎn)的數(shù)據(jù)子集,分別產(chǎn)生一個(gè)局部的候選K項(xiàng)集,每個(gè)候選項(xiàng)的支持?jǐn)?shù)設(shè)為1;
2)通過一定的函數(shù)和方法將M個(gè)工作站點(diǎn)中相同的候選項(xiàng)和支持?jǐn)?shù)發(fā)送到R個(gè)站點(diǎn);
3)R站點(diǎn)累加相同項(xiàng)的支持?jǐn)?shù),并與最小支持?jǐn)?shù)比較,得到局部頻繁K項(xiàng)集;
4)合并R個(gè)站點(diǎn)的輸出,得到最終的頻繁K項(xiàng)集。
3.2 改進(jìn)的Apriori算法用于MapReduce計(jì)算框架
采用MapReduce計(jì)算框架,對(duì)Apriori算法加以改進(jìn)包括五個(gè)階段,分別是Input階段、Map階段、Shuffle & Sort階段、Reduce階段、Output階段。具體步驟如下:
(1)Input階段:MapReduce庫將故障數(shù)據(jù)庫水平劃分,分為數(shù)據(jù)量相當(dāng)?shù)腗個(gè)數(shù)據(jù)子集。并將數(shù)據(jù)子集以
(3) Shuffle & Sort階段:由于故障數(shù)據(jù)量巨大,Map函數(shù)產(chǎn)生的中間
然后利用分區(qū)函數(shù)Separater將Combiner函數(shù)的輸出結(jié)果分成R個(gè)不同的分區(qū),將相同項(xiàng)的中間結(jié)果存儲(chǔ)在同一個(gè)分區(qū)上,并分配到指定的Reduce函數(shù)。Separater函數(shù)的蘊(yùn)含式如下:
其中mj為k項(xiàng)集對(duì)應(yīng)的項(xiàng)在故障數(shù)據(jù)庫中的序數(shù)。
(4) Output階段:合并每個(gè)工作站點(diǎn)的局部頻繁K項(xiàng)集,得到最終頻繁K項(xiàng)集Lk..接著找頻繁K+1項(xiàng)集。
改進(jìn)的Apriori算法用于MapReduce計(jì)算框架的偽代碼如下:
輸入:故障數(shù)據(jù)庫D,最小支持?jǐn)?shù)minSupport,工作站點(diǎn)數(shù)M,工作站點(diǎn)數(shù)R;
輸出:頻繁K項(xiàng)集Lk..
1: 劃分故障數(shù)據(jù)庫為M個(gè)數(shù)據(jù)子集;
2: Convert to
3: Map (Tid , List(value)); //Tid為故障數(shù)據(jù)庫中的維修單號(hào),List(value)為維修單對(duì)應(yīng)的設(shè)備狀態(tài)信息;
6: Combiner< Itemsetsk, list(1)>; // Itemsetsk為K項(xiàng)集,list(1)為1列表;
7: int count = 0;
8: For each item in list(1) // 循環(huán)每個(gè)相同項(xiàng);
9:count +=1;
10: Output (Itemsetsk, count); // count為該項(xiàng)的支持總數(shù);
11: 利用分區(qū)函數(shù)Separater將Combiner函數(shù)的輸出結(jié)果分成R個(gè)不同的分區(qū), 并分配到指定的Reduce函數(shù);
12: Reduce(Itemsetsk, List(Count)) // Itemsetsk為K項(xiàng)集,List(Count)為支持?jǐn)?shù)列表;
13: int support = 0;
14: for each Count in list// 循環(huán)每個(gè)相同項(xiàng);
15: support += Count;
16: Output (Itemsetsk, support);
17: support與最小支持?jǐn)?shù)minSupport比較,合并比較之后每個(gè)Reduce函數(shù)的輸出,得到頻繁K項(xiàng)集Lk..
改進(jìn)的Apriori算法結(jié)合MapReduce計(jì)算框架主要有兩個(gè)優(yōu)勢(shì):①減少故障數(shù)據(jù)庫的掃描次數(shù);②查找頻繁項(xiàng)集K項(xiàng)集和查找頻繁K+1項(xiàng)集是完全獨(dú)立的,可以并行計(jì)算,提高了算法的執(zhí)行效率。
表1為某汽車企業(yè)故障數(shù)據(jù),由于數(shù)據(jù)量巨大,為了便于表述,本文只提取了部分故障數(shù)據(jù)。信號(hào)(Itemset)表示機(jī)械設(shè)備發(fā)生故障時(shí)可供檢測(cè)的信號(hào)。共檢測(cè)了5種信號(hào),分別為轉(zhuǎn)速信號(hào)、轉(zhuǎn)矩信號(hào)、壓力信號(hào)、溫度信號(hào)、振幅信號(hào),這里分別用A、B、C、D、E表示。
表1 某汽車企業(yè)部分故障數(shù)據(jù)
假設(shè)最小支持?jǐn)?shù)minSupport= 3,工作站點(diǎn)數(shù)M= 2,工作站點(diǎn)數(shù)R= 3。本文以計(jì)算頻繁2項(xiàng)集為例。
把故障數(shù)據(jù)水平劃分,分成兩個(gè)數(shù)據(jù)子集D1和D2:
D1 = { R107-20071115-1 , R107-20071015-2 , R107-20071116-2};
D2 = { R107-20071121-3 , R107-20051024-3 , R107-20051210-1};
將數(shù)據(jù)子集D1和D2發(fā)送給兩個(gè)Map工作站點(diǎn),并將數(shù)據(jù)子集以
Map工作站點(diǎn)0:
< R107-20071115-1,{A,B,D}> , < R107-20071015-2 , {B,C,D}> , < R107-20071116-2,{B,C}>;
Map工作站點(diǎn)1:
< R107-20071121-3,{A,B,D,E}> , < R107-20051024-3,{A,B,C,D}> , < R107-20051210-1 , {B,E}>;
執(zhí)行Map(key , value)函數(shù),每個(gè)候選項(xiàng)的支持?jǐn)?shù)計(jì)為1,得到局部候選2項(xiàng)集:
Map工作站點(diǎn)0:
Map(R107-20071115-1,{A,B,D})→<{A,B},1>,<{A,D},1>,<{B,D},1>;
Map(R107-20071015-2,{B,C,D})→<{B,C},1>,<{B,D},1>,<{C,D},1>;
Map(R107-20071116-2,{B,C})→<{B,C},1>;
Map工作站點(diǎn)1:
Map(R107-20071121-3,{A,B,D,E})→<{A,B},1>,<{A,D},1>,<{A,E},1>,<{D,E},1>,<{B,D},1>,<{B,E},1>;
Map(R107-20051024-3,{A,B,C,D})→<{A,B},1>,<{A,C},1>,<{A,D},1>,<{B,C},1>,<{B,D},1>,<{C,D},1>;
Map(R107-20051210-1,{B,E})→<{B,E},1>;
執(zhí)行Combiner(Itemsetsk,list(1))函數(shù),合并Map函數(shù)相同項(xiàng)的輸出:
Map工作站點(diǎn)0:
Combiner({A,B},list(1))→<{A,B},1>;Combiner({A,D},list(1))→<{A,D},1>;Combiner({B,D},list(1,1))→<{B,D},2>;Combiner({B,C},list(1,1))→<{B,C},2>;Combiner({C,D},list(1))→<{C,D},1>;
Map工作站點(diǎn)1:
Combiner({A,B},list(1,1))→<{A,B},2>;Combiner({A,D},list(1,1))→<{A,D},2>;Combiner({A,E},list(1))→<{A,E},1>;Combiner({D,E},list(1))→<{D,E},1>;Combiner({B,D},list(1,1))→<{B,D},2>;Combiner({B,E},list(1,1))→<{B,E},2>;Combiner({A,C},list(1))→<{B,D},1>;Combiner({B,C},list(1))→<{B,C},1>;Combiner({C,D},list(1))→<{C,D},1>;
執(zhí)行分區(qū)函數(shù)Separater函數(shù),將Combiner函數(shù)的輸出結(jié)果分成3個(gè)不同的分區(qū)(其中A、B、C、D、E的序數(shù)分別為1,2,3,4,5):
Separater({A,B})=(1+10*2)mode3=0;同理可得:Separater({A,D})=2;Separater({A,E})=0;Separater({D,E})=0;Separater({B,D})=0;Separater({B,E})=1;Separater({A,C})=1;Separater({B,C})=2;Separater({C,D})=1;
所以,{A,B},{A,E},{D,E},{B,D}分配到第0個(gè)Reduce工作站點(diǎn),{A,C},{C,D},{B,E}分配到第1個(gè)工作站點(diǎn),{A,D},{B,C}分配到第2個(gè)工作站點(diǎn)。
執(zhí)行Reduce函數(shù),累加其接收的候選2項(xiàng)集的支持?jǐn)?shù):
Reduce工作站點(diǎn)0:
Reduce({A,B},list(1,2))→<{A,B},3>;Reduce({A,E},list(1))→<{A,E},1>;Reduce({D,E},list(1))→<{D,E},1>;Reduce({B,D},list(2,2))→<{B,D},4>;
Reduce工作站點(diǎn)1:
Reduce({B,E},list(2))→<{B,E},2>;Reduce({A,C},list(1))→<{A,C},1>;Reduce({C,D},list(1,1))→<{C,D},2>;
Reduce工作站點(diǎn)2:
Reduce({A,D},list(1,2))→<{A,D},3>;Reduce({B,C},list(2,1))→<{B,C},3>;
與最小支持?jǐn)?shù)minSupport=3相比較,得到局部頻繁2項(xiàng)集:
合并每個(gè)工作站點(diǎn)的局部頻繁2項(xiàng)集,得到頻繁2項(xiàng)集:
同理可以得到,頻繁3項(xiàng)集L3= {{A,B,D}};
由此可以分析出設(shè)備發(fā)生故障時(shí),設(shè)備狀態(tài)信息的關(guān)聯(lián)關(guān)系。為設(shè)備維修和故障診斷提供決策支持。
故障診斷是提高設(shè)備可靠性和穩(wěn)定性的重要手段。本文提出了基于云計(jì)算環(huán)境下Apriori算法的設(shè)備故障診斷方法。采用結(jié)構(gòu)化存儲(chǔ)的故障數(shù)據(jù)模型,通過對(duì)Apriori算法的改進(jìn),結(jié)合MapReduce計(jì)算框架,采用并行計(jì)算求出頻繁項(xiàng)集,提高了傳統(tǒng)Apriori算法的計(jì)算效率,找出設(shè)備發(fā)生故障時(shí)設(shè)備檢測(cè)狀態(tài)信息的關(guān)聯(lián)關(guān)系,為維修決策和設(shè)備管理提供可靠依據(jù),并預(yù)測(cè)設(shè)備的運(yùn)行趨勢(shì),提高設(shè)備的使用效率和管理水平。
[1] Agrawal R, Imielinski T, Swami A. Mining association rules between sets of items in large databases[A]. Proceedings of the 1993 ACM SIGMOD International Conference on Management of Data, May 26 - 28 1993[C]. Washington, DC, United states: Publ by ACM, 1993:207-216.
[2] 高宏賓, 潘谷, 黃義明. 基于頻繁項(xiàng)集特性的Apriori算法的改進(jìn)[J]. 計(jì)算機(jī)工程與設(shè)計(jì), 2007,(10): 2273-2275,2378 .
[3] 苗苗苗, 王玉英. 基于矩陣壓縮的Apriori算法改進(jìn)的研究[J]. 計(jì)算機(jī)工程與應(yīng)用, 2013(1): 159-162.
[4] Brin S, Motwani R, Ullman JD, 等. Dynamic itemset counting and implication rules for market basket data[A]. Proceedings of the 1997 ACM SIGMOD International Conference on Management of Data, May 13, 1997-May 15, 1997[C]. Tucson, AZ, USA: ACM, 1997:255-264.
[5] 劉興濤, 石冰, 解英文. 挖掘關(guān)聯(lián)規(guī)則中Apriori算法的一種改進(jìn)[J]. 山東大學(xué)學(xué)報(bào)(理學(xué)版), 2008,(11): 67-71.
[6] 陳全, 鄧倩妮. 云計(jì)算及其關(guān)鍵技術(shù)[J]. 計(jì)算機(jī)應(yīng)用, 2009,29(9): 2562-2567.
[7] 褚建立, 陳步英. 基于數(shù)據(jù)挖掘的機(jī)械設(shè)備故障診斷的研究[J]. 微計(jì)算機(jī)信息, 2007(19): 208-209,171
[8] 劉繁茂. 面向故障過程的多設(shè)設(shè)可靠性分析與維修決策[D]:武漢: 華中科技大學(xué), 2011.
[9] Dean J, Ghemawat S. MapReduce: Simplified data processing on large clusters[J]. Communications of the ACM, 2008,51(1): 107-113 .
[10] 陳康, 鄭緯民. 云計(jì)算:系統(tǒng)實(shí)例與研究現(xiàn)狀[J]. 軟件學(xué)報(bào), 2009,20(5): 1337-1348.
[11] 崔貫勛, 李梁, 王柯柯, 等. 關(guān)聯(lián)規(guī)則挖掘中Apriori算法的研究與改進(jìn)[J]. 計(jì)算機(jī)應(yīng)用, 2010,30(11): 2952-2955.
[12] 朱其祥, 徐勇, 張林. 基于改進(jìn)Apriori算法的關(guān)聯(lián)規(guī)則挖掘研究[J]. 計(jì)算機(jī)技術(shù)與發(fā)展, 2006(7): 102-104.
(編輯 趙蓉)
Equipment Fault Diagnosis Technology Based on Apriori Algorithm in Cloud Computing Environment
QIU Xin, GAN Chao, JIANG Xiong-xin, TU Hai-ning, GU Jia
(School of Mechanical Engineering,Nanchang University,Nanchang 330031,China)
Equipment fault diagnosis is an important means to ensure safe operation of equipment. Structured storage of the fault data model is used in this paper. And an improved Apriori algorithm is proposed according to the characteristics of fault data and the deficiency of Apriori algorithm, combining the MapReduce programming model, which reduces the number of scanning and improves the efficiency of the algorithm. The correlation is exhumed among equipment inspection status by mining the association rules of fault data in cloud computing environment, which provides reliable support for equipment maintenance and management. At last an example is given to prove the feasibility.
cloud computing; fault diagnosis; data mining; apriori algorithm
1001-2265(2014)04-0045-04
10.13462/j.cnki.mmtamt.2014.04.012
2013-08-06;
2013-08-28
國(guó)家自然科學(xué)基金(50905083)
邱昕(1989—),女,江西贛州人,南昌大學(xué)碩士研究生,主要從事制造過程與管理方面的研究,(E-mail)crazy28@qq.com。
TH166;TG65
A