關(guān)聯(lián)規(guī)則挖掘算法探究論文
時間:2022-11-04 03:52:00
導語:關(guān)聯(lián)規(guī)則挖掘算法探究論文一文來源于網(wǎng)友上傳,不代表本站觀點,若需要原創(chuàng)文章可咨詢客服老師,歡迎參考。
摘要Apriori算法是發(fā)現(xiàn)頻繁項目集的經(jīng)典算法,但是該算法需反復掃描數(shù)據(jù)庫,因此效率較低。本文介紹了Apriori算法的思想,并分析了該算法的性能瓶頸。在此基礎上,針對Apriori算法提出了一種改進方法,該方法采用轉(zhuǎn)置矩陣的策略,只掃描一次數(shù)據(jù)庫即可完成所有頻繁項目集的發(fā)現(xiàn)。與其他經(jīng)典的算法相比,本文提出的算法在項目集長度較大時,性能明顯提高。
關(guān)鍵字關(guān)聯(lián)規(guī)則,支持度,置信度,Apriori
1引言
關(guān)聯(lián)規(guī)則挖掘就是在海量的數(shù)據(jù)中發(fā)現(xiàn)數(shù)據(jù)項之間的關(guān)系,是數(shù)據(jù)挖掘領域中研究的熱點問題。1993年Agrawal等人[1]首先提出了交易數(shù)據(jù)庫中不同商品之間的關(guān)聯(lián)規(guī)則挖掘,并逐漸引起了專家、學者的重視。關(guān)聯(lián)規(guī)則挖掘問題可以分為:發(fā)現(xiàn)頻繁項目集和生成關(guān)聯(lián)規(guī)則兩個子問題,其中發(fā)現(xiàn)所有的頻繁項目集是生成關(guān)聯(lián)規(guī)則的基礎。近年來,發(fā)現(xiàn)頻繁項目集成為了關(guān)聯(lián)規(guī)則挖掘算法研究的重點,在經(jīng)典的Apriori算法的基礎上提出里大量的改進算法。Savasere等[2]設計了基于劃分(partition)的算法,該算法可以高度并行計算,但是進程之間的通信是算法執(zhí)行時間的主要瓶頸;Park等[3]通過實驗發(fā)現(xiàn)尋找頻集主要的計算是在生成頻繁2-項集上,利用這個性質(zhì)Park等引入雜湊(Hash)技術(shù)來改進產(chǎn)生頻繁2-項集的方法,該算法顯著的提高了頻繁2-項集的發(fā)現(xiàn)效率;Mannila等[4]提出:基于前一遍掃描得到的信息,對此仔細地作組合分析,可以得到一個改進的算法了。針對Mannila的思想Toivonen[5]進一步提出:先使用從數(shù)據(jù)庫中抽取出來的采樣得到一些在整個數(shù)據(jù)庫中可能成立的規(guī)則,然后對數(shù)據(jù)庫的剩余部分驗證這個結(jié)果。Toivonen的算法相當簡單并顯著地減少了I/O代價,但是一個很大的缺點就是產(chǎn)生的結(jié)果不精確,存在數(shù)據(jù)扭曲(dataskew)。
上述針對經(jīng)典Apriori算法的改進算法在生成頻繁項目集時都需要多次掃描數(shù)據(jù)庫,沒有顯著的減少I/O的代價。本文在分析了經(jīng)典的Apriori算法的基礎上,給出了一種改進的方法,該方法采用轉(zhuǎn)置矩陣的策略,只掃描一次數(shù)據(jù)庫即完成頻繁項目集的發(fā)現(xiàn),在項目集長度較大時,性能明顯提高。
2Apriori算法
2.1基本概念
設I={i1,i2,…,im}是二進制文字的集合,其中的元素稱為項(item)。定義交易(transaction)T為項的集合,并且TÍI,定義D為交易T的集合。設X是I中若干項的集合,如果XÍT,那么稱交易T包含X。項目集中包含項的個數(shù)成為項目集長度。
關(guān)聯(lián)規(guī)則是形如XÞY的蘊涵式,這里XÌI,YÌI,并且XÇY=F。
規(guī)則XÞY在交易數(shù)據(jù)庫D中的支持度(support)是交易集合中包含X和Y的交易數(shù)與所有交易數(shù)之比,記為support(XÞY),即support(XÞY)=|{T:XÈYÍT,TÎD}|/|D|。
規(guī)則XÞY在交易集中的置信度(confidence)是指包含X和Y的交易數(shù)與包含X的交易數(shù)之比,記為confidence(XÞY),即confidence(XÞY)=|{T:XÈYÍT,TÎD}|/|{T:XÍT,TÎD}|。給定一個交易集D,挖掘關(guān)聯(lián)規(guī)則就是找出支持度和置信度分別大于用戶給定的最小支持度(minsup)和最小置信度(minconf)的關(guān)聯(lián)規(guī)則。
2.2基本思想
1994年Agrawal等人在項目集格空間理論的基礎上提出了用于發(fā)現(xiàn)頻繁項目集的Apriori算法。該算法采用“逐層搜索”的迭代方法,用k-項集生成(k+1)-項集。首先,掃描數(shù)據(jù)庫計算出頻繁1-項集的集合(記為:L1);然后,執(zhí)行下面的迭代過程計算頻繁k-項集,直到生成頻繁k-項集的集合(記為:Lk)為空:
①連接:Lk-1進行自連接運算,生成候選k-項集的集合(記為:Ck)。所有的頻繁k-項集都包含在Ck集合中。
②剪枝:①生成的Ck是Lk的超集,掃描數(shù)據(jù)庫計算Ck中每個候選項目集的支持度,支持度大于用戶給定最小支持度的候選k-項目集就是頻繁k-項目集。
通過上述的迭代過程,可以發(fā)現(xiàn)項目集I在給定數(shù)據(jù)庫D中滿足最小支持度的所有頻繁項目集。
2.3算法分析
Apriori算法在執(zhí)行“連接-剪枝”的迭代過程中,需要多次掃描數(shù)據(jù)庫,如果生成的頻繁項目集中含有10-項集,則需要掃描10遍數(shù)據(jù)庫,增大了I/O負載。并且在迭代過程中,候選項目集合Ck是以指數(shù)速度增長的,Lk-1自連接會產(chǎn)生大量的候選k-項目集,例如有104個1-項集,自連接后就可以產(chǎn)生大約107個候選2-項集。這些都嚴重影響了Apriori算法的效率。
3改進的Apriori算法
3.1改進思想
Apriori算法在迭代過程中多次掃描數(shù)據(jù)庫和產(chǎn)生大量的候選項目集形成了算法的性能瓶頸。為了提高算法的效率本文進行如下改進:
數(shù)據(jù)庫D中每個交易T都有一個唯一的編號TID。定義K-項集Rk=<Xk,TIDS(Xk)>,其中Xk=(ij1,ij2,…,ijk),ij1,ij2,…,ijkÎI,j1<j2<…<jk,TIDS(Xk)是數(shù)據(jù)庫中所有包含Xk的交易T的編號TID的集合,即為:TIDS(Xk)={TID:XkÍT,<TID,T>ÎD}。根據(jù)上面的定義k-項目集Rk的支持度可以表示為:support(Rk)=|TIDS(Xk)|/|D|=|{TID:XkÍT,<TID,T>ÎD}|/|D|。Rk的支持數(shù)supNum(Rk)=support(Rk)*|D|=|TIDS(Xk)|。L’k表示k-項集的集合。
改進的Apriori算法依然采用“逐層搜索”的迭代方法,迭代過程的“連接-剪枝”運算定義如下:
①連接:設兩個(k-1)-項集:L’k-1(i)=<Xk-1,TIDS(Xk-1)>ÎL’k-1,L’k-1(j)=<Yk-1,TIDS(Yk-1)>ÎL’k-1,i<j。如果Xk-1和Yk-1的前k-2項相等,即:Xk-1[k-2]≡Yk-1[k-2],則(k-1)-項集連接:L’k-1(i)∞L’k-1(j)=<Xk-1
∪Yk-1,TIDS(Xk-1)∩TIDS(Yk-1)>=<Xk,TIDS(Xk)>=RkÎL’k;否則,不進行連接運算,因為產(chǎn)生的結(jié)果不是重復,就是非頻繁項目集,這樣可減少計算量。
②剪枝:計算k-項集的支持數(shù),根據(jù)上面的定義supNum(Rk)=|TIDS(Xk)|,該計算過程不需要再掃描數(shù)據(jù)庫,避免了I/O操作,提高了算法的效率。如果supNum(Rk)≥minSupNum,則<Xk,|TIDS(Xk)|>ÎL;否則,從集合L’k中刪除Rk。
3.2改進的算法描述
輸入:數(shù)據(jù)庫D,最小支持數(shù)minSupNum
輸出:D中的頻繁項目集L
算法描述:
①L’1=findFrequentOneItemSets(D);//掃描數(shù)據(jù)庫D生成1-項集的集合L’1。
②foreachOneItemSet<X1,TIDS(X1)>ÎL’1//生成頻繁1-項集的集合
if(|TIDS(X1)|≥minSupNum)
L=L∪{<X1,|TIDS(X1)|>};
else
L’1=L’1-{<X1,TIDS(X1)>};
③for(k=2;L’k-1≠Ф;k++)
L’k=L’k-1∞L’k-1;
Foreachk_ItemSet<Xk,TIDS(Xk)>ÎL’k
if(|TIDS(Xk)|≥minSupNum)
L=L∪{<Xk,|TIDS(Xk)|>};
else
L’k=L’k-{<Xk,TIDS(Xk)>};
④returnL;
3.3例舉
設數(shù)據(jù)庫D表1所示,最小支持數(shù)minSupNum=4,運行改進的算法的過程如圖所示:
4總結(jié)
改進的Apriori算法,只是在生成L’1時進行了一次數(shù)據(jù)庫掃描,在之后的迭代過程中不需要掃描數(shù)據(jù)庫。與文獻2,3,4,5中提出的改進算法相比,使用本文提出的算法大大降低了I/O負載,使得頻繁項目集的發(fā)現(xiàn)速度大大提高,尤其是在項目集長度較大的情況下。算法的迭代過程不需要復雜的計算,項目集連接僅僅使用集合的并、交運算即可完成,使得該算法易于實現(xiàn),相信該算法具有一定的理論與實用價值。
但是該算法也有不足:為了減少I/O負載,要求在第一次掃描時把所有的信息裝入內(nèi)存,雖然本算法對數(shù)據(jù)庫進行編碼,以二元組的形式存儲項集,但是數(shù)據(jù)挖掘都是基于海量數(shù)據(jù)的,因此,算法運行時需要大量內(nèi)存,對此將在今后的研究中進行改進。
參考文獻
[1]R.Agrawal,T.Imielinski,andA.Swami.Miningassociationrulesbetweensetsofitemsinlargedatabases.ProceedingsoftheACMSIGMODConferenceonManagementofdata,pp.207-216,1993
[2]A.Savasere,E.Omiecinski,andS.Navathe.Anefficientalgorithmforminingassociationrulesinlargedatabases.Proceedingsofthe21stInternationalConferenceonVerylargeDatabase,1995
[3]J.S.Park,M.S.Chen,andP.S.Yu.Aneffectivehash-basedalgorithmforminingassociationrules.ProceedingsofACMSIGMODInternationalConferenceonManagementofData,pages175-186,SanJose,CA,May1995
[4]H.Mannila,H.Toivonen,andA.Verkamo.Efficientalgorithmfordiscoveringassociationrules.AAAIWorkshoponKnowledgeDiscoveryinDatabases,1994,pp.181-192
[5]H.Toivonen.Samplinglargedatabasesforassociationrules.Proceedingsofthe22ndInternationalConferenceonVeryLargeDatabase,Bombay,India,September1996
[6]羅可,賀才望.基于Apriori算法改進的關(guān)聯(lián)規(guī)則提取算法.計算機與數(shù)字工程.2006,34(4):48-51,55
[7]蔡偉杰,楊曉輝等.關(guān)聯(lián)規(guī)則綜述.計算機工程.2001,27(5):31-33,49
- 上一篇:證書撤銷方法探究論文
- 下一篇:主題數(shù)據(jù)平臺分析論文
熱門標簽
關(guān)聯(lián)理論論文 關(guān)聯(lián) 關(guān)聯(lián)方交易 關(guān)聯(lián)交易 關(guān)聯(lián)性 關(guān)聯(lián)規(guī)則 關(guān)聯(lián)企業(yè) 關(guān)聯(lián)方 關(guān)聯(lián)度 心理培訓 人文科學概論