王黎,呂殿基
(北京經(jīng)濟(jì)管理職業(yè)學(xué)院 信息學(xué)院, 北京 100102)
隨著科學(xué)技術(shù)的發(fā)展與不斷進(jìn)步,效率高,成本低的大數(shù)據(jù)局部頻繁項(xiàng)集的挖掘算法愈發(fā)重要。近年來形成了巨大規(guī)模的非結(jié)構(gòu)化數(shù)據(jù)和半結(jié)構(gòu)化數(shù)據(jù),這些數(shù)據(jù)被稱為大數(shù)據(jù),而如何自動(dòng)、充分地利用這些大數(shù)據(jù),順利地解決大數(shù)據(jù)中存在的數(shù)據(jù)龐大、無切入點(diǎn)的問題,成為了目前國內(nèi)外迫切需要解決的一個(gè)難題,而數(shù)據(jù)挖掘技術(shù)也在此時(shí)應(yīng)運(yùn)而生[1]。
頻繁項(xiàng)集挖掘技術(shù)是目前數(shù)據(jù)挖掘技術(shù)的基礎(chǔ),最初國內(nèi)外主要采用的關(guān)聯(lián)規(guī)則分析、序列項(xiàng)集、相關(guān)性分析等數(shù)據(jù)挖掘技術(shù),它們都是以頻繁項(xiàng)集挖掘技術(shù)作為核心基礎(chǔ)的,而近幾年來,隨著大數(shù)據(jù)處理引擎Spark的出現(xiàn),為海量數(shù)據(jù)的高效處理提供了一個(gè)新的解決空間,人們由此擴(kuò)展研究出的Apriori算法與FP-growth算法是當(dāng)前數(shù)據(jù)挖掘技術(shù)的主流,也是目前國內(nèi)外大數(shù)據(jù)挖掘技術(shù)的研究重點(diǎn),其中Apriori算法是一種挖掘關(guān)聯(lián)規(guī)則的頻繁項(xiàng)集算法[2],其核心思想是通過候選集生成和情節(jié)的向下封閉檢測兩個(gè)階段來挖掘頻繁項(xiàng)集,而FP-growth算法則是在Apriori算法基礎(chǔ)上提出的,但是從長遠(yuǎn)角度來看,這兩種算法依然無法滿足處理當(dāng)前大數(shù)據(jù)的需求,因?yàn)樘幚頃r(shí)間過長與內(nèi)存消耗過大這兩點(diǎn)是Apriori算法與FP-growth算法無法從根本上解決的難題,而且數(shù)據(jù)量只會變得越來越多,Apriori算法與FP-growth算法也會變得越來越無法支撐大數(shù)據(jù)挖掘的要求[3]。
本文設(shè)計(jì)了一種基于Spark框架的大數(shù)據(jù)局部頻繁項(xiàng)集挖掘算法,該算法將Spark理念規(guī)則化變?yōu)榭蚣苄问?,Spark框架是一種很好的替代框架,處理大數(shù)據(jù)局部信息時(shí)有著獨(dú)特的優(yōu)勢,本文在Spark框架原有的基礎(chǔ)上增添了結(jié)構(gòu)變換功能,可以讓其隨著本文設(shè)計(jì)算法的改動(dòng)而變化。依次對大數(shù)據(jù)進(jìn)行了局部算法篩選、局部算法分析、局部算法挖掘,從根本上降低了挖掘難度與成本投入。
本文設(shè)計(jì)的基于Spark框架的大數(shù)據(jù)局部頻繁項(xiàng)集挖掘算法,首先通過Spark框架來完成對大數(shù)據(jù)局部頻繁項(xiàng)集的最初篩選,該過程中,通過調(diào)整面積大小、運(yùn)行速度等相關(guān)指令進(jìn)行大數(shù)據(jù)局部頻繁項(xiàng)集中的相關(guān)數(shù)據(jù)挖掘,且Spark框架會根據(jù)本文設(shè)計(jì)的大數(shù)據(jù)局部頻繁項(xiàng)集挖掘算法中的相關(guān)指令而產(chǎn)生相對變化[4]。人為添加的大數(shù)據(jù)局部頻繁項(xiàng)集篩選要求會轉(zhuǎn)化為數(shù)據(jù)組D,而A則為Spark框架中的大數(shù)據(jù)局部頻繁項(xiàng)集,經(jīng)過計(jì)算后得到的S、V、X則分別為Spark框架所需要改動(dòng)的面積、運(yùn)行速度、篩選要求,改動(dòng)后的Spark框架具體結(jié)構(gòu)應(yīng)用圖,如圖1所示。
圖1 Spark框架篩選結(jié)構(gòu)
此時(shí)Spark框架主要以集成網(wǎng)的形式出現(xiàn),在該過程中,Spark框架也主要起著過濾大數(shù)據(jù)局部頻繁項(xiàng)集的作用,其中符合篩選要求的大數(shù)據(jù)頻繁項(xiàng)集會保存于Spark框架所形成的篩選網(wǎng)上,進(jìn)入到下一階段的分析當(dāng)中,而不符合篩選要求的大數(shù)據(jù)頻繁項(xiàng)集則會被Spark框架釋放[5]。被Spark框架釋放的大數(shù)據(jù)頻繁項(xiàng)集主要分為兩種:一種為本質(zhì)上不符合篩選要求,這一類項(xiàng)集會被Spark框架直接交還于大數(shù)據(jù)整體頻繁項(xiàng)集中,不予以干擾[6]。而另一種則是本質(zhì)上符合篩選要求卻因某種原因被破壞導(dǎo)致自身并不完整,針對這一類大數(shù)據(jù)頻繁項(xiàng)集Spark框架會進(jìn)行標(biāo)注記錄并給予檢測反饋,方便這些大數(shù)據(jù)頻繁項(xiàng)集被相關(guān)工作者及時(shí)發(fā)現(xiàn)并處理,減輕大數(shù)據(jù)整體的壓力負(fù)擔(dān)[7]。
通過Spark框架對大數(shù)據(jù)局部頻繁項(xiàng)集篩選結(jié)果進(jìn)行分析。經(jīng)過篩選后的大數(shù)據(jù)局部頻繁項(xiàng)集會在Spark框架的儲存空間得到保存[8]。等到這些大數(shù)據(jù)局部頻繁項(xiàng)集趨于穩(wěn)定后,Spark框架會應(yīng)用本文設(shè)計(jì)的算法來對這些儲存空間中的大數(shù)據(jù)局部頻繁項(xiàng)集進(jìn)行重新排版與分析[9]。通過Spark框架篩選后的整體大數(shù)據(jù)局部頻繁項(xiàng)集,經(jīng)過Spark框架分支載體的啟動(dòng)命令單元,完成為Spark框架的分支載體命令,而作為大數(shù)據(jù)局部頻繁項(xiàng)集類別小組,分別為操作數(shù)據(jù)類頻繁項(xiàng)集、圖像數(shù)據(jù)類頻繁項(xiàng)集、隱藏?cái)?shù)據(jù)類頻繁項(xiàng)集,其中操作數(shù)據(jù)類頻繁項(xiàng)集、圖像數(shù)據(jù)類頻繁項(xiàng)集屬于公開類數(shù)據(jù)頻繁項(xiàng)集,可以直接用于接下來的應(yīng)用。而隱藏?cái)?shù)據(jù)類頻繁項(xiàng)集則為加密型數(shù)據(jù)頻繁項(xiàng)集,需要進(jìn)行破解才可以投入到接下來的應(yīng)用當(dāng)中。
此時(shí),Spark框架的結(jié)構(gòu)會受到分析算法中分支載體的啟動(dòng)命令,在單元與分支載體完成命令單元后,影響由集成網(wǎng)狀變?yōu)榉种ЬW(wǎng)狀的結(jié)構(gòu),既保證了算法分析的正常運(yùn)行,也為算法挖掘打下了基礎(chǔ),應(yīng)用本文基于Spark框架理念所設(shè)計(jì)的局部頻繁項(xiàng)集分析算法對大數(shù)據(jù)局部頻繁項(xiàng)集算法分析的具體歸納圖,如圖2所示。
圖2 大數(shù)據(jù)局部頻繁項(xiàng)集算法分析的流程
在分析出頻繁項(xiàng)集后利用Spark框架挖掘主要目標(biāo)。將基于Spark框架的大數(shù)據(jù)局部頻繁項(xiàng)集篩選結(jié)果和分析結(jié)果與Spark框架結(jié)合運(yùn)用后得到的操作數(shù)據(jù)類頻繁項(xiàng)集、圖像數(shù)據(jù)類頻繁項(xiàng)集、隱藏?cái)?shù)據(jù)類頻繁項(xiàng)集是接下來進(jìn)行挖掘的主要目標(biāo)[10]。
操作數(shù)據(jù)類頻繁項(xiàng)集主要指的是大數(shù)據(jù)中蘊(yùn)含指令信息數(shù)據(jù)或者動(dòng)作信息數(shù)據(jù)的一類頻繁項(xiàng)集,而圖像數(shù)據(jù)類頻繁項(xiàng)集則泛指了大數(shù)據(jù)中蘊(yùn)含圖片或者影像的一類頻繁項(xiàng)集[11-12]?;谏鲜霾襟E,對這兩種公開類數(shù)據(jù)頻繁項(xiàng)集進(jìn)行大數(shù)據(jù)局部頻繁項(xiàng)集挖掘,上述分析得到的隱藏?cái)?shù)據(jù)類頻繁項(xiàng)集屬于加密型數(shù)據(jù)頻繁項(xiàng)集[13],它的誕生是由于在它投入大數(shù)據(jù)局部頻繁項(xiàng)集之前曾被有意進(jìn)行數(shù)據(jù)加密過,在對該類頻繁項(xiàng)集進(jìn)行挖掘之前,需要先對該類頻繁項(xiàng)集進(jìn)行數(shù)據(jù)破解[14]。本文設(shè)計(jì)算法中的加密型數(shù)據(jù)頻繁項(xiàng)集破解算法中的專屬破解單元,可以在不破壞加密型數(shù)據(jù)頻繁項(xiàng)集自身的基礎(chǔ)上破壞掉其特有的數(shù)據(jù)加密,進(jìn)而得到可挖掘的大數(shù)據(jù)局部頻繁項(xiàng)集。
為了準(zhǔn)確評估本文基于Spark框架理念所設(shè)計(jì)的大數(shù)據(jù)局部頻繁項(xiàng)集挖掘算法的挖掘效果,設(shè)置了相應(yīng)的實(shí)驗(yàn)環(huán)境進(jìn)行效果檢測,將本文設(shè)計(jì)算法與傳統(tǒng)的Apriori算法以及FP-growth算法進(jìn)行對比。
對于大數(shù)據(jù)局部頻繁項(xiàng)集的復(fù)雜性與包容性,需要對實(shí)驗(yàn)環(huán)境進(jìn)行數(shù)據(jù)篩選,本文為完善實(shí)驗(yàn)操作并且能夠準(zhǔn)確比較本文設(shè)計(jì)算法與Apriori算法以及FP-growth算法的挖掘效果,按照步驟劃分實(shí)驗(yàn)研究操作如下:
(1) 在實(shí)驗(yàn)環(huán)境中安置大量的大數(shù)據(jù)局部頻繁項(xiàng)集以保證能夠保留其復(fù)雜性以及包容性的特征,增強(qiáng)本實(shí)驗(yàn)比較效果的說服力,應(yīng)用本文基于Spark框架理念所設(shè)計(jì)的局部頻繁項(xiàng)集挖掘算法對大數(shù)據(jù)局部頻繁項(xiàng)集算法篩選過程,如圖3所示。
圖3 大數(shù)據(jù)局部頻繁項(xiàng)集算法篩選
(2) 在對大數(shù)據(jù)局部頻繁項(xiàng)集進(jìn)行算法分析的過程當(dāng)中,Spark框架受本文設(shè)計(jì)算法影響會導(dǎo)致自身結(jié)構(gòu)發(fā)生改變,此時(shí)Spark框架的具體結(jié)構(gòu)圖,如圖4所示。
圖4 Spark框架分析結(jié)構(gòu)
在該過程中,通過本文設(shè)計(jì)算法中的公開類數(shù)據(jù)頻繁項(xiàng)集挖掘算法與Spark框架對公開類數(shù)據(jù)頻繁項(xiàng)集的具體挖掘概念,如圖5所示。
在完成以上操作后,對設(shè)置的大數(shù)據(jù)局部頻繁項(xiàng)集中的操作數(shù)據(jù)類頻繁項(xiàng)集、圖像數(shù)據(jù)類頻繁項(xiàng)集、隱藏?cái)?shù)據(jù)類頻繁項(xiàng)集進(jìn)行特有標(biāo)注,方便最終比較結(jié)果的驗(yàn)證。
(3) 在挖掘的過程中要實(shí)時(shí)記錄各算法對大數(shù)據(jù)局部頻繁項(xiàng)集的挖掘效率與時(shí)間,合理應(yīng)用各算法所存在的優(yōu)勢,綜合評估所有算法的挖掘效果,設(shè)置挖掘信息通道及挖掘效果圖,如圖6所示。
(4) 保證實(shí)驗(yàn)的公平性,在對加密型數(shù)據(jù)頻繁項(xiàng)集進(jìn)行破解與挖掘的過程中,加密型數(shù)據(jù)頻繁項(xiàng)集結(jié)構(gòu)的前后對比圖,如圖7所示。
圖7 加密型數(shù)據(jù)頻繁項(xiàng)集結(jié)構(gòu)的前后對比圖
在此實(shí)驗(yàn)中,為了能夠進(jìn)一步提高實(shí)驗(yàn)整體的對比效果,需要設(shè)置一定的實(shí)驗(yàn)參數(shù),如表1所示。
表1 實(shí)驗(yàn)參數(shù)
根據(jù)上述實(shí)驗(yàn)參數(shù)可以得到本文設(shè)計(jì)算法與傳統(tǒng)的Apriori算法以及FP-growth算法對大數(shù)據(jù)局部頻繁項(xiàng)集挖掘的整體成本投入圖以及挖掘效率對比圖,如圖8所示。
圖8 對大數(shù)據(jù)局部頻繁項(xiàng)集挖掘的整體成本投入
根據(jù)圖8可以看出,在對相同的大數(shù)據(jù)局部頻繁項(xiàng)集進(jìn)行完全挖掘時(shí),傳統(tǒng)的FP-growth算法所需要投入的整體成本最高,傳統(tǒng)的Apriori算法所需要投入的整體成本次之,而本文設(shè)計(jì)算法所需要投入的成本最低,如圖9所示。
圖9 對大數(shù)據(jù)局部頻繁項(xiàng)集挖掘的效率對比圖
根據(jù)圖9即對大數(shù)據(jù)局部頻繁項(xiàng)集挖掘的效率對比圖可以看出,在相同的時(shí)間內(nèi)本文設(shè)計(jì)算法對數(shù)據(jù)局部頻繁項(xiàng)集挖掘的效率遠(yuǎn)遠(yuǎn)高于傳統(tǒng)的Apriori算法以及FP-growth算法。
對上述結(jié)果進(jìn)行歸納與總結(jié)可以發(fā)現(xiàn),在對同樣數(shù)量的大數(shù)據(jù)局部頻繁項(xiàng)集進(jìn)行挖掘的過程中,本文設(shè)計(jì)算法只需要通過算法的不斷改變來對所設(shè)計(jì)的Spark框架進(jìn)行設(shè)置,即可完成對大數(shù)據(jù)局部頻繁項(xiàng)集的整個(gè)挖掘過程,而傳統(tǒng)的Apriori算法以及FP-growth算法在挖掘的過程中不但需要Spark的支持,還需要大量的軟件與硬件設(shè)備進(jìn)行支撐才能完成同樣的工作量,因此所投入的整體成本會遠(yuǎn)遠(yuǎn)高于本文設(shè)計(jì)算法,而且在挖掘的過程中隨著內(nèi)存空間的不斷減少,傳統(tǒng)的Apriori算法以及FP-growth算法的挖掘效率也會隨之變慢,而本文設(shè)計(jì)算法并不會受到內(nèi)存空間的影響,因此本文設(shè)計(jì)的基于Spark框架的大數(shù)據(jù)局部頻繁項(xiàng)集挖掘算法的挖掘效率會遠(yuǎn)遠(yuǎn)高于傳統(tǒng)的Apriori算法以及FP-growth算法。
綜上所述,本文設(shè)計(jì)的基于Spark框架的大數(shù)據(jù)局部頻繁項(xiàng)集挖掘算法能夠更好地完成對大數(shù)據(jù)局部頻繁項(xiàng)集的挖掘,具有合理的操作條件與途徑,也具有著較強(qiáng)的說服力。
本文為解決傳統(tǒng)算法成本高、效率低等問題,提出基于Spark框架理念所設(shè)計(jì)的大數(shù)據(jù)局部頻繁項(xiàng)集挖掘算法,摒棄了傳統(tǒng)算法對軟件與硬件的依賴,通過自身算法的變化,以及Spark框架的合理運(yùn)用更加高效并準(zhǔn)確的完成對大數(shù)據(jù)局部頻繁項(xiàng)集的挖掘,有效降低了挖掘難度與成本投入,為該領(lǐng)域的發(fā)展開辟了一條新的研究路徑,具有十分開闊的研究前景,值得人們進(jìn)行深入地研究。