王 兵,黃丹,李文璟
西南石油大學(xué)計(jì)算機(jī)科學(xué)學(xué)院,四川 成都610500
鉆井是石油開采的重要過程之一,在作業(yè)過程中存在著較多可能導(dǎo)致意外事故的安全隱患,隨著科學(xué)技術(shù)的進(jìn)步和生產(chǎn)力水平的提高,石油安全生產(chǎn)也得到了高度關(guān)注和重視[1]。鉆井作業(yè)安全隱患是導(dǎo)致事故發(fā)生的重要因素之一,系統(tǒng)化的鉆井安全隱患管理應(yīng)用越來越廣泛。在日常安全檢查、隱患排查以及標(biāo)準(zhǔn)化建設(shè)過程中積累了大量的隱患數(shù)據(jù)信息。然而,“數(shù)據(jù)豐富,信息匱乏”的問題依然存在,在實(shí)際作業(yè)中,大多數(shù)企業(yè)僅能利用這些數(shù)據(jù)進(jìn)行指導(dǎo)隱患整改工作[2]。為了從海量的安全隱患數(shù)據(jù)中提取出有用的安全管理信息,解決人工分析數(shù)據(jù)效率低、主觀性強(qiáng)等問題,為管理者提供針對性的輔助決策,將數(shù)據(jù)挖掘技術(shù)應(yīng)用于事故隱患預(yù)警過程中[3]。
關(guān)聯(lián)規(guī)則挖掘算法是數(shù)據(jù)挖掘領(lǐng)域中一個重要的研究方法,其目的是挖掘事務(wù)數(shù)據(jù)庫項(xiàng)目集之間的隱藏信息,為用戶在決策時提供理論支撐[4-5]。Apriori 算法是數(shù)據(jù)挖掘算法中關(guān)聯(lián)規(guī)則發(fā)現(xiàn)的經(jīng)典算法,是挖掘布爾型關(guān)聯(lián)規(guī)則頻繁項(xiàng)集的最重要算法之一。該算法采用逐層搜索的迭代方法,利用k-項(xiàng)集探索(k+1)-項(xiàng)集來生成頻繁項(xiàng)集,并引入了頻繁項(xiàng)集性質(zhì)的先驗(yàn)知識以減少搜索空間。但該算法存在兩個性能瓶頸:一是數(shù)據(jù)庫需頻繁掃描導(dǎo)致I/O 負(fù)載過大;二是會產(chǎn)生大量的候選項(xiàng)集,且處理候選項(xiàng)集的時間開銷大,使算法效率降低[6]。
針對以上問題,許多學(xué)者提出算法的改進(jìn)方法。Han 等提出了基于模式增長的FP-Growth算法[7],該算法參考Huffman 樹結(jié)構(gòu),將數(shù)據(jù)集存儲于FP 樹結(jié)構(gòu)上后挖掘頻繁項(xiàng)集,只需掃描兩次數(shù)據(jù)庫,在一定程度上提高了算法的執(zhí)行效率;但隨著項(xiàng)集數(shù)目的增加,構(gòu)建FP 樹的難度增加。Yang 等提出了基于矩陣的Apriori 算法[8-9],只需掃描一次數(shù)據(jù)庫來生成布爾矩陣,算法的剪枝操作都在矩陣上實(shí)現(xiàn),減少計(jì)算成本。楊秋翔等提出了一種基于權(quán)值向量矩陣約簡的Apriori 算法[10],通過引入權(quán)值和矩陣約簡的方法,降低了源數(shù)據(jù)及候選項(xiàng)集的規(guī)模;但該算法在執(zhí)行前需要對源數(shù)據(jù)進(jìn)行篩選,前期工作量較大。Wang 等提出了基于壓縮矩陣的改進(jìn)Apriori 算法[11-15],利用矩陣有效地表示數(shù)據(jù)庫中的事務(wù),并使用“與”運(yùn)算處理矩陣,該算法只需掃描一次數(shù)據(jù)庫且減少了候選項(xiàng)集的數(shù)量;但由于在壓縮矩陣過程中數(shù)據(jù)丟失的問題,將導(dǎo)致頻繁項(xiàng)集遺漏的問題。
為此,提出了支持度矩陣優(yōu)化頻繁項(xiàng)集的改進(jìn)Apriori算法—MM-Aprior(iMatrix Multiplication Apriori)算法。該算法使用布爾矩陣來表示事務(wù)數(shù)據(jù)庫,利用事務(wù)矩陣乘法來構(gòu)造支持度矩陣,進(jìn)而獲得支持度計(jì)數(shù),簡化了支持度的計(jì)算方法,并改變了原算法的自連接方式,在解決頻繁項(xiàng)集遺漏問題的同時進(jìn)一步提高了算法的執(zhí)行效率。
Apriori 用于挖掘頻繁項(xiàng)集并生成關(guān)聯(lián)規(guī)則。該算法運(yùn)用逐層搜索的迭代方式,通過連接和剪枝兩步,由頻繁k-項(xiàng)集探索生成頻繁(k+1)-項(xiàng)集,直至找到最大頻繁項(xiàng)集[16]。Apriori 算法包含了支持度和置信度兩個重要的概念,支持度是指在所有事務(wù)中頻繁出現(xiàn)項(xiàng)集的頻率,P(X∪Y)表示事件X和Y同時發(fā)生的概率,它反映了此關(guān)聯(lián)規(guī)則的重要性。置信度是指事件X發(fā)生時事件Y也同時發(fā)生的概率P(Y|X),它是關(guān)聯(lián)規(guī)則準(zhǔn)確性的度量[17]。同時滿足最小支持度及最小置信度的規(guī)則在關(guān)聯(lián)規(guī)則挖掘中稱為強(qiáng)關(guān)聯(lián)規(guī)則。通常分為頻繁項(xiàng)集的生成及由頻繁項(xiàng)集產(chǎn)生強(qiáng)關(guān)聯(lián)規(guī)則兩個主要步驟。
Apriori 算法的具體操作[18-19]步驟為:
(1)掃描初始事務(wù)數(shù)據(jù)庫,計(jì)算出每個項(xiàng)目支持度,滿足最小支持度的項(xiàng)目生成頻繁1-項(xiàng)集L1。
(2)連接步驟操作:利用Lk自連接生成候選k-項(xiàng)集Ck。
(3)剪枝步驟操作:利用先驗(yàn)性質(zhì)對Ck進(jìn)行剪枝操作,若候選k-項(xiàng)集的(k?1)-項(xiàng)的子集不在Lk?1中,則該候選k-項(xiàng)集也不是頻繁項(xiàng)集,因此可從Ck中直接刪除。
(4)反復(fù)迭代操作,直至不能找到頻繁k-項(xiàng)集為止。
(5)產(chǎn)生規(guī)則:從得到的頻繁項(xiàng)集中找出所有滿足最小置信度的規(guī)則。
為實(shí)現(xiàn)石油鉆井生產(chǎn)過程中不同的安全決策需求,通過傳統(tǒng)關(guān)聯(lián)算法(如Apriori 算法、FP-rowth算法)來挖掘鉆井事故和復(fù)雜情況關(guān)聯(lián)規(guī)則,且將獲得的關(guān)聯(lián)規(guī)則作為鉆井預(yù)警與分析模塊的知識,為鉆井事故和復(fù)雜情況的預(yù)防和處理提供很好的依據(jù),鉆井安全隱患關(guān)聯(lián)挖掘流程如圖1所示。
圖1 鉆井安全隱患關(guān)聯(lián)挖掘流程Fig.1 Flow chart of associated mining of drilling safety hazards
鉆井歷史隱患數(shù)據(jù)具有海量性與復(fù)雜性的特點(diǎn),因此在利用數(shù)據(jù)挖掘技術(shù)前,首先,要對數(shù)據(jù)進(jìn)行數(shù)據(jù)預(yù)處理;其次,使用關(guān)聯(lián)算法挖掘鉆井隱患事務(wù)中的關(guān)聯(lián)規(guī)則,進(jìn)而獲得潛在的強(qiáng)關(guān)聯(lián)規(guī)則;最后,分析強(qiáng)關(guān)聯(lián)規(guī)則進(jìn)行關(guān)聯(lián)隱患挖掘,根據(jù)頻繁前項(xiàng)發(fā)生再映射到對應(yīng)關(guān)聯(lián)規(guī)則,從而預(yù)測頻繁后項(xiàng)的發(fā)生,以此獲取預(yù)測知識。
改進(jìn)算法的相關(guān)定義:
定義1設(shè)矩陣,則為矩陣A與B的Hadamard 積。
定義2矩陣乘法。在迭代過程中,給定一個布爾矩陣,通過該矩陣的轉(zhuǎn)置乘以矩陣Ak(k=1,2,···),得到對稱矩陣Dk,記作,其中矩陣Dk中的第i行第j列元素可以表示為:,則矩陣Dk中的第i行第j列元素的值表示對應(yīng)項(xiàng)集的支持度計(jì)數(shù),特別的,對角線上的值為各k-項(xiàng)集的支持度計(jì)數(shù)。因此,Dk也稱為支持度矩陣。
定義3設(shè)事務(wù)數(shù)據(jù)庫包含n個事務(wù)和m個項(xiàng)目,則可構(gòu)造布爾矩陣,也稱為初始事務(wù)矩陣A1,即項(xiàng)集的矩陣表示為
定義4若有事務(wù)項(xiàng)的長度小于2,則可以將事務(wù)矩陣中所對應(yīng)的行向量刪除[20]。
定義5若某頻繁k項(xiàng)集集合中項(xiàng)集的個數(shù)小于k+1,則該頻繁項(xiàng)集為最大頻繁項(xiàng)集[21]。
改進(jìn)思想如下:
(1)利用支持度矩陣得到頻繁項(xiàng)集。基于傳統(tǒng)的矩陣改進(jìn)Apriori算法中利用向量的邏輯“與”運(yùn)算來計(jì)算支持度的思想,引入了支持度矩陣來得到支持度。利用定義2中的矩陣乘法,可一次性得到矩陣中所有項(xiàng)集向量的支持度計(jì)數(shù)。掃描事務(wù)數(shù)據(jù)庫得到事務(wù)矩陣A1,在迭代過程中,通過該事務(wù)矩陣的轉(zhuǎn)置乘以矩陣Ak,得到支持度矩陣Dk。支持度矩陣Dk中的值表示各個項(xiàng)集的支持度計(jì)數(shù),特別的,對角線上的值為各k-項(xiàng)集的支持度計(jì)數(shù)。其中,將各k-項(xiàng)集的支持度計(jì)數(shù)與設(shè)置最小支持度閾值比較可得到頻繁k-項(xiàng)集Lk。支持度矩陣Dk上三角(下三角)中的值滿足最小支持度計(jì)數(shù)的(k+1)-項(xiàng)集即為頻繁(k+1)-項(xiàng)集Lk+1。
(2)連接操作。在迭代過程中,使用頻繁項(xiàng)集Lk+1及事務(wù)矩陣,構(gòu)造出兩個矩陣,將得到的兩個矩陣?yán)枚x1通過Hadamard 積運(yùn)算,即可得到事務(wù)矩陣Ak+1。
(3)矩陣的約簡。通過m×n的事務(wù)矩陣Ak+1乘以m×1的全1矩陣,得到各個事務(wù)的事務(wù)長度。再根據(jù)定義4若事務(wù)長度小于2時,刪除該事務(wù)所對應(yīng)的行,從而簡化事務(wù)矩陣,得到Ak+1′。
通過上述操作,達(dá)到了不產(chǎn)生候選項(xiàng)集直接生成頻繁項(xiàng)集且逐步簡化事務(wù)矩陣的目的,極大地提高算法的效率及生成頻繁項(xiàng)集的速度。
算法流程如下:
(1)生成頻繁1-項(xiàng)集。①掃描初始事務(wù)數(shù)據(jù)庫,并用布爾矩陣來表示,其中行表示事務(wù),列表示項(xiàng)目,得到挖掘?qū)ο笫聞?wù)矩陣A1。②根據(jù)用戶設(shè)定的最小支持度,確定最小支持度計(jì)數(shù)。利用事務(wù)矩陣A1的轉(zhuǎn)置乘以事務(wù)矩陣A1,即得到支持度矩陣D1。支持度矩陣D1的對角線上的值對應(yīng)為各1-項(xiàng)集的支持度計(jì)數(shù),提取出滿足最小支持度計(jì)數(shù)的1-項(xiàng)集,從而得到頻繁1-項(xiàng)集L1。
(2)生成頻繁2-項(xiàng)集。①提取支持度矩陣D1的上三角(下三角)中滿足最小支持度計(jì)數(shù)的2-項(xiàng)集,從而得到頻繁2-項(xiàng)集L2。②使用頻繁2-項(xiàng)集及矩陣A1構(gòu)造兩個矩陣C1與C1′。將矩陣C1與C1′進(jìn)行Hadamard 運(yùn)算,即A2=C1°C1′,得到事務(wù)矩陣A2。③通過m×n矩陣A2乘以n×1的全1矩陣,可計(jì)算出各個事務(wù)的事務(wù)長度。再根據(jù)定義4對矩陣A2進(jìn)行簡化,從而得到矩陣A2′。
(3)生成頻繁k-項(xiàng)集。①利用矩陣A2′的轉(zhuǎn)置A2′T乘以矩陣A2′得到支持度矩陣D2,即提取D2的上三角(下三角)中滿足最小支持度計(jì)數(shù)的的3-項(xiàng)集,從而得到頻繁3-項(xiàng)集L3。使用頻繁3-項(xiàng)集及矩陣構(gòu)造A2′兩個矩陣C2與C2′。將矩陣C2與C2′進(jìn)行Hadamard 積運(yùn)算,即A3=C2°C2′,可得到事務(wù)矩陣A3。②通過m′×n′的矩陣A3乘以n′×1的全1矩陣,可計(jì)算出各個事務(wù)的事務(wù)長度。再根據(jù)定義4 對矩陣A3行簡化,從而得到矩陣A3′。③重復(fù)以上步驟,直到某頻繁k項(xiàng)集集合中項(xiàng)集的個數(shù)小于k+1,則該頻繁項(xiàng)集為最大頻繁項(xiàng)集,算法結(jié)束。
(4)所有的頻繁項(xiàng)集即為各頻繁k-項(xiàng)集的并。再根據(jù)最小置信度篩選出強(qiáng)關(guān)聯(lián)規(guī)則。
與Apriori 算法、基于壓縮矩陣的Apriori算法[12]相比,改進(jìn)后的算法有以下優(yōu)點(diǎn):
(1)改進(jìn)后的算法僅需掃描一次事務(wù)數(shù)據(jù)庫,運(yùn)行效率明顯提高。若將生成對應(yīng)的事務(wù)矩陣記為An×m,該算法的時間復(fù)雜度為O(n2mk)。Apriori 算法的時間復(fù)雜度為O(Nk+1),N代表事務(wù)數(shù)據(jù)庫中事務(wù)的個數(shù),其值遠(yuǎn)大于n。由于利用先驗(yàn)性質(zhì)進(jìn)行剪枝,Apriori 算法的時間復(fù)雜度降低了不少,但改進(jìn)算法的時間復(fù)雜度仍然優(yōu)于Apriori 算法。
(2)改進(jìn)后的算法與基于壓縮矩陣的Apriori 算法都使用布爾矩陣表示事務(wù)數(shù)據(jù)庫,減少了I/O負(fù)載。與基于壓縮矩陣的Apriori 算法不同的是:①改變了計(jì)算支持度的方法。不再使用事務(wù)矩陣中項(xiàng)集向量逐個進(jìn)行循環(huán)求“與”運(yùn)算,再計(jì)算“1”的個數(shù)來得到個項(xiàng)目的支持度計(jì)數(shù)。而是引入了自定義的支持度矩陣,只需掃描支持度矩陣的上三角(下三角)來得到支持度,簡化了支持度的計(jì)算方法,減少了計(jì)算頻繁項(xiàng)集的時間開銷,提高了算法的效率。②算法的連接方法不同。在迭代過程中,不需要矩陣中項(xiàng)集向量逐個進(jìn)行邏輯“與”操作來得到新的事務(wù)矩陣。而是只需利用上一次產(chǎn)生的頻繁項(xiàng)集及事務(wù)矩陣來得到新的事務(wù)矩陣。因此,能極大地減少計(jì)算量。
在生成頻繁項(xiàng)集的過程中由于引入的支持度矩陣,避免了大量冗余的候選項(xiàng)集的產(chǎn)生,提高了頻繁項(xiàng)集的生成效率。并且在迭代過程中,實(shí)時地約簡事務(wù)矩陣的規(guī)模,頻繁k項(xiàng)集對應(yīng)的事務(wù)矩陣Ak結(jié)構(gòu)會隨著k值的增長而變得愈簡單,從而簡化了矩陣規(guī)模,降低矩陣運(yùn)算的復(fù)雜程度,減少了空間的占用。
MM-Apriori 算法對表1所示的事務(wù)數(shù)據(jù)庫進(jìn)行關(guān)聯(lián)挖掘,獲取頻繁項(xiàng)集。事務(wù)T={T1,T2,···,T10},對應(yīng)的項(xiàng)目集I={I1,I2,I3,I4,I5},假設(shè)最小支持度(Smin_support)為0.2,則最小支持度計(jì)數(shù)為ceiling(Sminsup_count)=ceiling(Smin_support×|T|)=2。
表1 事務(wù)數(shù)據(jù)庫Tab.1 Transaction database
(1)掃描初始事務(wù)數(shù)據(jù)庫,生成事務(wù)矩陣A1,其中行表示事務(wù),列表示項(xiàng)。再得出對應(yīng)的轉(zhuǎn)置矩陣。
(2)生成L1。通過,得到支持度矩陣D1。D1中的值表示各項(xiàng)集的支持度計(jì)數(shù),其中,對角線上的值表示各1-項(xiàng)集的支持度計(jì)數(shù)。比較D1中對角線上各1-項(xiàng)集的支持?jǐn)?shù)與最小支持度計(jì)數(shù)的大小,提取出滿足最小支持度計(jì)數(shù)的項(xiàng)目集。由于每一項(xiàng)都滿足最小支持度計(jì)數(shù)從而得到頻繁1-項(xiàng)集,即
(3)生成L2。將對稱矩陣D1的上三角(下三角)中的各2-項(xiàng)集的計(jì)數(shù)與最小支持度計(jì)數(shù)進(jìn)行比較,提取出滿足最小支持度計(jì)數(shù)的項(xiàng)目集從而得到頻繁2-項(xiàng)集。即
利用頻繁2-項(xiàng)集及矩陣A1構(gòu)造兩個矩陣,通過兩個矩陣的Hadamard 積的方法得到事務(wù)矩陣A2。首先,拆分頻繁2-項(xiàng)集{I1|I2},{I1|I3},{I1|I4},{I1|I5},{I2|I3},{I2|I4},{I2|I5},{I3|I4},{I3|I5},左邊的項(xiàng)集放入C1,右邊的項(xiàng)集放入C1′;然后,掃描矩陣A1,可得到矩陣C1與C1′,將矩陣C1與C1′進(jìn)行Hadamard 積運(yùn)算,即A2=C1°C1′;最后,可得到事務(wù)矩陣A2。
事務(wù)矩陣A2乘以9×1 的全1 矩陣,可得到AAA2中對應(yīng)的事務(wù)長度,根據(jù)定義4 簡化矩陣,可得到簡化后的事務(wù)矩陣A2′。
(4)生成L3。通過D2=A2′TA2′得到支持度矩陣D2。
將D2的上三角(下三角)中的各3-項(xiàng)集的計(jì)數(shù)與最小支持度計(jì)數(shù)進(jìn)行比較,提取出滿足最小支持度計(jì)數(shù)的項(xiàng)目集(不重復(fù)提?。亩玫筋l繁3-項(xiàng)集。即L3={{I1I2I3},{I1I2I4},{I1I2I5},{I1I3I5},{I2I3I4},{I2I3I5}}。
利用頻繁3-項(xiàng)集及矩陣A2′構(gòu)造兩個矩陣,通過兩個矩陣的Hadamard 積可得到事務(wù)矩陣A3。
將頻繁3-項(xiàng)集拆分{I1I2|I2I3},{I1I2|I2I4},{I1I2|I2I5},{I1I3|I3I5},{I2I3|I3I4},{I2I3|I3I5},左邊的項(xiàng)目放入矩陣C2,右邊的項(xiàng)目放入矩陣C2′,再通過掃描矩陣A2′,得到矩陣C2與C2′,將矩陣C2與C2′進(jìn)行Hadamard 積運(yùn)算,即A3=C2°C2′,可得到事務(wù)矩陣A3。
事務(wù)矩陣A3乘以6×1 的全1 矩陣,可以得到A3中對應(yīng)的事務(wù)長度,根據(jù)定義4,對矩陣簡化得到矩陣A3′。
(5)生成L4。通過D3=A3′TA3′的上三角(下三角)中的各4-項(xiàng)集的計(jì)數(shù)與最小支持度計(jì)數(shù)進(jìn)行比較,提取出滿足最小支持度計(jì)數(shù)的項(xiàng)目集(不重復(fù)提取)從而得到頻繁4-項(xiàng)集,即L4={I1I2I3I5}。
式中,Ci為重金屬i在土壤中的實(shí)測含量(mg/kg);Bi為重金屬i在土壤中的背景值(mg/kg)。通常對于重金屬i:Igeo≤0,土壤無污染;0
(6)根據(jù)定義5 判斷,L4中的項(xiàng)集個數(shù)小于5個,所以頻繁4-項(xiàng)集為最大頻繁項(xiàng)集,算法終止。輸出頻繁項(xiàng)集L=L1∪L2∪L3∪L4。
由頻繁項(xiàng)集的挖掘結(jié)果可知,使用MM-Apriori算法獲得的頻繁項(xiàng)集與基于壓縮矩陣的Apriori 算法[12]及Apriori 算法生成的頻繁項(xiàng)集結(jié)果一致,驗(yàn)證了算法的可行性。
為驗(yàn)證改進(jìn)算法的性能,對Apriori、基于壓縮矩陣的Apriori 算法、MM-Apriori 算法在相同的實(shí)驗(yàn)環(huán)境下進(jìn)行實(shí)驗(yàn)。實(shí)驗(yàn)環(huán)境:CPU 為Inter Core i7-4770K CPU @ 3.5 GHz、內(nèi)存32 GB 和Windows 10 專業(yè)版操作系統(tǒng)。程序采用python3.6實(shí)現(xiàn)。實(shí)驗(yàn)數(shù)據(jù)來源于UCI 公共數(shù)據(jù)集中的蘑菇(Mushroom)數(shù)據(jù)集,共8 124 條事務(wù),119 個項(xiàng)。
實(shí)驗(yàn)一:比較在不同支持度下3 種算法生成的頻繁項(xiàng)集個數(shù),如圖2 所示。
圖2 不同支持度下的3 種算法產(chǎn)生的頻繁項(xiàng)集個數(shù)Fig.2 The number of frequent item sets produced by three algorithms with different support degrees
圖2 描述了在不同支持度下的3 種算法產(chǎn)生的頻繁項(xiàng)集個數(shù),該實(shí)驗(yàn)的事務(wù)數(shù)目為8 124,項(xiàng)目數(shù)為112。由圖2 可知,當(dāng)設(shè)置相同支持度閾值時,MM-Apriori 算法與Apriori 算法生成的頻繁項(xiàng)集數(shù)量相同,且比基于壓縮矩陣的Apriori 算法生成的頻繁項(xiàng)集數(shù)量多,隨著支持度閾值的提高,3 種算法的頻繁項(xiàng)集個數(shù)趨于相等。MM-Apriori 算法在不同支持度下均無頻繁項(xiàng)集丟失的問題。
實(shí)驗(yàn)二:通過分別設(shè)置不同的最小支持度、不同的事務(wù)數(shù)目及不同的項(xiàng)目數(shù)目來比較算法的性能,實(shí)驗(yàn)結(jié)果如圖3~圖5 所示。
圖3 描述了在不同最小支持度的情況下3 種算法的執(zhí)行時間,該實(shí)驗(yàn)的事務(wù)數(shù)目為6 500,項(xiàng)目數(shù)為112。由圖3 可知,改進(jìn)后,MM-Apriori 算法與基于壓縮矩陣的Apriori 算法的執(zhí)行時間都比Apriori算法短,但MM-Apriori 算法的執(zhí)行效率是3 種算法中最優(yōu)的。
圖3 不同最小支持度下的3 種算法執(zhí)行時間Fig.3 Execution time of two algorithms with different minimum support thresholds
圖4 不同事務(wù)數(shù)下的3 種算法執(zhí)行時間Fig.4 Execution time of three algorithms under different transaction numbers
圖5 描述了在不同項(xiàng)目數(shù)目的情況下3 種算法的執(zhí)行時間,該實(shí)驗(yàn)的事務(wù)數(shù)目為8 124,最小支持度為0.3。由圖5 可知,當(dāng)項(xiàng)目數(shù)目較小時,3 種算法的執(zhí)行時間差距不大,但隨著項(xiàng)目數(shù)目規(guī)模的增大,MM-Apriori 算法的執(zhí)行效率明顯優(yōu)于Apriori算法。
圖5 不同項(xiàng)目數(shù)下的3 種算法執(zhí)行時間Fig.5 Execution time of two algorithms under different number of projects
綜上所述,MM-Apriori 算法的有效性且不存在頻繁項(xiàng)集遺漏的問題,與Apriori 及基于壓縮矩陣的Apriori 算法[12]相比,具有更好的性能:無論事務(wù)數(shù)目、項(xiàng)目數(shù)目或最小支持度如何變化,該算法仍能穩(wěn)定地快速運(yùn)行,有效地提高了算法的效率。
鉆井隱患記錄以數(shù)據(jù)庫的形式存儲,可以對隱患記錄進(jìn)行相關(guān)性分析,挖掘數(shù)據(jù)間的關(guān)聯(lián)規(guī)則。為石油鉆井作業(yè)的安全管理決策提供指導(dǎo)意見,有助于提高安全管理的效率,對預(yù)防事故的發(fā)生起到積極作用。以某石油鉆探公司65 536 條包含107 個屬性的歷史安全隱患記錄進(jìn)行方法可行性的驗(yàn)證。
為準(zhǔn)確高效地對隱患數(shù)據(jù)進(jìn)行挖掘分析,先對隱患數(shù)據(jù)進(jìn)行預(yù)處理,進(jìn)而易于分析和挖掘的知識。鉆井隱患數(shù)據(jù)為文字型數(shù)據(jù),需將隱患屬性數(shù)據(jù)轉(zhuǎn)換為布爾型變量值來進(jìn)行規(guī)則挖掘,發(fā)生該項(xiàng)隱患標(biāo)識為1,未發(fā)生標(biāo)識為0。表2 為處理好的鉆井隱患數(shù)據(jù)片段。
表2 中的隱患數(shù)據(jù)使用MM-Apriori 算法進(jìn)行關(guān)聯(lián)挖掘。針對鉆井作業(yè)隱患屬性指標(biāo)間錯綜復(fù)雜的問題,為提高挖掘準(zhǔn)確度,引入了Kulc 和IR(不平衡比參數(shù))兩個相關(guān)性度量值[22-23],來過濾偽強(qiáng)關(guān)聯(lián)規(guī)則,使挖掘出的規(guī)則在保證效率的情況下更具有使用價值(為提升風(fēng)險(xiǎn)評估的實(shí)用性,僅選擇后項(xiàng)為1 的關(guān)聯(lián)規(guī)則)。設(shè)定最小支持度為0.5,最小置信度為0.8;最小Kulc 值為0.5,最大IR 值為0.5。實(shí)驗(yàn)挖掘的部分關(guān)聯(lián)規(guī)則結(jié)果如表3所示。
表2 處理后的鉆井隱患數(shù)據(jù)片段Tab.2 Data fragments of drilling hazards after treatment
對表3 的規(guī)則進(jìn)行分析,可得到如下解釋:由規(guī)則1、2 可看出,“井控設(shè)備配套不全或不符合設(shè)計(jì)要求”與“設(shè)備擺放不合理”很大概率會同時出現(xiàn)。提醒監(jiān)督人員在安全隱患排查中若發(fā)現(xiàn)設(shè)備擺放不合理,那么將同時著重檢查井控設(shè)備配套的完整性與是否符合設(shè)計(jì)要求。由規(guī)則3、4 可看出,當(dāng)“點(diǎn)火裝置缺陷”出現(xiàn)時,大約會有70%的概率發(fā)生“安全防護(hù)裝置、連鎖裝置、安全附件缺失或失效”、“液氣分離器缺陷”的問題。規(guī)則5 可看出,當(dāng)出現(xiàn)“通風(fēng)不良”時,監(jiān)督人員應(yīng)注重安全附件的校驗(yàn)。通過以上規(guī)則可發(fā)現(xiàn),井控設(shè)備配套不全或不符合設(shè)計(jì)要求”與“設(shè)備擺放不合理”出現(xiàn)的頻率很高,反映出設(shè)備維護(hù)人員工作職責(zé)不到位,在日常工作中管理者重點(diǎn)應(yīng)督促設(shè)備維護(hù)人員及時對設(shè)備進(jìn)行維護(hù)。
表3 部分鉆井隱患關(guān)聯(lián)規(guī)則Tab.3 Association rules of drilling hazards
通過以上分析,為管理者提供針對性的決策依據(jù),便于制定相關(guān)的管控措施,對預(yù)防事故和減少事故提供科學(xué)幫助。
(1) 針對鉆井隱患數(shù)據(jù)具有量大、冗余等特點(diǎn),為了能夠準(zhǔn)確高效地對隱患記錄進(jìn)行關(guān)聯(lián)挖掘,提出了一種支持度矩陣優(yōu)化頻繁項(xiàng)集的改進(jìn)Apriori 算法。
(2)在傳統(tǒng)基于矩陣Apriori 算法上,引入了自定義的支持度矩陣來計(jì)算支持度并得到頻繁項(xiàng)集,并改變了算法的連接方法,有效提高挖掘效率且不會造成頻繁項(xiàng)集的丟失。標(biāo)準(zhǔn)UCI 數(shù)據(jù)集實(shí)驗(yàn)證明了改進(jìn)后的Apriori 算法能準(zhǔn)確且高效生成頻繁項(xiàng)集,提升了規(guī)則的挖掘效率。
(3)將該算法應(yīng)用于鉆井一體化軟件的鉆井事故和復(fù)雜情況關(guān)聯(lián)規(guī)則的挖掘,且將獲得的關(guān)聯(lián)規(guī)則作為鉆井事故和復(fù)雜情況的預(yù)防處理與分析模塊的知識,為管理者提供科學(xué)的決策依據(jù),降低石油鉆井事故的發(fā)生概率。下一步將研究如何增強(qiáng)該算法對隱患嚴(yán)重程度較大、出現(xiàn)頻率較低的事故隱患稀有模式的挖掘能力。