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