一種面向大規(guī)模數(shù)據(jù)的關(guān)聯(lián)規(guī)則樹挖掘方法
【專利摘要】本發(fā)明涉及一種面向大規(guī)模數(shù)據(jù)的關(guān)聯(lián)規(guī)則樹挖掘方法,包括以下步驟:S1.對原始數(shù)據(jù)進(jìn)行預(yù)處理,將原始數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)處理為便于遍歷的數(shù)據(jù)結(jié)構(gòu);S2.遍歷每項(xiàng)數(shù)據(jù),將每項(xiàng)數(shù)據(jù)包含的屬性名、屬性名的值名及其支持度緩存起來,生成1?候選項(xiàng)集C1;S3.由1?候選項(xiàng)集C1生成1?頻繁項(xiàng)集L1;S4.由k?頻繁項(xiàng)集Lk生成k+1?候選項(xiàng)集Ck+1;S5.由k+1?候選項(xiàng)集Ck+1生成k+1?頻繁項(xiàng)集Lk+1;S6.重復(fù)執(zhí)行步驟S4~S5直至不能生成新的k+1?頻繁項(xiàng)集Lk+1;S7.將步驟S6獲得的所有的頻繁項(xiàng)集用于生成規(guī)則;S8.過濾出能被規(guī)則分類的數(shù)據(jù),不能被規(guī)則分類的數(shù)據(jù)重復(fù)執(zhí)行步驟S1~步驟S7,直至沒有規(guī)則生成。
【專利說明】
一種面向大規(guī)模數(shù)據(jù)的關(guān)聯(lián)規(guī)則樹挖掘方法
技術(shù)領(lǐng)域
[0001 ]本發(fā)明涉及計(jì)算機(jī)及數(shù)據(jù)挖掘領(lǐng)域,更具體地,涉及一種面向大規(guī)模數(shù)據(jù)的關(guān)聯(lián) 規(guī)則樹挖掘方法。
【背景技術(shù)】
[0002] 目前,隨著以大數(shù)據(jù)、云計(jì)算為核心的互聯(lián)網(wǎng)技術(shù)的迅速發(fā)展,作為大數(shù)據(jù)核心技 術(shù)的數(shù)據(jù)分析技術(shù)正在吸引越來越多的研究和關(guān)注。關(guān)聯(lián)規(guī)則樹挖掘這種結(jié)合關(guān)聯(lián)規(guī)則挖 掘和決策樹生成的算法吸引了大量的注意,而對于挖掘算法來說,面對龐大的數(shù)據(jù)時,保持 高準(zhǔn)確率的同時盡可能地提高算法的運(yùn)算效率至關(guān)重要。
[0003] 關(guān)聯(lián)規(guī)則樹挖掘是2004年被提出的一種結(jié)合關(guān)聯(lián)規(guī)則挖掘和決策樹生成的一種 分類訓(xùn)練方法,它在類標(biāo)分類的數(shù)據(jù)上展現(xiàn)出比傳統(tǒng)分類方法更高的準(zhǔn)確率及可操作性, 但是這個算法在當(dāng)時是基于單機(jī)設(shè)備設(shè)計(jì)的,在面對小規(guī)模數(shù)據(jù)時,上述算法可以得到理 想的分類結(jié)果,而在處理大規(guī)模數(shù)據(jù)時,由于算法無法在分布式集群上進(jìn)行有效擴(kuò)展,效率 低下,算法無法完成任務(wù),不能得到理想結(jié)果。
【發(fā)明內(nèi)容】
[0004] 本發(fā)明為解決以上現(xiàn)有技術(shù)的缺陷,提供了一種面向大規(guī)模數(shù)據(jù)的關(guān)聯(lián)規(guī)則樹挖 掘方法,該方法根據(jù)MapReduce框架和RDD數(shù)據(jù)結(jié)構(gòu)對關(guān)聯(lián)規(guī)則樹挖掘算法進(jìn)行了并行化創(chuàng) 新,使得挖掘方法的執(zhí)行效率更高,同時本發(fā)明能在可擴(kuò)展的大規(guī)模分布式平臺上執(zhí)行關(guān) 聯(lián)規(guī)則樹挖掘,在面對大規(guī)模數(shù)據(jù)量時可擴(kuò)展機(jī)器以提升計(jì)算能力,在可接受的時間內(nèi)得 出關(guān)聯(lián)規(guī)則樹,用于較高準(zhǔn)確度的分類決策。
[0005] 為實(shí)現(xiàn)以上發(fā)明目的,采用的技術(shù)方案是:
[0006] -種面向大規(guī)模數(shù)據(jù)的關(guān)聯(lián)規(guī)則樹挖掘方法,以下步驟:
[0007] S1.對原始數(shù)據(jù)進(jìn)行預(yù)處理,將原始數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)處理為便于遍歷的數(shù)據(jù)結(jié)構(gòu);
[0008] S2.遍歷每項(xiàng)數(shù)據(jù),將每項(xiàng)數(shù)據(jù)包含的屬性名、屬性名的值名及其支持度緩存起 來,生成1-候選項(xiàng)集C1;
[0009] S3.由1-候選項(xiàng)集&生成1-頻繁項(xiàng)集L1;
[0010] S4 ?由k-頻繁項(xiàng)集Lk生成k+1-候選項(xiàng)集Ck+1:
[0011] 設(shè)k-頻繁項(xiàng)集Lk中某一個項(xiàng)集為I,找出該項(xiàng)集中屬性名最靠右的屬性,設(shè)為A,然 后在1-頻繁項(xiàng)集1^中找到一個比A更靠右的屬性,拼接到I的后面;
[0012] 對k-頻繁項(xiàng)集Lk中所有的項(xiàng)集進(jìn)行以上操作,則生成了 k+1-候選項(xiàng)集Ck+1;
[0013] S5 ?由k+卜候選項(xiàng)集Ck+i生成k+卜頻繁項(xiàng)集Lk+i;
[0014] S6.重復(fù)執(zhí)行步驟S4~S5直至不能生成新的k+1-頻繁項(xiàng)集Lk+i;
[0015] S7.將步驟S6獲得的所有的頻繁項(xiàng)集用于生成規(guī)則;
[0016] S8.過濾出能被規(guī)則分類的數(shù)據(jù),不能被規(guī)則分類的數(shù)據(jù)重復(fù)執(zhí)行步驟S1~步驟 S7,直至沒有規(guī)則生成。
[0017]優(yōu)選地,所述卜候選項(xiàng)集&存儲的形式如下:
[0018] {{屬性1:值1}:支持度1}
[0019] {{屬性1:值2}:支持度2}
[0020] {{屬性2:值3}:支持度3}。
[0021]
[0022] {{屬性a:值v}:支持度f}
[0023] 優(yōu)選地,所述步驟S3具體執(zhí)行如下:將1-候選項(xiàng)集心中的每一個項(xiàng)集的支持度與 最小支持度MINSUP做比較,將支持度大于MINSUP的項(xiàng)集留下來構(gòu)造一個1-頻繁項(xiàng)集Lu
[0024] 優(yōu)選地,所述1-頻繁項(xiàng)集1^的存儲形式與1-候選項(xiàng)集&的存儲形式一致。
[0025]優(yōu)選地,所述步驟S5具體執(zhí)行如下:
[0026] 計(jì)算k+l_候選項(xiàng)集Ck+1中每一項(xiàng)的支持度,然后從k+l_候選項(xiàng)集中篩選出支持度 高于最小支持度MINSUP的項(xiàng)集,構(gòu)造 k+1-頻繁項(xiàng)集Lk+1。
[0027] 優(yōu)選地,所述k+1-候選項(xiàng)集&+1的存儲形式如下:
[0028] {屬性ai:值VI,屬性a2:值V2,…,屬性an:值Vm}。
[0029] 與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果是:
[0030] 本發(fā)明提供的數(shù)據(jù)挖掘方法根據(jù)MapReduce框架和RDD數(shù)據(jù)結(jié)構(gòu)對關(guān)聯(lián)規(guī)則樹挖 掘算法進(jìn)行了并行化創(chuàng)新,使得挖掘方法的執(zhí)行效率更高,同時本發(fā)明能在可擴(kuò)展的大規(guī) 模分布式平臺上執(zhí)行關(guān)聯(lián)規(guī)則樹挖掘,在面對大規(guī)模數(shù)據(jù)量時可擴(kuò)展機(jī)器以提升計(jì)算能 力,在可接受的時間內(nèi)得出關(guān)聯(lián)規(guī)則樹,用于較高準(zhǔn)確度的分類決策。
【附圖說明】
[0031]圖1為本發(fā)明的算法流程圖。
[0032] 圖2為并行計(jì)算平臺Spark RDD原理圖。
[0033]圖3為本發(fā)明并行化運(yùn)行原理圖。
[0034] 圖4為本發(fā)明在不同數(shù)據(jù)上加速比展示圖。
【具體實(shí)施方式】
[0035] 附圖僅用于示例性說明,不能理解為對本專利的限制;
[0036]以下結(jié)合附圖和實(shí)施例對本發(fā)明做進(jìn)一步的闡述。
[0037] 實(shí)施例1
[0038] 本發(fā)明涉及一種面向大規(guī)模數(shù)據(jù)的關(guān)聯(lián)規(guī)則樹挖掘方法,如圖2所示,該方法的執(zhí) 行平臺為并行計(jì)算平臺Spark RDD,算法的流程及并行化運(yùn)行的原理分別如圖1、圖3所示, 圖4為本發(fā)明提供的方法在在不同數(shù)據(jù)上加速比展示圖。
[0039] 如圖1、3所示,本發(fā)明提供的方法包括以下步驟:
[0040] 第一步:數(shù)據(jù)預(yù)處理。原始數(shù)據(jù)可能是各種形式的數(shù)據(jù),不利于存取也不利于遍 歷,比如數(shù)據(jù)庫文件、文本文件等,需要將它處理為有一定數(shù)據(jù)結(jié)構(gòu)的、內(nèi)存存儲的,分布式 的便于遍歷的數(shù)據(jù)。理想的處理結(jié)果是每一行數(shù)據(jù)以以下這種形式存在
[0041] {行號:{{屬性1:值1},{屬性2:值2}. . . {屬性a:值v}}}
[0042]這里有個重要的提示,由于ART是一種解決分類問題的算法,所以在頻繁項(xiàng)挖掘的 過程中,"類別"是當(dāng)成一個屬性來看待的;
[0043] 第二步:生成1-候選項(xiàng)集心。這一步就是完整地遍歷每一行數(shù)據(jù),將數(shù)據(jù)以每一項(xiàng) 包含屬性名、值名、支持度(這里就是指出現(xiàn)頻度)緩存起來,緩存所有的單項(xiàng)集,具體是以 下形式:
[0044] {{屬性1:值1}:支持度1}
[0045] {{屬性1:值2}:支持度2}
[0046] {{屬性2:值3}:支持度3}
[0047] ...
[0048] {{屬性a:值v}:支持度f}
[0049] 這里假設(shè)數(shù)據(jù)中存在N個屬性,第i個屬性存在Vi個可能的屬性值,則此步挖掘出 來的1 _候選項(xiàng)集的個數(shù)為: N
[0050] Xyi
[00511第三步:由1-候選項(xiàng)集&生成1-頻繁項(xiàng)集1^。即將1-候選項(xiàng)集&中每一個單項(xiàng)集的 支持度與參數(shù)最小支持度MINSUP做比較,將支持度大于MINSUP的項(xiàng)集留下來構(gòu)造一個1-頻 繁項(xiàng)集Li,存儲的形式保持1-候選項(xiàng)集&的形式不變;
[0052]第四步:用k-頻繁項(xiàng)集Lk生成k+1-候選項(xiàng)集Ck+1。這一步用到兩份數(shù)據(jù):(l)k_頻繁 項(xiàng)集;(2)1-頻繁項(xiàng)集(LO。假設(shè)Lk中某一個項(xiàng)集為I,找出該項(xiàng)集中屬性名最靠右的屬性,設(shè) 為A,然后在U中找到一個比A更靠右的屬性,拼接到I的后面,則生成了一個比I多一個屬性 的項(xiàng);將所有比A更靠右的屬性,每一個都拼接到一個I的后面;對L k中所有的項(xiàng),都做與I相 同的操作,則生成了 Ck+1,存為以下形式:
[0053] {屬性ai:值VI,屬性a2:值V2,…,屬性an:值Vm}
[0054] 第五步:由k+1-候選項(xiàng)集Ck+i生成k+1-頻繁項(xiàng)集Lk+i。如圖需要兩份數(shù)據(jù):(1)預(yù)處 理過的原始數(shù)據(jù)D; (2)k+l-候選項(xiàng)集Ck+i。這一步里,遍歷D,數(shù)出Ck+i中的每一項(xiàng)在D中的出 現(xiàn)次數(shù),亦即計(jì)算Ck+1中的每一項(xiàng)的支持度,記錄為如下形式:
[0055] {{屬性ai:值vi,屬性a2:值V2, ? ? ?,屬性an:值Vm,}:支持度f} (4.5)
[0056] 然后根據(jù)參數(shù)最小支持度MINSUP,從Ck+1*篩選出支持度f高于MINSUP的項(xiàng)集,存 為k+1-頻繁項(xiàng)集Lk+1。
[0057] 第六步:回到第四步驟,循環(huán)運(yùn)行,由頻繁項(xiàng)集生成多一項(xiàng)的候選項(xiàng)集,由候選項(xiàng) 集篩選出頻繁項(xiàng)集,直到不能再生成新的頻繁項(xiàng)集。
[0058] 第七步:將挖掘出來的頻繁項(xiàng)用來生成規(guī)則;
[0059] 第八步:過濾出能被規(guī)則分類的數(shù)據(jù),余下的數(shù)據(jù)重新進(jìn)入第一大步進(jìn)行頻繁項(xiàng) 集挖掘,循環(huán)運(yùn)行,直到?jīng)]有好的規(guī)則生成。
[0060] 顯然,本發(fā)明的上述實(shí)施例僅僅是為清楚地說明本發(fā)明所作的舉例,而并非是對 本發(fā)明的實(shí)施方式的限定。對于所屬領(lǐng)域的普通技術(shù)人員來說,在上述說明的基礎(chǔ)上還可 以做出其它不同形式的變化或變動。這里無需也無法對所有的實(shí)施方式予以窮舉。凡在本 發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明權(quán)利要求 的保護(hù)范圍之內(nèi)。
【主權(quán)項(xiàng)】
1. 一種面向大規(guī)模數(shù)據(jù)的關(guān)聯(lián)規(guī)則樹挖掘方法,其特征在于:包括以下步驟:51. 對原始數(shù)據(jù)進(jìn)行預(yù)處理,將原始數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)處理為便于遍歷的數(shù)據(jù)結(jié)構(gòu);52. 遍歷每項(xiàng)數(shù)據(jù),將每項(xiàng)數(shù)據(jù)包含的屬性名、屬性名的值名及其支持度緩存起來,生 成1-候選項(xiàng)集C1;53. 由1-候選項(xiàng)集&生成1-頻繁項(xiàng)集L1;54. 由k-頻繁項(xiàng)集Lk生成k+Ι-候選項(xiàng)集Ck+1: 設(shè)k-頻繁項(xiàng)集U中某一個項(xiàng)集為I,找出該項(xiàng)集中屬性名最靠右的屬性,設(shè)為A,然后在 1-頻繁項(xiàng)集L沖找到一個比A更靠右的屬性,拼接到I的后面; 對k-頻繁項(xiàng)集Lk中所有的項(xiàng)集進(jìn)行以上操作,則生成了 k+Ι-候選項(xiàng)集Ck+1;55. 由k+1-候選項(xiàng)集Ck+1生成k+1-頻繁項(xiàng)集Lk+1;56. 重復(fù)執(zhí)行步驟S4~S5直至不能生成新的k+Ι-頻繁項(xiàng)集Lk+1;57. 將步驟S6獲得的所有的頻繁項(xiàng)集用于生成規(guī)則;58. 過濾出能被規(guī)則分類的數(shù)據(jù),不能被規(guī)則分類的數(shù)據(jù)重復(fù)執(zhí)行步驟Sl~步驟S7,直 至沒有規(guī)則生成。2. 根據(jù)權(quán)利要求1所述的面向大規(guī)模數(shù)據(jù)的關(guān)聯(lián)規(guī)則樹挖掘方法,其特征在于:所述1-候選項(xiàng)集&存儲的形式如下: {{屬性1:值1}:支持度1} {{屬性1:值2}:支持度2} {{屬性2:值3}:支持度3}。 {{屬性a:值v}:支持度f}。3. 根據(jù)權(quán)利要求1所述的面向大規(guī)模數(shù)據(jù)的關(guān)聯(lián)規(guī)則樹挖掘方法,其特征在于:所述步 驟S3具體執(zhí)行如下:將1-候選項(xiàng)集心中的每一個項(xiàng)集的支持度與最小支持度MINSUP做比 較,將支持度大于MINSUP的項(xiàng)集留下來構(gòu)造一個1-頻繁項(xiàng)集L 1。4. 根據(jù)權(quán)利要求3所述的面向大規(guī)模數(shù)據(jù)的關(guān)聯(lián)規(guī)則樹挖掘方法,其特征在于:所述1-頻繁項(xiàng)集1^的存儲形式與1-候選項(xiàng)集&的存儲形式一致。5. 根據(jù)權(quán)利要求3所述的面向大規(guī)模數(shù)據(jù)的關(guān)聯(lián)規(guī)則樹挖掘方法,其特征在于:所述步 驟S5具體執(zhí)行如下: 計(jì)算k+Ι-候選項(xiàng)集Ck+i中每一項(xiàng)的支持度,然后從k+Ι-候選項(xiàng)集中篩選出支持度高于 最小支持度MINSUP的項(xiàng)集,構(gòu)造 k+Ι-頻繁項(xiàng)集Lk+1。6. 根據(jù)權(quán)利要求5所述的面向大規(guī)模數(shù)據(jù)的關(guān)聯(lián)規(guī)則樹挖掘方法,其特征在于:所述k+ 1-候選項(xiàng)集Ck+1的存儲形式如下: {屬性ai:值VI,屬性a2:值V2,…,屬性an:值Vm}。
【文檔編號】G06F17/30GK105912660SQ201610221837
【公開日】2016年8月31日
【申請日】2016年4月11日
【發(fā)明人】王昌棟, 賴劍煌, 李宏釗
【申請人】中山大學(xué)