李軍
(中核建中核燃料元件有限公司,四川,宜賓 644000)
工業(yè)控制系統(tǒng)是集計算機技術(shù)、通信技術(shù)以及信息技術(shù)等多項先進技術(shù)為一體的綜合性大型系統(tǒng),為工業(yè)生產(chǎn)過程中的管理提供自動化應(yīng)用。隨著社會經(jīng)濟和信息化技術(shù)的不斷提升,工業(yè)控制系統(tǒng)在化學(xué)、鐵路、航空航天以及冶金等多個重要領(lǐng)域均取得了廣泛應(yīng)用,解決了工業(yè)生產(chǎn)過程中的自動化問題,保證整個過程在高精度和低能耗的環(huán)境下進行。在提高產(chǎn)品質(zhì)量和生產(chǎn)速度的同時,使得人工作業(yè)強度得以降低。
工業(yè)控制作為一個時刻處于變化的復(fù)雜動態(tài)過程,面臨諸多的問題,例如被控變量的選擇、系統(tǒng)關(guān)聯(lián)問題確定及動態(tài)系統(tǒng)異常數(shù)據(jù)挖掘等。以往研究方法大多采用專家經(jīng)驗,主觀性結(jié)果占絕大部分。文獻[1]設(shè)計了一種基于支持度—置信度—提升度框架的挖掘算法,從配網(wǎng)自動化控制系統(tǒng)歷史數(shù)據(jù)庫中低質(zhì)量的海量數(shù)據(jù)中智能挖掘頻繁項集,建立符合配網(wǎng)自動化動作邏輯,具備整體一致性的強關(guān)聯(lián)規(guī)則。文獻[2]提出了一種利用矩陣描述事務(wù)以減少遍歷次數(shù)的挖掘改進算法,同時該算法基于云平臺技術(shù)并采用并行方式以降低時間復(fù)雜度。但是上述兩種方法不能及時挖掘到工業(yè)控制系統(tǒng)運行過程中的異常數(shù)據(jù)。
數(shù)據(jù)挖掘算法可以憑借關(guān)聯(lián)規(guī)則探究海量數(shù)據(jù)之間存在的深層聯(lián)系,為此,本文創(chuàng)新性地利用關(guān)聯(lián)規(guī)則來挖掘工業(yè)控制系統(tǒng)運維數(shù)據(jù)內(nèi)在聯(lián)系,幫助更好延長系統(tǒng)壽命、降低危險事故發(fā)生概率。首先,對關(guān)聯(lián)規(guī)則中的支持度和置信度展開分析,研究二者的值與關(guān)聯(lián)強度間強關(guān)聯(lián)規(guī)則,對采集到的工業(yè)控制運維數(shù)據(jù)進行預(yù)處理,使其轉(zhuǎn)換為離散型數(shù)據(jù),利用Apriori算法和DLG(梯度深度泄露算法)計算得到頻繁項集,循環(huán)計算頻繁項目集,直至不再產(chǎn)生新的項集時終止計算,此時所得結(jié)果即為最終的數(shù)據(jù)挖掘結(jié)果。通過在TEP(田納西伊化學(xué)工業(yè)仿真控制過程)上展開仿真實驗,結(jié)果也驗證了本文方法在工業(yè)控制系統(tǒng)中的實用性,可及時挖掘到異常數(shù)據(jù)以明顯的波動圖顯示出來,提醒工作人員及時查看異常部分,減少因停機造成的成本損失。
以關(guān)聯(lián)規(guī)則作為依據(jù)的數(shù)據(jù)挖掘算法,可以根據(jù)某種算法規(guī)則或者已知的、但極為復(fù)雜的條件進行深層次條件規(guī)則計算,最終得到最正確、理想的信息結(jié)果。關(guān)聯(lián)規(guī)則數(shù)據(jù)挖掘,就是在給定的事務(wù)數(shù)據(jù)庫中,通過不斷改變數(shù)值確保支持度和置信度始終為最小值。與其他數(shù)據(jù)挖掘算法相比,關(guān)聯(lián)規(guī)則具有以下無法比擬的幾點優(yōu)勢:
(1) 通過計算可以得到清晰、有用的規(guī)則信息結(jié)果;
(2) 可以通過間接方法[3]實現(xiàn)數(shù)據(jù)的挖掘,無需過多步驟即可完成;
(3) 對于變長集合條件數(shù)據(jù)依然可以實現(xiàn)有效處理;
(4) 可以預(yù)測關(guān)聯(lián)規(guī)則計算過程中產(chǎn)生的消耗量[4]。
關(guān)聯(lián)規(guī)則可以反映項目與項目之間存在的某種關(guān)系以及關(guān)系的密切程度。將E={E1,E2,…,En}定義為一個事件集合,其中,n代表的是不同事件元素。E中的任意一個元素,En(n=1,2,…,p)都可稱之為事件項。將D定義為已知事務(wù)數(shù)據(jù)庫中所有與挖掘任務(wù)有關(guān)的事件集合,事務(wù)T均為E的子集,每個事務(wù)都分配了獨有的ID號,用TID來表示。將X定義為E的任意子集,也被稱為模式[5](項集)。關(guān)聯(lián)規(guī)則的形式是X?Y的蘊含式,其中X?E,Y?E,且X是關(guān)聯(lián)規(guī)則中的條件,Y是關(guān)聯(lián)規(guī)則的最終結(jié)果。
關(guān)聯(lián)分析的目的就是將數(shù)據(jù)之間存在的深層聯(lián)系挖掘出來,換句話說,就是通過對記錄集的分析得到項目之間存在的關(guān)聯(lián)性。
關(guān)聯(lián)規(guī)則X?Y對D的支持度(support)換個角度也可以看作是D中包含事務(wù)X和Y的比例大小;關(guān)聯(lián)規(guī)則X?Y對D的置信度(confidence),就是計算D中既包含X又包含Y的事物數(shù)、在僅包含X的事物數(shù)中所占有的比例大小。計算公式如式(1)、式(2):
(1)
(2)
與此同時,D包含A事務(wù)中僅包含B的概率值,可以通過條件概率P(B|A)計算得到,計算過程如式(3):
P(B|A)=confidence(A?B)
(3)
式中,P(B|A)表示在發(fā)生了A事件的前提下,發(fā)生B事件的概率值。
設(shè)定一個閾值a,當支持度最小值min_sup和置信度最小值min_conf同時小于a時,認定此時的規(guī)則為強規(guī)則;反之,如果二者的值大于a,則認定此時的規(guī)則為弱規(guī)則[6]。本文主要針對強規(guī)則進行分析,計算公式為

(4)
數(shù)據(jù)挖掘就是在工業(yè)控制運維數(shù)據(jù)中,找出滿足上述強規(guī)則的數(shù)據(jù)集。通過不斷調(diào)整支持度support和置信度confidence的值,使其在滿足最小值條件下時進行數(shù)據(jù)之間關(guān)聯(lián)程度的挖掘。在計算過程中,(X∪Y)與強規(guī)則X?Y相互對應(yīng),因此,(X∪Y)也是一個頻繁集C。基于此,可以將關(guān)聯(lián)規(guī)則的數(shù)據(jù)挖掘過程看作是根據(jù)min_sup找出D中的所有C或者是根據(jù)C和min_conf產(chǎn)生關(guān)聯(lián)規(guī)則的過程。
完整的數(shù)據(jù)挖掘過程包含數(shù)據(jù)預(yù)處理和關(guān)聯(lián)規(guī)則挖掘兩個步驟。
本文采集的工業(yè)系統(tǒng)運維數(shù)據(jù)主要包括運行時間、運行狀態(tài)、是否發(fā)生異常以及異常發(fā)生原因[7]等幾個方面。由于直接采集到的數(shù)據(jù)不利于挖掘,因此先對其進行數(shù)據(jù)預(yù)處理。針對采集到的各類數(shù)據(jù),選取其中的非數(shù)值數(shù)據(jù)進行清洗操作,將殘缺不全的數(shù)據(jù)直接剔除掉。鑒于關(guān)聯(lián)規(guī)則處理的數(shù)據(jù)多為離散型數(shù)據(jù)[8],因此,還需將數(shù)值型數(shù)據(jù)轉(zhuǎn)換為離散型數(shù)據(jù)。完成以上兩步處理后,即可開始數(shù)據(jù)挖掘工作。
通過計算二值化特征的方式,將數(shù)據(jù)轉(zhuǎn)化成0與1的形式,以便之后的數(shù)據(jù)挖掘,此時可以通過式(5)計算被轉(zhuǎn)換后的工業(yè)系統(tǒng)運維離散型數(shù)據(jù)。

(5)
式中,xi表示經(jīng)過離散型數(shù)據(jù)轉(zhuǎn)換的數(shù)據(jù)形式,通常為0或1,xp表示未經(jīng)過轉(zhuǎn)換的離散型數(shù)據(jù),ad表示離散型數(shù)據(jù)中的一個隨機數(shù),gi表示原始數(shù)據(jù)。通過該公式轉(zhuǎn)換工業(yè)系統(tǒng)運維數(shù)據(jù)。當統(tǒng)計不同時間序列中,經(jīng)過轉(zhuǎn)換的數(shù)據(jù)格式時,可以通過式(6)判斷是否轉(zhuǎn)換完全。
(6)
式中,fh表示離散型數(shù)據(jù)的轉(zhuǎn)換標準差,mp表示轉(zhuǎn)換差值,xi表示為轉(zhuǎn)換前的格式,Ri表示經(jīng)過轉(zhuǎn)換的工業(yè)系統(tǒng)運維數(shù)據(jù)數(shù)量。若fh大于0,則表示轉(zhuǎn)換成功,若fh小于0,則表示離散型數(shù)據(jù)轉(zhuǎn)換失敗,通過該公式可以判斷離散型數(shù)據(jù)轉(zhuǎn)換是否成功[9]。
Apriori算法可有效降低關(guān)聯(lián)規(guī)則中最大頻繁項集對后續(xù)挖掘結(jié)果的影響[10]。通過對k項集的搜索過程得到k+1項集,給定一個頻繁1項集和2項集,將L1作為1項集的集合、L2作為2項集的集合,通過對集合L1的搜索可以得到集合L2。按照這個思路計算下去,直到最后不會再生成新的K項集停止[11]。依據(jù)Apriori算法的思路,在頻繁項集下的所有非空子集也都是頻繁的,可通過以下兩個步驟來實現(xiàn)。
(1) 連接步:將Lk-1中的每一個元素都連接起來,即可得到Lk的候選集合Ck。
(2) 剪枝步:將Ck看作是Lk的超集,也就是說,在Ck中,存在部分元素不是頻繁的。可按照Apriori算法的計算思路,逐漸減小Ck的范圍,全面掃描工業(yè)控制系統(tǒng)運維數(shù)據(jù)庫[12],得到Ck中所有候選的計數(shù),進一步得到Lk頻繁項集的最終挖掘結(jié)果。
在這里引入DLG算法,減少計算過程中掃描事務(wù)數(shù)據(jù)庫的次數(shù),降低挖掘過程中的I/0代價。DLG算法的實現(xiàn)過程主要有三步:首先,生成頻繁1項目集并記錄下來;然后構(gòu)建關(guān)聯(lián)圖,將所有頻繁項目集之間的關(guān)系通過關(guān)聯(lián)圖的形式展現(xiàn)出來;最后通過觀察關(guān)聯(lián)圖,生成頻繁k項集(k?2)。接下來對其進行詳細描述。
(1) 首先,利用DLG算法對工業(yè)控制系統(tǒng)運維數(shù)據(jù)庫進行掃描,通過計算得到其支持度值,針對所有項目建立與之對應(yīng)的比特向量,由數(shù)據(jù)庫中事務(wù)數(shù)量的多少來決定向量的最終長度。將BVi定義為與項目i之間存在關(guān)聯(lián)的比特向量,假設(shè)項目i被包含在第j個事務(wù)中,那么就需要將BVi的第i個比特向量長度設(shè)置為1;反之,如果第j個事務(wù)中不包含i,則將第j個比特向量設(shè)置為0[13]。在BVi中,1的數(shù)量決定了項目i的支持度。
(2)BVi1∧BVi2∧…∧BVik中含有1的數(shù)量直接決定了項目集{i1,i2,…,ik}的支持度。符號“∧”表示了邏輯“與”運算。通過步驟(1)對數(shù)據(jù)庫完成掃描后,這一步無需再重復(fù),直接構(gòu)建關(guān)聯(lián)圖即可。如果min_sup大于等于BVi∧BVp(ip)中包含1的數(shù)量,則在項目i與項目p之間建立一條有向邊,定義項集(i,p)是一個頻繁2項集。
(3) 完成關(guān)聯(lián)圖的構(gòu)建后,得到頻繁k項集(k?2)。根據(jù)DLG算法的規(guī)則,通過生成的頻繁項集對Lk(k?2)項集進行擴展,得到(k+1)2項集。假設(shè){i1,i2,…,ik}為一個頻繁k2項集,通過項目之間的有向邊,使得項集{i1,i2,…,ik}擴展成為(k+1)項集。當DLG算法不再生成新的頻繁k項集,就可以終止計算過程。
通過上述分析過程,代入到本文要解決的工業(yè)控制系統(tǒng)運維數(shù)據(jù)的挖掘過程中,并對關(guān)聯(lián)規(guī)則做以下定義:假設(shè)給定了一組異常運行數(shù)據(jù)M=(M1,M2,…,Mm),異常情況發(fā)生的部位為S=(Sec 1,Mec 2,…,SecN),異常數(shù)據(jù)挖掘的關(guān)聯(lián)規(guī)則是X?Y的蘊含式,其中,X、Y分別是M和S的模式。
如果通過計算得到的關(guān)聯(lián)規(guī)則表達式為{M1,M2,M3?2},則可判定在M1、M2、M2挖掘到了系統(tǒng)異常運行數(shù)據(jù),斷定異常發(fā)生的部分為2。
綜上所述,利用關(guān)聯(lián)規(guī)則實現(xiàn)工業(yè)控制系統(tǒng)運維數(shù)據(jù)挖掘的算法流程圖如圖1所示。

圖1 本文算法實現(xiàn)流程圖
為了驗證本文方法在實際應(yīng)用中是否可以取得滿意的挖掘結(jié)果,將實際化學(xué)工業(yè)的TEP控制案例作為實驗的仿真環(huán)境。實驗中所用到的數(shù)據(jù)是在某大型工業(yè)生產(chǎn)過程中采集得到,借助TEP仿真系統(tǒng)的過程監(jiān)測來實現(xiàn)。
TEP過程中參與操作的單元主要有五個:反應(yīng)器、循環(huán)壓縮機、汽/液分離器、冷凝器和汽提塔。在反應(yīng)器內(nèi)部存在某種催化劑,當氣態(tài)的反應(yīng)物進入后,經(jīng)過催化劑的作用使其輸出狀態(tài)為液態(tài)。這里所使用的催化劑能完全與液體相溶,且為一種永久性催化劑。同時,反應(yīng)器內(nèi)部還放置了一根冷卻管,防止反應(yīng)過程散發(fā)的大量熱影響反應(yīng)結(jié)果。反應(yīng)剩下的氣態(tài)物體以及未完全反應(yīng)的物體,以蒸氣的形式被傳送至冷凝器中。在冷凝器對二者進行冷卻處理,之后被傳送至汽/液分離器中。沒有完全冷卻的氣體會被重新返回至反應(yīng)器中進行二次反應(yīng),經(jīng)過完全冷卻的氣體則被傳送至汽提塔中。在汽提塔中對反應(yīng)物進行分離處理,分離后的氣體經(jīng)由汽提塔頂部散發(fā)出去,與壓縮機作用后的循環(huán)流股匯合在一起。整個反應(yīng)過程的最終產(chǎn)物在汽提塔底部提取,經(jīng)過最后的提純處理即可得到所需要的反應(yīng)產(chǎn)物。整個過程中添加的催化劑以及其他物質(zhì)均通過汽/液分離器以氣體的形式從頂部散發(fā)出去。
在整個實驗過程中,本文在TEP過程中添加了一種正常運行狀態(tài)和21種類型不同的異常運行狀態(tài)。將所有運行狀態(tài)數(shù)據(jù)整合在一起,分為訓(xùn)練數(shù)據(jù)集和測試數(shù)據(jù)集,二者中包含的數(shù)據(jù)量分別是480組和960組。在每一種運行狀態(tài)中又包含了52個變量數(shù)據(jù),這52個變量中又包含了11個控制變量和41個測量變量。其中,測量變量又由19個分析變量和22個連續(xù)測量變量共同組成。在實驗持續(xù)進行過程中,每隔三分鐘進行一次數(shù)據(jù)的采集,實驗過程共持續(xù)48個小時。在進行到第8個小時實驗時,在第160組數(shù)據(jù)中人為添加一組異常信號。
利用本文提出的關(guān)聯(lián)規(guī)則挖掘算法應(yīng)用到TEP過程仿真系統(tǒng)中,用于異常數(shù)據(jù)的挖掘。TEP過程中的異常運行狀態(tài)說明如表1所示。從表1中可以看出,異常運行狀態(tài)有隨機變化、階躍、粘住、慢偏移和未知5種類型。

表1 TEP過程異常運行狀態(tài)說明
這里主要針對異常1情況發(fā)生時的數(shù)據(jù)進行分析。訓(xùn)練數(shù)據(jù)集和測試數(shù)據(jù)集中共包含了52個觀測變量,當運行到時刻T時,觀測向量的計算公式如式(7):
x=[XMEAS(1),…XMEAS(41),XMV(1),…,
XMV(11)]T
(7)
式中,XMEAS(1)~XMEAS(22)代表的是控制系統(tǒng)連續(xù)過程中的測量變量,XMEAS(22)~XMEAS(41)代表的是系統(tǒng)中成分分析的測量變量,XMV(1)~XMV(11)代表的則是整個過程的控制變量。
在實驗進行的第8個小時人為添加一組異常信號,設(shè)定發(fā)生的異常情況為編號1,根據(jù)表1能夠得出:進料比的變化會引起整個系統(tǒng)出現(xiàn)一個階躍變化,使在原本進料多的地方?jīng)]有給足夠進料,導(dǎo)致整個系統(tǒng)反應(yīng)出現(xiàn)異常。
利用本文方法對正常運行狀態(tài)下以及異常運行狀態(tài)下的兩種物料總流量數(shù)據(jù)進行挖掘,挖掘結(jié)果如圖2所示。

(a) 正常運行狀態(tài)下進料總流量
在第8個小時人為添加了異常信號后,使得整個控制系統(tǒng)接下來的反應(yīng)都發(fā)生了相應(yīng)的改變。從圖2中可以看出,本文方法挖掘結(jié)果符合實驗設(shè)定結(jié)果,進料總流量具有明顯的波動,與正常狀態(tài)下的數(shù)據(jù)波動走向完全不同,證明本文方法對控制系統(tǒng)中的異常數(shù)據(jù)實現(xiàn)了準確挖掘。
為了進一步驗證本文方法的有效性,采用本文方法、文獻[1]方法和文獻[2]方法,對工業(yè)控制系統(tǒng)運維數(shù)據(jù)挖掘精度進行對比分析,對比結(jié)果如表2所示。

表2 三種方法的挖掘精度對比結(jié)果
根據(jù)表1可知,本文方法進行工業(yè)控制系統(tǒng)運維數(shù)據(jù)挖掘精度的精度最高可達98.9%,而文獻[1]方法和文獻[2]方法進行工業(yè)控制系統(tǒng)運維數(shù)據(jù)挖掘精度的精度最高只有85.0%和69.2%,本文方法的挖掘精度最好,效果最好。
將關(guān)聯(lián)規(guī)則數(shù)據(jù)挖掘方法應(yīng)用到工業(yè)控制系統(tǒng)中,有著其他方法所不具備的優(yōu)勢,同時保證算法規(guī)則更加直觀具體,高效地從海量運維數(shù)據(jù)中挖掘到有價值的數(shù)據(jù),在保證工業(yè)系統(tǒng)正常運行的前提下,完成了異常數(shù)據(jù)的挖掘。對于提高工作效率、降低人工勞作強度、促進工業(yè)向高效化、智能化方向邁進都起到了重大的推動作用。同時,關(guān)聯(lián)規(guī)則數(shù)據(jù)挖掘方法不僅適用于小規(guī)模數(shù)據(jù),面對海量的數(shù)據(jù)依然有效。這也是其他方法所不能比擬的。