一種處理交易事務(wù)數(shù)據(jù)庫數(shù)據(jù)的方法和裝置的制造方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明屬于數(shù)據(jù)挖掘領(lǐng)域,尤其涉及一種處理交易事務(wù)數(shù)據(jù)庫數(shù)據(jù)的方法和裝 置。
【背景技術(shù)】
[0002] 關(guān)聯(lián)規(guī)則的數(shù)據(jù)挖掘是從巨大的數(shù)據(jù)集中找出感興趣規(guī)則和相關(guān)關(guān)系,這些項集 常存儲在交易事務(wù)數(shù)據(jù)庫中。決策制定者將這些關(guān)系應(yīng)用到?jīng)Q策支持中,例如"Beer和 Diaper"這個數(shù)據(jù)挖掘的經(jīng)典案例就是一個對關(guān)聯(lián)規(guī)則的挖掘。關(guān)聯(lián)規(guī)則是數(shù)據(jù)挖掘的核 心技術(shù)之一,得到了廣泛的商業(yè)和學(xué)術(shù)研究,尤其是在今天這種大數(shù)據(jù)時代,已顯示出較大 的發(fā)展前途。
[0003] 現(xiàn)有的關(guān)聯(lián)規(guī)則算法大致可以分為廣度優(yōu)先算法和深度優(yōu)先算法兩類,其中,廣 度優(yōu)先算法是從下到上的搜索數(shù)據(jù)集,先是找出候選集,然后從中找出頻繁集,和廣度優(yōu)先 算法比,深度優(yōu)先算法不需要生成候選集,而是基于頻繁模式增長的異類算法。
[0004] 在關(guān)聯(lián)規(guī)則算法中,最著名的算法是由Agrawal和Srikantt于1994年提出的 Apriori算法,其是一個廣度優(yōu)先算法。Apriori算法采取了自底向上、分層搜索策略,這意 味著要找到k-(即k階,下文同,例如," 1-"表示1階,"2_"表示2階,等等)項集,就需要 做k次迭代。Apriori算法可以簡單分為兩步,其中,第一步為連接即類矩陣運算,第二步 為剪枝即去掉那些沒必要的中間結(jié)果。首先找出所有1-頻繁項集的集合L1,由集合L1找 出2-頻繁項集的集合L2,而集合L2找出集合L3,……,如此下去,直到不能找到k_頻繁 項集,并利用事先設(shè)定好的最小支持度閾值進行篩選,將小于最小支持度的候選項集刪除, 再進行下一次的合并生成該層的頻繁項集。
[0005] 然而,上述現(xiàn)有的Apriori算法在實際應(yīng)用時存在以下缺陷:
[0006] 1)每計算一個k_項集都要掃描一次交易事務(wù)數(shù)據(jù)庫,計算所有k_頻繁項集則會 重復(fù)掃描交易事務(wù)數(shù)據(jù)庫,從而增加讀取交易事務(wù)數(shù)據(jù)庫的I/O次數(shù);
[0007] 2)因計算項過多而造成執(zhí)行緩慢,運算效率低下。
【發(fā)明內(nèi)容】
[0008] 本發(fā)明的目的在于提供一種處理交易事務(wù)數(shù)據(jù)庫數(shù)據(jù)的方法和裝置,以提高關(guān)聯(lián) 規(guī)則數(shù)據(jù)挖掘的運算效率。
[0009] 本發(fā)明第一方面提供一種處理交易事務(wù)數(shù)據(jù)庫數(shù)據(jù)的方法,所述方法包括:
[0010] 將交易事務(wù)數(shù)據(jù)庫的數(shù)據(jù)分成N份以獲得N個分塊事務(wù)數(shù)據(jù)庫,并按照每個計算 節(jié)點一個分塊事務(wù)數(shù)據(jù)庫的方式分發(fā)至N個并行處理的計算節(jié)點,所述N為大于1的自然 數(shù);
[0011] 所述每個計算節(jié)點將各自分得的分塊事務(wù)數(shù)據(jù)庫轉(zhuǎn)化為壓縮的事務(wù)布爾矩陣;
[0012] 所述N個并行處理的計算節(jié)點通過對所述壓縮的事務(wù)布爾矩陣的行向量或列向 量進行相"與"計算,得到所有k_頻繁項集,所述k為自然數(shù)。
[0013] 本發(fā)明第二方面提供一種處理交易事務(wù)數(shù)據(jù)庫數(shù)據(jù)的裝置,其特征在于,所述裝 置包括:
[0014] 分割模塊,用于將交易事務(wù)數(shù)據(jù)庫的數(shù)據(jù)分成N份以獲得N個分塊事務(wù)數(shù)據(jù)庫,并 按照每個計算節(jié)點一個分塊事務(wù)數(shù)據(jù)庫的方式分發(fā)至N個并行處理的計算節(jié)點,所述N為 大于1的自然數(shù);
[0015] 矩陣壓縮模塊,用于所述每個計算節(jié)點將各自分得的分塊事務(wù)數(shù)據(jù)庫轉(zhuǎn)化為壓縮 的事務(wù)布爾矩陣;
[0016] 頻繁項集獲取模塊,用于所述N個并行處理的計算節(jié)點通過對所述壓縮的事務(wù)布 爾矩陣的行向量或列向量進行相"與"計算,得到所有k_頻繁項集,所述k為自然數(shù)。
[0017] 從上述本發(fā)明技術(shù)方案可知,一方面,由于每個計算節(jié)點將各自分得的分塊事務(wù) 數(shù)據(jù)庫轉(zhuǎn)化為壓縮的事務(wù)布爾矩陣只需要掃描一次交易數(shù)據(jù)庫,此后在計算k-頻繁項集 時只需要掃描一次事務(wù)布爾矩陣即可,從而減少了讀取交易事務(wù)數(shù)據(jù)庫的I/O次數(shù),提高 了讀取交易事務(wù)數(shù)據(jù)庫的效率;另一方面,在計算k-頻繁項集時,是N個并行處理的計算節(jié) 點通過對壓縮的事務(wù)布爾矩陣的行向量或列向量進行相"與"計算,直接省去現(xiàn)有Apriori 算法的連接和裁剪兩步,通過對壓縮的事務(wù)布爾矩陣的行和列向量的裁剪,提高了 k-頻繁 項集的計算效率。
【附圖說明】
[0018] 圖1是本發(fā)明實施例一提供的處理交易事務(wù)數(shù)據(jù)庫數(shù)據(jù)的方法的實現(xiàn)流程示意 圖;
[0019] 圖2是本發(fā)明實施例二提供的處理交易事務(wù)數(shù)據(jù)庫數(shù)據(jù)的裝置的結(jié)構(gòu)示意圖;
[0020] 圖3是本發(fā)明實施例三提供的處理交易事務(wù)數(shù)據(jù)庫數(shù)據(jù)的裝置的結(jié)構(gòu)示意圖;
[0021] 圖4是本發(fā)明實施例四提供的處理交易事務(wù)數(shù)據(jù)庫數(shù)據(jù)的裝置的結(jié)構(gòu)示意圖;
[0022] 圖5是本發(fā)明實施例五提供的處理交易事務(wù)數(shù)據(jù)庫數(shù)據(jù)的裝置的結(jié)構(gòu)示意圖;
[0023] 圖6是本發(fā)明實施例六提供的處理交易事務(wù)數(shù)據(jù)庫數(shù)據(jù)的裝置的結(jié)構(gòu)示意圖。
【具體實施方式】
[0024] 為了使本發(fā)明的目的、技術(shù)方案及有益效果更加清楚明白,以下結(jié)合附圖及實施 例,對本發(fā)明進行進一步詳細說明。應(yīng)當(dāng)理解,此處所描述的具體實施例僅僅用以解釋本發(fā) 明,并不用于限定本發(fā)明。
[0025] 本發(fā)明實施例提供一種處理交易事務(wù)數(shù)據(jù)庫數(shù)據(jù)的方法,所述方法包括:將交易 事務(wù)數(shù)據(jù)庫的數(shù)據(jù)分成N份得到N個分塊事務(wù)數(shù)據(jù)庫,并按照每個計算節(jié)點一個分塊事務(wù) 數(shù)據(jù)庫的方式分發(fā)至N個并行處理的計算節(jié)點,所述N為大于1的自然數(shù);所述每個計算節(jié) 點將各自分得的分塊事務(wù)數(shù)據(jù)庫轉(zhuǎn)化為壓縮的事務(wù)布爾矩陣;所述N個并行處理的計算節(jié) 點通過對所述壓縮的事務(wù)布爾矩陣的行向量或列向量進行相"與"計算,得到所有k-頻繁 項集,所述k為自然數(shù)。本發(fā)明實施例還提供相應(yīng)的處理交易事務(wù)數(shù)據(jù)庫數(shù)據(jù)的裝置。以 下分別進行詳細說明。
[0026] 請參閱附圖1,是本發(fā)明實施例一提供的處理交易事務(wù)數(shù)據(jù)庫數(shù)據(jù)的方法的實現(xiàn) 流程示意圖。附圖1示例的方法可用于Spark平臺,主要包括以下步驟S101至步驟S103 :
[0027] S101,將交易事務(wù)數(shù)據(jù)庫的數(shù)據(jù)分成N份以獲得N個分塊事務(wù)數(shù)據(jù)庫,并按照每個 計算節(jié)點一個分塊事務(wù)數(shù)據(jù)庫的方式分發(fā)至N個并行處理的計算節(jié)點,其中,N為大于1的 自然數(shù)。
[0028] 以Spark平臺為例,由于Spark平臺是運行在Mesos集群上的平臺,而Mesos集群 能支持HDFS和S3這樣的文件系統(tǒng),本發(fā)明是以HDFS作為其原始數(shù)據(jù)存放的文件系統(tǒng),從 而實現(xiàn)了對交易事務(wù)數(shù)據(jù)庫的事務(wù)數(shù)據(jù)集的自動劃分,即,將交易事務(wù)數(shù)據(jù)庫的數(shù)據(jù)分成N 份以獲得N個分塊事務(wù)數(shù)據(jù)庫,并按照每個計算節(jié)點一個分塊事務(wù)數(shù)據(jù)庫的方式分發(fā)至N 個并行處理的計算節(jié)點,例如,Spark平臺上N個并行處理的計算節(jié)點。
[0029] S102,每個計算節(jié)點將各自分得的分塊事務(wù)數(shù)據(jù)庫轉(zhuǎn)化為壓縮的事務(wù)布爾矩陣。
[0030] 在本發(fā)明實施例中,每個計算節(jié)點可以將經(jīng)過步驟S101分得的分塊事務(wù)數(shù)據(jù)庫 中所有相同的交易事務(wù)記錄為一條交易事務(wù)Ti,然后,使用數(shù)組TS[s]中的元素 TS[i]記 錄交易事務(wù)Ti在分塊事務(wù)數(shù)據(jù)庫中的實際條數(shù),從而實現(xiàn)每個計算節(jié)點將各自分得的分 塊事務(wù)數(shù)據(jù)庫轉(zhuǎn)化為壓縮的事務(wù)布爾矩陣。具體地,掃描分塊事務(wù)數(shù)據(jù)庫的交易事務(wù),將每 一條交易事務(wù)記錄轉(zhuǎn)化為一條代表事務(wù)的列向量,然后,核對該列向量是否存在事務(wù)布爾 矩陣中,如果存在則將對應(yīng)的交易事務(wù)計數(shù)加1 ;如果不存在,將該列向量加入事務(wù)布爾矩 陣,并將對應(yīng)的交易事務(wù)計數(shù)設(shè)置為1。以以下的一個分塊事務(wù)數(shù)據(jù)庫
[0033] 為例,其轉(zhuǎn)化為壓縮的事務(wù)布爾矩陣如下:
當(dāng)前第1頁
1 
2 
3 
4