一種關(guān)聯(lián)分析算法的并行化方法
【專利摘要】一種關(guān)聯(lián)分析算法的并行化方法是針對一種經(jīng)典的關(guān)聯(lián)規(guī)則分析算法Apriori不能很好適應(yīng)并行化的缺陷,設(shè)計(jì)了一種新的并行化方案。通過主控節(jié)點(diǎn)將計(jì)算任務(wù)進(jìn)行分塊,分配并分發(fā)給各個子計(jì)算節(jié)點(diǎn)。由各計(jì)算節(jié)點(diǎn)并行計(jì)算篩選頻繁集,最后合并節(jié)點(diǎn)并返回結(jié)果統(tǒng)計(jì),生成頻繁集。再次分發(fā)頻繁集,由各節(jié)點(diǎn)生成規(guī)則。由于每個計(jì)算節(jié)點(diǎn)僅處理一部分計(jì)算任務(wù),解決了海量數(shù)據(jù)無法由單機(jī)讀入內(nèi)存進(jìn)行處理和處理速度過慢的問題;且多個節(jié)點(diǎn)并行參與處理,有效提高了處理效率;并且對計(jì)算過程中的節(jié)點(diǎn)間的同步依賴、網(wǎng)絡(luò)通訊負(fù)擔(dān)過重、I/O操作過于頻繁做了相應(yīng)的改進(jìn),提高了數(shù)據(jù)庫掃描和計(jì)算的速度。
【專利說明】一種關(guān)聯(lián)分析算法的并行化方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明是針對一種經(jīng)典的關(guān)聯(lián)規(guī)則分析算法Apriori不能很好適應(yīng)并行化的缺陷,設(shè)計(jì)了一種新的并行化方法,減少了節(jié)點(diǎn)間的同步依賴和網(wǎng)絡(luò)通訊負(fù)擔(dān),提高了數(shù)據(jù)庫掃描和計(jì)算的速度。屬于分布式計(jì)算和云計(jì)算領(lǐng)域。
【背景技術(shù)】
[0002]云計(jì)算(Cloud Computing)是一種新興的商業(yè)計(jì)算模型,它將計(jì)算任務(wù)分布在大量計(jì)算機(jī)構(gòu)成的資源池上,使各種應(yīng)用系統(tǒng)能夠根據(jù)需要獲取計(jì)算力、存儲空間和各種軟件服務(wù),它是數(shù)據(jù)管理技術(shù)不斷演進(jìn)的結(jié)果。在上世紀(jì)末,分布式處理、并行處理和網(wǎng)格計(jì)算就已相當(dāng)成熟,它們是云計(jì)算發(fā)展的技術(shù)基礎(chǔ),企業(yè)推動則是云計(jì)算快速發(fā)展的主要動力。目前,IT巨頭正在相繼開發(fā)云計(jì)算平臺、云計(jì)算終端和服務(wù)器。
[0003]關(guān)聯(lián)規(guī)則算法用來描述事物之間的聯(lián)系和挖掘事物之間的相關(guān)性,其核心是通過統(tǒng)計(jì)數(shù)據(jù)項(xiàng)獲得頻繁項(xiàng)集,被廣泛應(yīng)用于分類設(shè)計(jì)“捆綁式銷售”倉儲貨存配置等領(lǐng)域,關(guān)聯(lián)規(guī)則的挖掘已經(jīng)成為數(shù)據(jù)挖掘中一個非常重要的研究方向。
[0004]Apriori算法首先由Agrawal教授于1993年提出,是一種最有影響的挖掘布爾關(guān)聯(lián)規(guī)則頻繁項(xiàng)集的算法,其核心是基于兩階段頻集思想的遞推算法。該關(guān)聯(lián)規(guī)則在分類上屬于單維、單層、布爾關(guān)聯(lián)規(guī)則,所有支持度大于最小支持度的項(xiàng)集稱為頻繁項(xiàng)集,簡稱頻集。
[0005]該算法的基本思想是:首先找出所有的頻集,這些項(xiàng)集出現(xiàn)的頻繁性至少和預(yù)定義的最小支持度一樣。然后由頻集產(chǎn)生強(qiáng)關(guān)聯(lián)規(guī)則,這些規(guī)則必須滿足最小支持度和最小置信度。接著使用這些找到的頻集產(chǎn)生期望的規(guī)則,產(chǎn)生只包含集合的項(xiàng)的所有規(guī)則,其中每一條規(guī)則的右部只有一項(xiàng),這里采用的是中規(guī)則的定義。一旦這些規(guī)則被生成,那么只有那些大于用戶給定的最小可信度的規(guī)則才被留下來。為了生成所有頻集,使用了遞推的方法,依次從k項(xiàng)集推出k+Ι項(xiàng)集。
[0006]可能產(chǎn)生大量的候選集,以及可能需要重復(fù)掃描數(shù)據(jù)庫,是Apriori算法的兩大缺點(diǎn),然而隨著挖掘數(shù)據(jù)的增大,其運(yùn)算能力很快出現(xiàn)了瓶頸。因此,利用云計(jì)算將數(shù)據(jù)處理并行化來降低運(yùn)算時間,提高處理能力成為了一個新的方向。本發(fā)明提出了一種新的并行化方案,使傳統(tǒng)的Apriori算法適用于云計(jì)算環(huán)境中。
【發(fā)明內(nèi)容】
[0007]技術(shù)問題:本發(fā)明的目的是針對一種經(jīng)典的關(guān)聯(lián)規(guī)則分析算法Apriori不能很好適應(yīng)并行化的缺陷,設(shè)計(jì)了一種關(guān)聯(lián)分析算法的并行化方法,減少了節(jié)點(diǎn)間的同步依賴和網(wǎng)絡(luò)通訊負(fù)擔(dān),提高了數(shù)據(jù)庫掃描和計(jì)算的速度,利用云計(jì)算解決了海量數(shù)據(jù)分析的困難和瓶頸。
[0008]技術(shù)方案:針對這些問題,本發(fā)明提出了一種關(guān)聯(lián)分析算法的并行化方法,將頻繁項(xiàng)的篩選和規(guī)則的生成分?jǐn)偟搅思褐胁⑿型瓿?。利用下一層的候選頻繁集生成并不需要完全依賴于上一層的頻繁集,取消了每層頻繁集生成中的同步過程,采用先到先計(jì)算的規(guī)貝U,減少了節(jié)點(diǎn)間的同步依賴和網(wǎng)絡(luò)通訊負(fù)擔(dān)。通過事務(wù)編號集來定位掃描的位置,減小了i/o的壓力,提高了數(shù)據(jù)庫掃描和計(jì)算的速度。
[0009]現(xiàn)有的并行化大致分為兩個思路:
[0010]一、將對事務(wù)數(shù)據(jù)庫掃描的過程并行,把數(shù)據(jù)庫分片,保存在各個節(jié)點(diǎn)上。每次循環(huán)開始時將候選頻繁k-項(xiàng)集發(fā)送到各個節(jié)點(diǎn)上分別統(tǒng)計(jì)每項(xiàng)在局部數(shù)據(jù)庫上的支持度,然后在循環(huán)結(jié)束時同步所有節(jié)點(diǎn)的計(jì)算結(jié)果,統(tǒng)計(jì)出每項(xiàng)的全局支持度并刪除不滿足閥值的項(xiàng)。
[0011]該方案減少了對數(shù)據(jù)庫掃描所需的時間,在一定程度上提升了處理能力,但是每次循環(huán)結(jié)束時同步會存在不同節(jié)點(diǎn)之間的相互等待的問題。并且剪枝是在合并后完成,單個節(jié)點(diǎn)僅有掃描和統(tǒng)計(jì)的功能而沒有判斷功能,隨著節(jié)點(diǎn)數(shù)的增多,通信量將迅速增大,給帶寬帶來了巨大壓力。
[0012]二、將整個挖掘過程并行,把數(shù)據(jù)庫分成η塊,發(fā)送到每個節(jié)點(diǎn)上,針對每一塊數(shù)據(jù)獨(dú)立地進(jìn)行傳統(tǒng)Apriori算法的挖掘過程,閥值縮小為I/η。最后將每個節(jié)點(diǎn)輸出的1-到k_項(xiàng)局部頻繁集合并及掃描整個數(shù)據(jù)庫,刪除掉不滿足閥值的項(xiàng),得到整個頻繁集。
[0013]該方案為節(jié)點(diǎn)增加了判斷的能力,使得各節(jié)點(diǎn)可以獨(dú)立完成剪枝,提高了并行程度,減輕了帶寬壓力。但是根據(jù)概率統(tǒng)計(jì)學(xué),各節(jié)點(diǎn)每次生成的候選頻繁k_項(xiàng)集應(yīng)該是近似的。這種近似的挖掘過程將在各個節(jié)點(diǎn)上重復(fù)η遍,浪費(fèi)了相當(dāng)大的計(jì)算資源。
[0014]可以看出,將數(shù)據(jù)庫分片雖然是一種簡單的并行方案,但是各節(jié)點(diǎn)之間的通信量和計(jì)算量的平衡問題并無法妥善解決。
[0015]因此本發(fā)明嘗試了一種新思路,算法的運(yùn)行流程步驟如下:
[0016]該方法采用主從結(jié)構(gòu),由一臺服務(wù)器作為主節(jié)點(diǎn)處理所有的調(diào)度和協(xié)調(diào),其余服務(wù)器作為子節(jié)點(diǎn)完成計(jì)算任務(wù),該并行化方法的步驟如下:
[0017]步驟1.啟動所有服務(wù)器,將待分析的原始數(shù)據(jù)的數(shù)據(jù)庫分別下載到所有服務(wù)器節(jié)點(diǎn)上;
[0018]步驟2.第一階段分析開始,主節(jié)點(diǎn)掃描自身數(shù)據(jù)庫,統(tǒng)計(jì)出整個1-項(xiàng)集以及事務(wù)總數(shù),設(shè)定閥值,并將閥值發(fā)送到各個子節(jié)點(diǎn)上;
[0019]步驟3.將整個1-項(xiàng)集作為候選頻繁1-項(xiàng)集,由主節(jié)點(diǎn)將每一項(xiàng)的統(tǒng)計(jì)任務(wù)分派給一個空閑的子節(jié)點(diǎn);
[0020]步驟4.收到任務(wù)的各個子節(jié)點(diǎn)掃描自身數(shù)據(jù)庫,統(tǒng)計(jì)該項(xiàng)的支持度,如果該項(xiàng)的支持度滿足閥值則向主節(jié)點(diǎn)返回該項(xiàng)以及該項(xiàng)的支持度和事務(wù)編號集,如果不滿足則刪除掉該項(xiàng);
[0021]步驟5.主節(jié)點(diǎn)將收到的返回結(jié)果加入頻繁1-項(xiàng)集中,并連接這些項(xiàng)集生成按字典順序排列的候選頻繁2-項(xiàng)集,每生成一項(xiàng),就連同其候選事務(wù)編號集一并分派給一個空閑的子節(jié)點(diǎn);
[0022]步驟6.收到任務(wù)的各個子節(jié)點(diǎn)掃描所給的候選事務(wù)編號集,統(tǒng)計(jì)該項(xiàng)的支持度,如果該項(xiàng)的支持度滿足閥值則向主節(jié)點(diǎn)返回該項(xiàng)以及該項(xiàng)的支持度和事務(wù)編號集,如果不滿足則刪除掉該項(xiàng)及其相關(guān)數(shù)據(jù);
[0023]步驟7.主節(jié)點(diǎn)將收到的返回結(jié)果加入頻繁2-項(xiàng)集中,并連接這些項(xiàng)集生成按字典順序排列的候選頻繁3-項(xiàng)集,每生成一項(xiàng),就連同其候選事務(wù)編號集一并分派給空閑節(jié)
占.[0024]步驟8.重復(fù)步驟6,步驟7的過程,將每次返回的結(jié)果保存入頻繁集,并連接生成更長的候選頻繁集,直到?jīng)]有新的項(xiàng)滿足閥值為止,保存所有的頻繁1-項(xiàng)、2-項(xiàng)、3-項(xiàng)……k_項(xiàng)集以及各自的支持度,將所有的頻繁集按照頻繁1-項(xiàng)集分組,第一階段分析結(jié)束;
[0025]步驟9.第二階段分析開始,按照分組將各組頻繁集及其支持度發(fā)送給各個子節(jié)
占.[0026]步驟10.各子節(jié)點(diǎn)分別根據(jù)每組頻繁集生成規(guī)則并計(jì)算其置信度,如果滿足閥值則向主節(jié)點(diǎn)返回該規(guī)則,如果不滿足則忽略;
[0027]步驟11.主節(jié)點(diǎn)將所有收到的返回結(jié)果保存,排序后即為規(guī)則集,第二階段分析結(jié)束;
[0028]步驟12.輸出顯示規(guī)則集,結(jié)束。
[0029]有益效果:本發(fā)明提出了一種新的Apriori算法并行化方案,該方案的主要優(yōu)勢在于:
[0030]一、將每一項(xiàng)的統(tǒng)計(jì)過程獨(dú)立并行,并且沒有產(chǎn)生重復(fù)的計(jì)算,提升了整個候選頻繁項(xiàng)集的生成速度; [0031]二、每個節(jié)點(diǎn)都具有判斷的功能,不會向網(wǎng)絡(luò)發(fā)送無用的數(shù)據(jù),減輕了網(wǎng)絡(luò)壓力;
[0032]三、跨層統(tǒng)計(jì)的功能避免了各個節(jié)點(diǎn)之間相互等待的問題;
[0033]四、掃描上一層的事務(wù)編號集而不是整個數(shù)據(jù)庫大量減少了每次掃描所需的時間,這對于需要多次掃描統(tǒng)計(jì)的Apriori算法來說節(jié)省的時間是相當(dāng)可觀的。
【專利附圖】
【附圖說明】
[0034]圖1關(guān)聯(lián)分析算法運(yùn)行流程圖。
[0035]圖2分析集群架構(gòu)圖。
【具體實(shí)施方式】
[0036]細(xì)節(jié)說明:
[0037]k-項(xiàng)集:關(guān)聯(lián)規(guī)則算法是為了從{A, B, C, D}, {A, B}......等集合中找出例如A — B
的規(guī)則。因此,例如{A},{C}就稱之為1-項(xiàng)集,{Α,Β}就稱之為2-項(xiàng)集,{A,B,C……}就稱之為k-項(xiàng)集,其中k代表集合中有多少項(xiàng)。
[0038]頻繁k_項(xiàng)集:出現(xiàn)的頻率滿足閥值的1-項(xiàng)集稱之為頻繁1-項(xiàng)集,出現(xiàn)的頻率滿足閥值的2-項(xiàng)集稱之為頻繁2-項(xiàng)集,同理,出現(xiàn)的頻率滿足閥值的k-項(xiàng)集稱之為頻繁k_項(xiàng)集。
[0039]候選頻繁k_項(xiàng)集:通過集合連接得到的可能成為頻繁2-項(xiàng)集的2-項(xiàng)集稱之為候選頻繁2-項(xiàng)集。通過集合連接得到的可能成為頻繁k-項(xiàng)集的k-項(xiàng)集稱之為候選頻繁k_項(xiàng)集。
[0040]置信度:表示某條規(guī)則的可信程度。計(jì)算方法為下層頻繁集的支持度與上層頻繁集的支持度之商。例如,〈ABCE,3>,<AB, 10>,則規(guī)則AB — CE的置信度為30%。
[0041]跨層統(tǒng)計(jì):由η項(xiàng)自然連接所產(chǎn)生的集分別為Cj1,G.......Cir15C;;個,呈菱形分布。通過Apriori算法產(chǎn)生的候選頻繁k_項(xiàng)集的驗(yàn)證過程可以拆解成每一項(xiàng)的簡單計(jì)數(shù),是相互獨(dú)立的,因此將該過程并行化是可行的。并且即使在候選頻繁k-項(xiàng)集沒有完全驗(yàn)證完畢的時候,將已經(jīng)驗(yàn)證過的部分頻繁k-項(xiàng)集進(jìn)行連接,同樣可以產(chǎn)生一部分候選頻繁(k+l)_項(xiàng)集。也就是說不必等待同一層的所有頻繁集完全確定之后才能開始下一次頻繁集的生成和驗(yàn)證。因此將每一項(xiàng)單獨(dú)驗(yàn)證還可以一定程度上解決各節(jié)點(diǎn)間的相互等待的問題。
[0042]事務(wù)編號集:每個節(jié)點(diǎn)都存儲了整個事務(wù)數(shù)據(jù)庫,事務(wù)數(shù)據(jù)形如下表,Tid表示事務(wù)的編號。
[0043]
【權(quán)利要求】
1.一種關(guān)聯(lián)分析算法的并行化方法,其特征在于該方法采用主從結(jié)構(gòu),由一臺服務(wù)器作為主節(jié)點(diǎn)處理所有的調(diào)度和協(xié)調(diào),其余服務(wù)器作為子節(jié)點(diǎn)完成計(jì)算任務(wù),該并行化方法的步驟如下: 步驟1.啟動所有服務(wù)器,將待分析的原始數(shù)據(jù)的數(shù)據(jù)庫分別下載到所有服務(wù)器節(jié)點(diǎn)上; 步驟2.第一階段分析開始,主節(jié)點(diǎn)掃描自身數(shù)據(jù)庫,統(tǒng)計(jì)出整個1-項(xiàng)集以及事務(wù)總數(shù),設(shè)定閥值,并將閥值發(fā)送到各個子節(jié)點(diǎn)上; 步驟3.將整個1-項(xiàng)集作為候選頻繁1-項(xiàng)集,由主節(jié)點(diǎn)將每一項(xiàng)的統(tǒng)計(jì)任務(wù)分派給一個空閑的子節(jié)點(diǎn); 步驟4.收到任務(wù)的各個子節(jié)點(diǎn)掃描自身數(shù)據(jù)庫,統(tǒng)計(jì)該項(xiàng)的支持度,如果該項(xiàng)的支持度滿足閥值則向主節(jié)點(diǎn)返回該項(xiàng)以及該項(xiàng)的支持度和事務(wù)編號集,如果不滿足則刪除掉該項(xiàng); 步驟5.主節(jié)點(diǎn)將收到的返回結(jié)果加入頻繁1-項(xiàng)集中,并連接這些項(xiàng)集生成按字典順序排列的候選頻繁2-項(xiàng)集,每生成一項(xiàng),就連同其候選事務(wù)編號集一并分派給一個空閑的子節(jié)點(diǎn); 步驟6.收到任務(wù)的各個子節(jié)點(diǎn)掃描所給的候選事務(wù)編號集,統(tǒng)計(jì)該項(xiàng)的支持度,如果該項(xiàng)的支持度滿足閥值則向主節(jié)點(diǎn)返回該項(xiàng)以及該項(xiàng)的支持度和事務(wù)編號集,如果不滿足則刪除掉該項(xiàng)及其相關(guān)數(shù)據(jù);步驟7.主節(jié)點(diǎn)將收到的返回結(jié)果加入頻繁2-項(xiàng)集中,并連接這些項(xiàng)集生成按字典順序排列的候選頻繁3-項(xiàng)集,每生成一項(xiàng),就連同其候選事務(wù)編號集一并分派給空閑節(jié)點(diǎn);步驟8.重復(fù)步驟6,步驟7的過程,將每次返回的結(jié)果保存入頻繁集,并連接生成更長的候選頻繁集,直到?jīng)]有新的項(xiàng)滿足閥值為止,保存所有的頻繁1-項(xiàng)、2-項(xiàng)、3-項(xiàng)……k-項(xiàng)集以及各自的支持度,將所有的頻繁集按照頻繁1-項(xiàng)集分組,第一階段分析結(jié)束; 步驟9.第二階段分析開始,按照分組將各組頻繁集及其支持度發(fā)送給各個子節(jié)點(diǎn);步驟10.各子節(jié)點(diǎn)分別根據(jù)每組頻繁集生成規(guī)則并計(jì)算其置信度,如果滿足閥值則向主節(jié)點(diǎn)返回該規(guī)則,如果不滿足則忽略; 步驟11.主節(jié)點(diǎn)將所有收到的返回結(jié)果保存,排序后即為規(guī)則集,第二階段分析結(jié)束; 步驟12.輸出顯示規(guī)則集,結(jié)束。
【文檔編號】G06F17/30GK103914528SQ201410124334
【公開日】2014年7月9日 申請日期:2014年3月28日 優(yōu)先權(quán)日:2014年3月28日
【發(fā)明者】張琳, 邵天昊, 王汝傳, 韓志杰, 付雄, 季一木 申請人:南京郵電大學(xué)