基于改進Apriori算法的關(guān)聯(lián)規(guī)則挖掘系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)涉及一套基于改進Apriori算法的關(guān)聯(lián)規(guī)則挖掘系統(tǒng),是一種基于位運算進 行頻繁項統(tǒng)計的關(guān)聯(lián)規(guī)則挖掘系統(tǒng),該系統(tǒng)在實現(xiàn)Apriori算法的過程中,減少了剪枝操 作中候選項集子集的檢驗數(shù)量并在由候選項集生成頻繁項集時減少了數(shù)據(jù)庫掃描次數(shù),屬 于數(shù)據(jù)挖掘領(lǐng)域。
【背景技術(shù)】
[0002] 隨著"啤酒、尿布"案例在營銷界的成功運用,人們對不斷收集的數(shù)據(jù)中關(guān)聯(lián)規(guī)則 的挖掘越來越感興趣,關(guān)聯(lián)規(guī)則的應(yīng)用范圍也逐漸從超市營銷擴展到更多的領(lǐng)域。當(dāng)前關(guān) 聯(lián)規(guī)則挖掘的算法主要有Apriori和FP樹。FP樹因內(nèi)存消耗大、實現(xiàn)復(fù)雜、系統(tǒng)要求高等 限制,未能在實際使用中得到廣泛應(yīng)用,目前多作教學(xué)案例或研宄課題用。Apriori算法是 關(guān)聯(lián)規(guī)則挖掘過程中實際采用最多的方法,但是該算法仍存在數(shù)據(jù)庫掃描次數(shù)多、候選集 大、挖掘效率低等問題。
【發(fā)明內(nèi)容】
[0003] 本發(fā)明的目的在于克服現(xiàn)有技術(shù)中存在的不足,提供一種基于改進Apriori算法 的關(guān)聯(lián)規(guī)則挖掘系統(tǒng),采用了基于位運算的頻繁項統(tǒng)計方法,簡化了剪枝操作復(fù)雜度并減 少了數(shù)據(jù)庫掃描的次數(shù),從而提高了關(guān)聯(lián)規(guī)則挖掘效率,降低了系統(tǒng)資源的消耗,可以為企 業(yè)、商家提供更為高效、方便的關(guān)聯(lián)規(guī)則挖掘業(yè)務(wù),具有較大實用價值。本發(fā)明采用的技術(shù) 方案是:
[0004] 本發(fā)明提出的基于改進Apriori算法的關(guān)聯(lián)規(guī)則挖掘系統(tǒng),包括數(shù)據(jù)預(yù)處理模 塊、連接模塊、剪枝模塊、頻繁項統(tǒng)計模塊和關(guān)聯(lián)規(guī)則生成模塊;所述數(shù)據(jù)預(yù)處理模塊與數(shù) 據(jù)庫交互,負(fù)責(zé)將數(shù)據(jù)庫中的文本數(shù)據(jù)轉(zhuǎn)換為可進行位運算的整型格式;所述連接模塊、剪 枝模塊和頻繁項統(tǒng)計模塊共同構(gòu)成Apriori算法的具體實現(xiàn),負(fù)責(zé)頻繁項集的生成;所述 關(guān)聯(lián)規(guī)則生成模塊與頻繁項統(tǒng)計模塊交互,負(fù)責(zé)將頻繁項統(tǒng)計模塊生成的頻繁項轉(zhuǎn)化為具 體的關(guān)聯(lián)規(guī)則。
[0005] 本發(fā)明的優(yōu)點在于:基于位運算進行頻繁項統(tǒng)計,降低了比較內(nèi)容復(fù)雜度,提高了 比較效率;連接和剪枝操作中,只針對K項集中包含新加入兩項的K-1項子集進行Apriori 性質(zhì)驗證,縮小了候選項集子集的Apriori性質(zhì)驗證范圍,減少了運算量;頻繁項統(tǒng)計中是 對每一條記錄統(tǒng)計各候選集中項集的頻數(shù),而不是傳統(tǒng)實現(xiàn)中每一個項集掃描一次數(shù)據(jù)庫 的方法??傮w來說,本發(fā)明降低了比較內(nèi)容的復(fù)雜度、減少了數(shù)據(jù)庫掃描次數(shù),從而提高了 關(guān)聯(lián)規(guī)則的挖掘效率。
【附圖說明】
[0006] 圖1為本發(fā)明的結(jié)構(gòu)框圖。
[0007] 圖2為本發(fā)明的工作流程圖。
【具體實施方式】
[0008] 下面結(jié)合具體附圖和實施例對本發(fā)明作進一步說明。
[0009] 本發(fā)明提出的基于改進Apriori算法的關(guān)聯(lián)規(guī)則挖掘系統(tǒng),包括數(shù)據(jù)預(yù)處理模 塊、連接模塊、剪枝模塊、頻繁項統(tǒng)計模塊和關(guān)聯(lián)規(guī)則生成模塊;所述數(shù)據(jù)預(yù)處理模塊與數(shù) 據(jù)庫交互,負(fù)責(zé)將數(shù)據(jù)庫中的文本數(shù)據(jù)轉(zhuǎn)換為可進行位運算的整型格式;所述連接模塊、剪 枝模塊和頻繁項統(tǒng)計模塊共同構(gòu)成Apriori算法的具體實現(xiàn),負(fù)責(zé)頻繁項集的生成;所述 關(guān)聯(lián)規(guī)則生成模塊與頻繁項統(tǒng)計模塊交互,負(fù)責(zé)將頻繁項統(tǒng)計模塊生成的頻繁項轉(zhuǎn)化為具 體的關(guān)聯(lián)規(guī)則。
[0010] 具體地,所述數(shù)據(jù)預(yù)處理模塊首先掃描數(shù)據(jù)庫,將數(shù)據(jù)庫中所有的項進行編號,令 所有項組成的集合為I=Ui,i2, in},則用n個二進制位表示各項,二進制數(shù)從高到低 位依次代表h,i2,……in,每個二進制位〇代表該項沒有出現(xiàn),1代表出現(xiàn);然后將數(shù)據(jù)庫 中的數(shù)據(jù)記錄TID= {ik,k彡1nk<n}轉(zhuǎn)換為對應(yīng)的二進制整型,重新寫入數(shù)據(jù)庫;并 且,該模塊第一次掃描數(shù)據(jù)庫式統(tǒng)計了各項ik出現(xiàn)的頻數(shù),將其中頻數(shù)超過最小支持度S 的項的集合稱作頻繁1項集L1。
[0011] 舉例來說,假設(shè)數(shù)據(jù)庫中有4個項,分別用于記錄姓名,地址,電話,郵編;如果一 條數(shù)據(jù)記錄中,只有姓名和地址有數(shù)據(jù),則這條數(shù)據(jù)記錄轉(zhuǎn)換為二進制整型為1100。
[0012] 所述連接模塊用來由頻繁k-1項集"^生成頻繁k項集Lk;設(shè)IkdPI^是L^中 的項集,它們均按照約定用二進制數(shù)表示:相應(yīng)項編號對應(yīng)的二進制位值為1,其它位為0, 對Ikl和Ik2執(zhí)行異或操作后所得結(jié)果,左起前兩個為1的二進制位U和V即為要連接的對 象,設(shè)從左到右對應(yīng)二進制從高位到低位;接下來從IkdPIk2中查找V位為〇的項,并將該 位置1,V位以下各位置0即完成IkdPIk2的連接操作,將其加入候選集Ck;對LH中的任 意兩個項集執(zhí)行類似操作。
[0013] 所述剪枝模塊與所述連接模塊相交互,根據(jù)Apriori性質(zhì),頻繁項集的任何子集 一定是頻繁項集,將候選集Ck中,k-1項子集不在Lh中的項剪掉;對任意Ck中的項集Ikl, 其對應(yīng)二進制數(shù)如0……1……〇……1……1……〇,除最右邊兩個1以外,從左到右依次將 位為1的位置〇,然后與Lh中的每一項執(zhí)行異或操作,如果掃描完整個L^,沒有出現(xiàn)結(jié)果 為〇的項,則將Ik#Ck中剪去;
[0014] 所述頻繁項統(tǒng)計模塊與數(shù)據(jù)庫相交互,并和所述連接模塊及所述剪枝模塊共同構(gòu) 成Apriori算法的主體;頻繁項統(tǒng)計模塊主要負(fù)責(zé)從數(shù)據(jù)庫中依次讀入每條記錄TID,然后 與Ck中的每一項Ikl,執(zhí)行如下操作(77Da/Al)?/(M,若結(jié)果為0則對Ikl的頻數(shù)統(tǒng)計加1 ; 最后從Ck中選出頻數(shù)超過最小支持度s的項集組成Lk;
[0015] 所述關(guān)聯(lián)規(guī)則生成模塊主要用來根據(jù)所述頻繁項統(tǒng)計模塊的結(jié)果生成相應(yīng)的關(guān) 聯(lián)規(guī)則,對Lk中的每一項Ik與L^中的每一項I^,執(zhí)行如下操作al ^,若結(jié)果 不為〇,設(shè)Ik值為〇……1……〇……1……1……〇且對應(yīng)位為1的位置分別為kl,k2,…… kn,則如果Ik最低位1比Ik_i最低位1位低,則生成的關(guān)聯(lián)規(guī)則為ikl,ik2, ???iw, , 否則生成關(guān)聯(lián)規(guī)則ikl,ik2, ???ikn^2,L ;置信度為Ik