李澤龍
貴州師范大學(xué) 國際教育學(xué)院,貴州 貴陽 550000
隨著信息技術(shù)的快速傳播,大多數(shù)數(shù)據(jù)都是數(shù)字化的,對(duì)于數(shù)據(jù)的處理和有價(jià)值信息的挖掘成為了一個(gè)值得探索的技術(shù),數(shù)據(jù)挖掘技術(shù)應(yīng)運(yùn)而生。對(duì)具有價(jià)值的數(shù)據(jù)信息的分析與識(shí)別,都是通過對(duì)大量、動(dòng)態(tài)且能夠持續(xù)的數(shù)據(jù)運(yùn)用新的系統(tǒng)、工具和模型進(jìn)行充分的挖掘和分析得到的[1]。在進(jìn)入大數(shù)據(jù)時(shí)代后,大量數(shù)據(jù)的涌現(xiàn)使得如何處理大規(guī)模數(shù)據(jù)的問題仍然存在。大數(shù)據(jù)意味著數(shù)據(jù)無法被大多數(shù)當(dāng)前的信息系統(tǒng)或方法處理和處理,因?yàn)榇髷?shù)據(jù)時(shí)代的數(shù)據(jù)不僅會(huì)變得太大而無法加載到一臺(tái)機(jī)器中,還意味著大多數(shù)傳統(tǒng)的數(shù)據(jù)挖掘方法或?yàn)榧惺綌?shù)據(jù)分析過程而開發(fā)的數(shù)據(jù)分析可能無法直接應(yīng)用于大數(shù)據(jù)。
信息技術(shù)的進(jìn)步促進(jìn)了數(shù)據(jù)的大容量、高速度和連續(xù)存儲(chǔ)數(shù)據(jù)的能力,這導(dǎo)致了幾個(gè)計(jì)算方面的挑戰(zhàn)。由于大數(shù)據(jù)在體積、速度、多樣性、可變性、準(zhǔn)確性、波動(dòng)性以及最近產(chǎn)生的價(jià)值等方面的特性,大數(shù)據(jù)計(jì)算是未來計(jì)算的新趨勢(shì)。大量的原始數(shù)據(jù)圍繞著我們,這些數(shù)據(jù)無法由人類或手動(dòng)應(yīng)用程序直接處理。互聯(lián)網(wǎng)、工程和科學(xué)應(yīng)用和網(wǎng)絡(luò)、商業(yè)服務(wù)等技術(shù),由于開發(fā)了強(qiáng)大的存儲(chǔ)和連接工具,數(shù)據(jù)呈指數(shù)級(jí)增長(zhǎng)。面對(duì)這種海量數(shù)據(jù)的增長(zhǎng),有價(jià)值的信息不容易獲得也無法自動(dòng)提取。數(shù)據(jù)科學(xué)和數(shù)據(jù)挖掘在當(dāng)前信息時(shí)代變得越來越流行。
如今,我們管理處理的當(dāng)前數(shù)據(jù)量已經(jīng)超過了傳統(tǒng)系統(tǒng)的處理能力,這也適用于數(shù)據(jù)挖掘。新技術(shù)和服務(wù)(如云計(jì)算)的出現(xiàn)以及硬件價(jià)格的降低正在導(dǎo)致互聯(lián)網(wǎng)上的信息率不斷提高。大數(shù)據(jù)已成為信息和企業(yè)信息科學(xué)、商業(yè)活動(dòng)、政策、公共管理以及決策者的重要研究領(lǐng)域。它還帶來了新的研究范式和未來專注于大數(shù)據(jù)的業(yè)務(wù)。信息技術(shù)的進(jìn)步促進(jìn)了大量、高速度的數(shù)據(jù),以及連續(xù)存儲(chǔ)數(shù)據(jù)的能力,從而帶來了一些計(jì)算挑戰(zhàn)。
數(shù)據(jù)技術(shù)誕生初期被稱為數(shù)據(jù)知識(shí)庫中的知識(shí)發(fā)現(xiàn),基于本質(zhì)出發(fā),數(shù)據(jù)挖掘技術(shù)的基礎(chǔ)就是信息技術(shù)中所涵蓋的數(shù)據(jù)庫[2]。數(shù)據(jù)挖掘是從大型數(shù)據(jù)中提取隱藏且可能有用的信息,這是從數(shù)據(jù)中發(fā)現(xiàn)知識(shí)的基本過程。在大數(shù)據(jù)如日中天的時(shí)代,快速、可擴(kuò)展的數(shù)據(jù)優(yōu)化技術(shù)勢(shì)在必行。關(guān)聯(lián)規(guī)則最初是在超市銷售中提出的,業(yè)主希望從交易記錄中找到有用的信息,以幫助決策者制定銷售計(jì)劃,經(jīng)理可以使用這些信息來調(diào)整商店布局,安排交叉銷售等[3]。傳統(tǒng)的關(guān)聯(lián)規(guī)則挖掘算法主要是用于挖掘正關(guān)聯(lián)規(guī)則。正關(guān)聯(lián)規(guī)則挖掘查找彼此正相關(guān)的項(xiàng)目,即如果一個(gè)項(xiàng)目上升,相關(guān)項(xiàng)目也會(huì)上升。雖然正關(guān)聯(lián)規(guī)則挖掘的經(jīng)典應(yīng)用是市場(chǎng)籃子分析,但正規(guī)則挖掘的應(yīng)用已經(jīng)擴(kuò)展到廣泛的領(lǐng)域,如生物數(shù)據(jù)集、網(wǎng)絡(luò)日志數(shù)據(jù)、欺詐檢測(cè)、人口普查數(shù)據(jù)等。負(fù)關(guān)聯(lián)規(guī)則可以定義為負(fù)相關(guān)的項(xiàng)目,即,如果一個(gè)項(xiàng)目上升,另一個(gè)項(xiàng)目下降。負(fù)關(guān)聯(lián)規(guī)則挖掘也有許多應(yīng)用,包括建立有效的決策支持系統(tǒng),在犯罪數(shù)據(jù)分析,在醫(yī)療保健領(lǐng)域等。
關(guān)聯(lián)規(guī)則挖掘(ARM)是一種發(fā)現(xiàn)集中數(shù)據(jù)之間的關(guān)聯(lián)的數(shù)據(jù)挖掘技術(shù)。為了消除那些無用的關(guān)聯(lián)規(guī)則,關(guān)聯(lián)規(guī)則挖掘分為兩個(gè)步驟:(1)生成所有的頻繁項(xiàng)集;(2)由頻繁項(xiàng)集產(chǎn)生關(guān)聯(lián)規(guī)則。在這兩步中,第二步是在第一步獲得的頻繁項(xiàng)集基礎(chǔ)上產(chǎn)生關(guān)聯(lián)規(guī)則,挖掘性能取決于第一步[4]。頻繁項(xiàng)集挖掘(FIM),又稱頻繁模式挖掘,它嘗試從給定的數(shù)據(jù)庫或是數(shù)據(jù)集中去挖掘一些有趣的模式,例如關(guān)聯(lián)規(guī)則、相關(guān)性等[5]。特別是,關(guān)聯(lián)規(guī)則描述了經(jīng)常一起購買的物品,這在零售業(yè)和電子商務(wù)中很有價(jià)值。因此FIM被廣泛應(yīng)用于客戶推薦系統(tǒng)中。此外,關(guān)聯(lián)在網(wǎng)絡(luò)搜索或日志分析中具有重要的價(jià)值,使FIM成為這些領(lǐng)域的重要方法。三個(gè)著名的FIM基本算法是Apriori,F(xiàn)P-Growth和Eclat。為了加快頻繁項(xiàng)集的生成,研究人員對(duì)這些算法進(jìn)行了許多改進(jìn)。由于這些算法具有序貫計(jì)算的特性,在應(yīng)用于大數(shù)據(jù)集的處理上還存在問題。
Apriori算法用來數(shù)據(jù)中的共同模式,標(biāo)識(shí)的頻繁模式用于生成關(guān)聯(lián)規(guī)則。首先,通過掃描原始數(shù)據(jù)集,計(jì)算每個(gè)候選數(shù)據(jù)項(xiàng)集發(fā)生的次數(shù),然后基于預(yù)先給定的最小支持閾值生成頻繁1項(xiàng)集的集合,該集合記錄為L(zhǎng)1;然后,基于L1和數(shù)據(jù)集中的數(shù)據(jù),產(chǎn)生頻繁2項(xiàng)集L2;用同樣的方法,直到生成頻繁n項(xiàng)集Ln,并且已經(jīng)不再能生成滿足最小支持閾值的n+1項(xiàng)集為止;;最后根據(jù)頻繁項(xiàng)集和原始項(xiàng)集導(dǎo)出關(guān)聯(lián)規(guī)則[6]。在處理大型數(shù)據(jù)集時(shí),在每次迭代中重復(fù)掃描輸入數(shù)據(jù)集會(huì)成為一項(xiàng)繁瑣的任務(wù)。此外,如果閾值設(shè)置得很低,Apriori將需要高內(nèi)存才能生成許多候選項(xiàng)集。它只使用在前一次傳遞中發(fā)現(xiàn)較大的項(xiàng)集,而不考慮數(shù)據(jù)庫中的事務(wù),從而生成要在一次傳遞中計(jì)算的候選項(xiàng)集。當(dāng)遇到大量的頻繁模式、長(zhǎng)模式或較低的最小支持值時(shí),Apriori在存儲(chǔ)和處理大型候選項(xiàng)集以及掃描它們的工作中有相當(dāng)大的計(jì)算量。這在大數(shù)據(jù)時(shí)代是該算法的一大挑戰(zhàn)。
FP-Growth是一種關(guān)聯(lián)規(guī)則挖掘算法,它從數(shù)據(jù)庫中發(fā)現(xiàn)整個(gè)FP集。首先,獲得所有頻繁的單例項(xiàng)集,并根據(jù)其支持對(duì)遞減順序中的頻繁項(xiàng)目進(jìn)行排序。然后使用頻繁的單例項(xiàng)目集構(gòu)建FP-Tree,在FP-Tree上執(zhí)行挖掘,并創(chuàng)建子數(shù)據(jù)庫,此過程以迭代方式執(zhí)行。因此,從輸入數(shù)據(jù)集中頻繁挖掘項(xiàng)集的任務(wù)將轉(zhuǎn)變?yōu)橥诰騀P-Tree,從而維護(hù)項(xiàng)目集的關(guān)聯(lián)信息。前綴樹用于將數(shù)據(jù)庫存儲(chǔ)在FP-Tree緊湊模型中。FPGrowth算法使用分而治之技術(shù),該技術(shù)可最大程度地減小FP樹的大小。它將較長(zhǎng)的FP拆分為較小的模式,并將常用項(xiàng)的后綴鏈接在一起。因此,搜索頻繁模式所需的時(shí)間最小化。該算法使用模式增長(zhǎng)方法,降低了生成和測(cè)試候選項(xiàng)所需的成本。然而,像并行算法一樣FP-growth的一個(gè)主要缺點(diǎn)在于構(gòu)建內(nèi)存中的FP-Tree來適應(yīng)大規(guī)模的數(shù)據(jù)庫是不可行的。
Eclat算法不是以迭代方式訪問輸入數(shù)據(jù)集,而是采用垂直數(shù)據(jù)格式來支持通過交叉點(diǎn)的項(xiàng)集。它僅掃描輸入數(shù)據(jù)集一次,并在生成候選項(xiàng)集時(shí)有效地使用apriori屬性。如果為每個(gè)項(xiàng)集設(shè)置的事務(wù)ID太大,則Eclat可能需要大量?jī)?nèi)存和計(jì)算時(shí)間來與長(zhǎng)集相交。一種稱為diffset技術(shù)用于通過僅跟蹤相交集之間的差異來降低長(zhǎng)相交的成本。當(dāng)數(shù)據(jù)集包含許多密集和冗長(zhǎng)的模式時(shí),diffset過程可顯著提高性能。但是,當(dāng)數(shù)據(jù)較小時(shí),對(duì)內(nèi)存的需求仍然存在,并且在交集之后查找結(jié)果集也具有挑戰(zhàn)性。
Hadoop是一個(gè)大規(guī)模的分布式框架,可以安裝在商用Linux集群上,用于并行處理大數(shù)據(jù),允許大規(guī)模的分布式數(shù)據(jù)分析。除了可能的更改以滿足每個(gè)節(jié)點(diǎn)的最低推薦RAM,磁盤空間等要求之外,不需要任何硬件修改。Hadoop有一個(gè)主/從架構(gòu)。每個(gè)集群上有一個(gè)主節(jié)點(diǎn)和多個(gè)從節(jié)點(diǎn)。從節(jié)點(diǎn)通常被稱為DataNodes,主節(jié)點(diǎn)被稱為NameNode。NameNode分配塊ID,DataNode存儲(chǔ)實(shí)際文件。Hadoop支持使用計(jì)算機(jī)集群對(duì)數(shù)據(jù)集進(jìn)行收集、存儲(chǔ)、檢索和管理。Hadoop是用于并行處理的高性能密集型、可擴(kuò)展且靈活的開發(fā)框架。Hadoop框架通過檢測(cè)和處理應(yīng)用層本身的故障來提供可靠的服務(wù)可用性。Hadoop是一個(gè)基于無共享體系結(jié)構(gòu)的容錯(cuò)系統(tǒng)。它將計(jì)算移動(dòng)到執(zhí)行期間具有數(shù)據(jù)的節(jié)點(diǎn),而不是將數(shù)據(jù)移動(dòng)到節(jié)點(diǎn)。數(shù)據(jù)存儲(chǔ)和計(jì)算由Hadoop的兩個(gè)核心組件處理,分別為MapReduce和Hadoop分布式文件系統(tǒng)(HDFS)。
Hadoop的分布式計(jì)算環(huán)境使用MapReduce編程范式來支持大量數(shù)據(jù)的并行處理。MapReduce是一個(gè)容錯(cuò)、簡(jiǎn)單、可擴(kuò)展的數(shù)據(jù)處理框架,允許用戶處理這些海量的數(shù)據(jù),它是一個(gè)高效的大規(guī)模數(shù)據(jù)處理框架。MapReduce有兩個(gè)主要組件:Mapper和Reducer。映射器采用輸入鍵值對(duì)(k1,v1)并計(jì)算中間鍵值對(duì)(k2,v2)中間鍵值對(duì)在映射器和化簡(jiǎn)器之間隨機(jī)排列和交換。Reduce函數(shù)采用中間鍵值對(duì)并產(chǎn)生最后輸出(k3,v3)。有一個(gè)可選的合路器功能,可以在映射器和化簡(jiǎn)器功能之間使用。合路器主要用于降低將中間輸出從映射器傳輸?shù)交?jiǎn)器的通信成本。
Hadoop采用MapReduce執(zhí)行引擎,工作流程分六步進(jìn)行:①用戶將作業(yè)提交到隊(duì)列,集群按順序運(yùn)行它們;②主節(jié)點(diǎn)將Map任務(wù)和減少任務(wù)分發(fā)給不同的工作線程;③映射任務(wù)讀取數(shù)據(jù)拆分,并對(duì)讀入的數(shù)據(jù)運(yùn)行映射函數(shù);④映射任務(wù)將中間結(jié)果寫入本地磁盤;⑤Reduce Tasks遠(yuǎn)程讀取中間結(jié)果,并對(duì)讀入的中間結(jié)果運(yùn)行Reduce函數(shù);⑥這些減少任務(wù)將最終結(jié)果寫入輸出文件。映射輸出是一系列以鍵值對(duì)形式存儲(chǔ)在該節(jié)點(diǎn)上的記錄。在Map階段中的所有數(shù)據(jù)都傳輸?shù)较鄳?yīng)的計(jì)算機(jī)之前,將阻止第二個(gè)Reduce階段進(jìn)行。Reduce階段生成另一組鍵值對(duì),作為最終輸出。這是一個(gè)簡(jiǎn)單的編程模型,僅限于使用鍵值對(duì),但這個(gè)框架將容納數(shù)量驚人的任務(wù)和算法。此外,雖然Hadoop目前主要用于非常大的數(shù)據(jù)集的批量分析,但沒有什么可以排除使用Hadoop進(jìn)行計(jì)算密集型分析。
HDFS是一個(gè)分布式文件系統(tǒng),用于在商用的架式硬件上運(yùn)行。HDFS的主要目標(biāo)是在大型集群中使用常見的商用服務(wù)器,其中每個(gè)服務(wù)器都有一組磁盤驅(qū)動(dòng)器。HDFS是Hadoop對(duì)分布式文件系統(tǒng)的實(shí)現(xiàn)。它旨在保存大量數(shù)據(jù),并為分布在網(wǎng)絡(luò)上的許多客戶端提供對(duì)此數(shù)據(jù)的訪問。HDFS的文件系統(tǒng)將文件劃分為固定的塊大小,同時(shí)塊的大小可以按照需求改變。HDFS由多個(gè)用于存儲(chǔ)數(shù)據(jù)的DataNode和一個(gè)名為NameNode的主節(jié)點(diǎn)組成,用于監(jiān)控DataNodes并維護(hù)所有元數(shù)據(jù)。HDFS作為提供服務(wù)的存儲(chǔ)系統(tǒng),可以分為客戶端和服務(wù)器。因此,HDFS通常分為三個(gè)節(jié)點(diǎn):Client、NameNode和DataNode。每個(gè)節(jié)點(diǎn)都可以與其他節(jié)點(diǎn)進(jìn)行交互,有助于實(shí)現(xiàn)分布式文件系統(tǒng)并支持集群之間的可擴(kuò)展性??蛻舳擞?jì)算機(jī)的作用是通過與 NameNode上的可配置TCP端口建立連接,將數(shù)據(jù)加載到群集中。NameNode執(zhí)行文件系統(tǒng)命名空間操作,也確定塊到DataNodes的映射。DataNodes在NameNode的管理下執(zhí)行對(duì)象創(chuàng)建、刪除和復(fù)制。
第一個(gè)MapReduce任務(wù)是確定頻繁的1項(xiàng)集。第一個(gè)MapReduce作業(yè)的輸入是事務(wù)性數(shù)據(jù)集。當(dāng)數(shù)據(jù)被讀入HDFS時(shí),數(shù)據(jù)被分成塊,分布在多個(gè)映射器上。映射器每次讀取一個(gè)事務(wù),輸出一個(gè)鍵值對(duì)。然后,鍵值對(duì)被傳遞到reduce階段。Reducer將獲取這些鍵值對(duì),并將各自鍵的值相加。Reducer將輸出(item, total_count)。Total_count與min_supp進(jìn)行比較,并且那些等于或高于min_supp閾值的條目被保留為頻繁的1項(xiàng)集。然后將頻繁的1項(xiàng)集及其各自的支持值寫入分布式緩存。
第二個(gè)MapReduce任務(wù)是生成頻繁的2項(xiàng)集。第二個(gè)MapReduce作業(yè)的輸入是來自第一個(gè)MapReduce作業(yè)和事務(wù)數(shù)據(jù)庫的頻繁的1項(xiàng)集。頻繁的1項(xiàng)集從分布式緩存中讀入。與第一個(gè)MapReduce作業(yè)并行的是,在map階段生成2項(xiàng)鍵值對(duì)。然后,2項(xiàng)鍵值對(duì)被傳遞到第二個(gè)MapReduce作業(yè)的reduce階段。同樣,與第一個(gè)MapReduce作業(yè)并行,減速機(jī)然后獲取這些對(duì),并匯總各自鍵的值。Reducer將輸出(item,total_count)。然后將Total_count與min_supp進(jìn)行比較,那些等于或高于min_supp閾值的將被保留為頻繁的2項(xiàng)集。然后將頻繁的2項(xiàng)集及其各自的支持值寫入分布式緩存。需要多少項(xiàng)集,就會(huì)有多少類似的MapReduce任務(wù)。
第三個(gè)MapReduce任務(wù)是一個(gè)僅映射的操作。MapReduce作業(yè)2的輸出(經(jīng)常是2-itemset)從分布式緩存讀入MapReduce作業(yè)3。在MapReduce作業(yè)3中,通過計(jì)算頻繁2項(xiàng)集的置信度和提升度來確定正關(guān)聯(lián)規(guī)則和負(fù)關(guān)聯(lián)規(guī)則。如果(A B)的置信度大于最小置信度閾值,且(A B)的上升幅度大于1,則為正關(guān)聯(lián)規(guī)則。如果(A and not B)或(not A and B)或(not A and B)的置信度大于最小置信度閾值,且同一規(guī)則的提升度也大于1,則為負(fù)關(guān)聯(lián)規(guī)則。
Hadoop提供了可擴(kuò)展性和容錯(cuò)能力。Hadoop的分布式文件系統(tǒng)的大小取決于集群的大小,HDFS確保快速和可擴(kuò)展地訪問數(shù)據(jù)。HDFS以塊的形式分解大數(shù)據(jù),并以復(fù)制的方式將它們存儲(chǔ)在集群的不同節(jié)點(diǎn)上。應(yīng)用程序作為MapReduce作業(yè)提交,該作業(yè)被分為多個(gè)獨(dú)立的任務(wù),并在集群中的不同數(shù)據(jù)塊上同時(shí)執(zhí)行。通過將數(shù)據(jù)劃分為不同的任務(wù)來實(shí)現(xiàn)的,這些任務(wù)充當(dāng)映射任務(wù)和化簡(jiǎn)器進(jìn)程的輸入,結(jié)果是從映射器接收的數(shù)據(jù)。較大的數(shù)據(jù)基本上分布在節(jié)點(diǎn)中。如果網(wǎng)絡(luò)中的任何節(jié)點(diǎn)發(fā)生故障,系統(tǒng)仍可正常運(yùn)行。這降低了災(zāi)難性系統(tǒng)故障的風(fēng)險(xiǎn)。
Hadoop技術(shù)可以提高算法的效率和執(zhí)行的準(zhǔn)確性。分布式文件計(jì)算形成由多個(gè)計(jì)算機(jī)節(jié)點(diǎn)組成的大型集群。節(jié)點(diǎn)由JobTracker和TaskTracker組成。JobTracker通過計(jì)劃和監(jiān)視任務(wù)來執(zhí)行作業(yè)。TaskTracker為復(fù)制的輸入數(shù)據(jù)執(zhí)行任務(wù)。此外,在任務(wù)執(zhí)行失敗后,JobTracker將重新調(diào)度到另一個(gè)TaskTracker。由于TaskTracker已復(fù)制數(shù)據(jù),因此執(zhí)行任務(wù)的結(jié)果會(huì)產(chǎn)生錯(cuò)誤。如果在某個(gè)TaskTracker執(zhí)行任務(wù)時(shí)發(fā)生錯(cuò)誤,則會(huì)將其報(bào)告給JobTracker。在這種情況下,JobTracker會(huì)命令另一個(gè)TaskTracker從發(fā)生錯(cuò)誤的部件執(zhí)行任務(wù)。由于它們都使用相同的數(shù)據(jù)重復(fù)任務(wù),因此調(diào)度結(jié)果的誤差很小,并且準(zhǔn)確性保持高且一致。
由于信息技術(shù)革命帶來的挑戰(zhàn)和機(jī)遇,大數(shù)據(jù)分析已經(jīng)成為競(jìng)爭(zhēng)和創(chuàng)新的新前沿。抓住大數(shù)據(jù)分析機(jī)會(huì)和數(shù)據(jù)挖掘技術(shù)可以獲得實(shí)時(shí)穩(wěn)健決策的洞察,關(guān)聯(lián)規(guī)則挖掘用于發(fā)現(xiàn)項(xiàng)目或項(xiàng)目集之間的關(guān)聯(lián)。本文通過分析關(guān)聯(lián)規(guī)則挖掘基本算法存在的問題,提出了Hadoop技術(shù)在關(guān)聯(lián)規(guī)則挖掘中的應(yīng)用策略,Hadoop分布式批處理系統(tǒng)是一個(gè)基于無共享體系結(jié)構(gòu)的容錯(cuò)系統(tǒng),數(shù)據(jù)存儲(chǔ)和計(jì)算由分別由分布式文件系統(tǒng)和MapReduce兩個(gè)核心組件進(jìn)行處理,在它將計(jì)算移動(dòng)到執(zhí)行期間具有數(shù)據(jù)的節(jié)點(diǎn),而不是將數(shù)據(jù)移動(dòng)到節(jié)點(diǎn)。Hadoop技術(shù)在關(guān)聯(lián)規(guī)則挖掘中的應(yīng)用可以提高相關(guān)算法的效率和執(zhí)行的準(zhǔn)確性,具有良好的可擴(kuò)展性和容錯(cuò)能力。