鄧玲玲,婁淵勝,葉楓
?
FP-grow th算法改進與分布式Spark研究
鄧玲玲,婁淵勝,葉楓
摘 要:頻繁項集的挖掘一直是數據挖掘領域重要的研究方向之一。FP-grow th算法作為無剪枝算法的代表算法被廣泛應用于事務數據集的挖掘中。但是FP-grow th算法對計算和數據集的規(guī)模是敏感的,一方面構建FP-tree過程中查找操作作為主要耗時操作時間復雜度較高,另一方面在數據集的橫向或縱向維度較大時將使挖掘效率降低甚至失敗。解決以上問題的高效而廣泛使用的策略是降低搜索時間復雜度和應用分布式計算。提出了一種基于Spark框架和改進FP-grow th算法的分布式DFP算法,試驗結果表明,相比于基于MapReduce框架的PFP算法、基于Spark框架和原始FP-grow th算法實現的PFP_SPK算法,DFP算法更加高效,集群和數據伸縮性更好。
關鍵詞:頻繁項集;FP-grow th;Spark;效率;
作者介紹:鄧玲玲(1990-),女,南通,河海大學,計算機與信息學院,碩士研究生,研究方向:云計算、數據挖掘,南京,211100婁淵勝(1968-),男,延津,河海大學,計算機與信息學院,副教授,博士,研究方向:分布式應用集成、軟件復用及軟件體系結構,南京,211100 葉 楓(1980-),男,山東,南京航空航天大學,計算機科學與技術學院,博士研究生,河海大學,計算機與信息學院,講師,研究方向:數據挖掘、機器學習,南京,211166
關聯關系是一種反應事物間的關聯或者依賴的知識,關聯規(guī)則的挖掘[1]試圖在數據集中尋找隱含的或者令人感興趣的關聯關系,是數據挖掘領域重要的研究方向之一。在諸多關聯規(guī)則算法中,FP-grow th算法[2]是一種無剪枝算法,采用分而治之的思想將構造的FP-tree分解為若干條件模式子樹,每個條件子樹都對應著一個頻繁項集,通過遞歸地挖掘這些條件子樹從而得到事務數據庫的頻繁項集。當前,文獻[4-8]已經對FP-grow th算法進行了很多的研究,但是該算法依然存在如下導致效率低下甚至挖掘失敗缺陷:第一,當事務的橫向或縱向維度很大時,由于構建的FP-tree過大無法放入內存而導致頻繁項集挖掘的失??;第二,在對FP-tree的遞歸挖掘過程中,頻繁地構建條件模式基使得空間復雜度過高造成挖掘失?。坏谌?、掃描項頭表和FP-tree節(jié)點的時間復雜度太高。所以需要一種較為合理的方案優(yōu)化或者解決以上問題。Spark分布式計算框架能很好地適用于數據挖掘與機器學習。因此,本文提出了一種分布式Spark改進算法DFP,可大幅地提高頻繁項集的挖掘效率。
不少學者從各個角度對算法提出了優(yōu)化或改進。如文獻[5]中都提到通過對原始數據庫的分解達到對大型數據庫挖掘的支持目的,但是這種做法無法實現并行化,隨著數據量的增加,其處理的時間也在增加。文獻[7-8]通過掃描一次事務數據庫構建出事務庫的模式矩陣,然后利用該矩陣進行頻繁項集的挖掘。但是在內存裝載不下這個矩陣的時候,將導致挖掘的失敗。在單機無法承載大型數據庫的挖掘時,并行化FP-grow th算法實現則成了眾多學者研究的內容。例如文獻[4、6、8]等提出了MapReduce環(huán)境下FP-grow th算法的實現途徑。其中文獻[6]的實現基于數據本地化的思想減少了網絡通信量。而其他幾個文獻的核心都是基于PFP算法思想,只是在具體實現上進行了優(yōu)化。
綜上,雖然以上介紹的相關工作從各個角度對算法進行了優(yōu)化或者改進,但是在大數據環(huán)境下,依然不夠理想,對此本文提出了一種Spark環(huán)境下FP-grow th算法的改進算法DFP,通過優(yōu)化項頭表和FP-tree的數據結構降低搜索時間復雜度,將挖掘過程拆為局部頻繁項集的生成和全局頻繁項集剪枝兩個階段來解決海量數據并行分析問題,并基于UCI數據集進行了對比試驗,結果表明,DFP算法在執(zhí)行效率上更加高效。
FP-grow th算法借助FP-tree實現無候選項集的頻繁項集挖掘,算法詳細描述如文獻[2]中,該算法在挖掘過程中每插入一條事務均需要對該事務按照項頭表中項目的順序進行排序,時間復雜度為O(n2),而將每個項目插入到FP-tree中同樣需要將項目與節(jié)點的子節(jié)點進行比較,搜索時間復雜度高。
(2)構建全局候選項集。通過Spark算子collect收集所有節(jié)點的局部頻繁項集,取后并集作為候選項集分發(fā)到各個節(jié)點,統計出候選項集中候選項目集的出現次數,通過與最小支持度m in_sup比較得出最后的全局頻繁項集。
曼香羅駕乘壺天曉的灰色翼龍,像小飛蟲似的從一個暗洞里鉆進去,又從另一個暗洞里鉆出來。飛鼠追兵緊隨其后,在云洞里穿梭。頻繁地閃來躲去,讓大家都有些暈頭轉向,因此誰也沒敢先發(fā)第一槍,以免誤傷同伴。開始還和曼香羅并駕齊驅的宴西園,不一會兒便去向不明,他乘著棕色翼龍,再也沒有出現在云團之外?;蛟S,他又迷路了。
1 事務數據庫D示例
FP-grow th算法中用到的兩種數據結構為Header Table 和FP-tree。結合對FP-tree的挖掘過程,可以總結出Header Table的如下3個用處:
2)構建FP-tree時獲取節(jié)點鏈;
1)掃描事務數據庫D時,作為對事務的剪枝和排序依據;
1993年4月6日,我?guī)е?歲的兒子從北京出發(fā),乘坐東航MU583班機經上海飛往美國洛杉磯。那是架麥道MD11型客機。途中,飛機飛行一直很平穩(wěn),到高度為10100米時,大家覺得似乎已經平安抵達,人人臉色輕松。不料,飛機忽然抖動了一下,我的頭頂被一巨大的平板狀物體猛拍一記,一瞧,是飛機天花板!我飄浮在空中,身不由己,處于嚴重失控失重狀態(tài)。后來才得知,這可能是飛行員起身時,無意中碰到了升降控制按鈕。
3)對FP-tree進行挖掘時,保證挖掘的順序性以及獲取節(jié)點鏈構建條件模式基。
從以上功能可以看出Header Table結構直接影響到FP-grow th算法的性能。本文針對Header Table工作特點,對原始數據結構做出的修改以表1事務數據庫D為示例數據,如圖1所示:
圖1 Header Table數據結構修改示意圖
改進體現在如下方面:
(1)原始數據結構中只有一個數組,其中數組元素是一個二元組:項目名和節(jié)點鏈頭地址。修改后,相應數組變?yōu)榱擞覉DArray標簽處所示的結構,其中二元組的第二個元素變?yōu)榱瞬紶栴愋停?/p>
在時間復雜度上,以掃描一個事務并插入到FP-tree中為例,假設一個事務含有k個元素,則依據左圖對其排序需用次數k· m,而將其插入到FP-tree中,需要檢索m次,共需要比較m· m次,時間復雜度為,而根據右圖的結構,排序時先根據項目名查找HashMap,找出下標值,并將右圖數組中對應元組的布爾變量設置為True,時間復雜度為O( k),然后讀取數組中布爾變量為True的項目名(并重置為False以便掃描下一條事務),將其插入到FP-tree中時間復雜度為O( m)。綜合起來時間復雜度為,時間復雜度比改進前降了一個數量級。
綜合可知,將一條數據庫的事務從提取到插入FP-tree中,時間復雜度由改進前的O( m3)降低到了O( m),所以,改進的數據結構可以提高算法執(zhí)行的效率。為了接下來的描述,本文將改進后的算法命名為IPF算法。
在空間復雜度上,假設單位存儲為1,共有m個項目,其中左圖結構占用的容量為2m,而右圖結構占用容量為5m,相當于改進前的2.5倍容量,但是由于通常m較小,所以改進是可以接受的。
優(yōu)質護理管理模式一種新興起來的全新狐貍服務模式,優(yōu)質護理管理模式的出現與近幾年來人們經濟建設和文明進步息息相關,當然,還有一點非常重要的原因是患者對醫(yī)療衛(wèi)生服務要求的不斷提高也是其中的一項重要因素[1]。為了探究優(yōu)質護理管理模式在臨床護理當中的應用效果,本文對2018年3月到2018年5月期間本院選取的其中112例皮膚科患者實施優(yōu)質護理管理模式,并與傳統常規(guī)護理效果進行簡要的分析和對比。
聚氨酯防水涂料以異氰酸酯與多元醇、多元胺以及其他含活潑氫的化合物進行加工,生成的產物含氨基甲酸酯,因此被稱為聚氨酯。聚氨酯防水涂料是防水涂料中最重要的一類涂料,無論是雙組分還是單組分,都屬于以聚氨酯為成膜物質的反應型防水涂料。
在集群伸縮性的表現性能上,本文進行如下實驗:保持數據集支持度不變,集群節(jié)點數從1到5規(guī)模遞增,其中一個Master節(jié)點,所有節(jié)點均為Salve節(jié)點,同時設定數據集的拷貝數變動范圍為0~5,則對DFP算法的測試結果如圖5所示:
圖2 FP-tree數據結構修改示意圖
由于對子節(jié)點列表進行查詢的時間復雜度為O( m),所以為了使查詢效率增高,本文對每個節(jié)點的子節(jié)點數組進行修改,將其結構改為HashMap結構,如上右圖所示,在這種情況下,查詢的時間復雜度將變?yōu)镺(1),時間復雜度降低了一個數量級。
(2)增加了一個HashMap類型元素,其中Key為右圖所示數組中的項目名,Value是二元組:第一元素為項目名所在元組在數組中的下標,第二個元素為節(jié)點鏈頭指針地址。
在數據量大、數據維度高的情況下,將整個數據庫壓縮到一顆FP-tree中很容易導致內存溢出。所以將IPF算法的運行放在分布式環(huán)境下,對數據分片分別運行IPF算法,最后合并局部頻繁項集再進行一次全局的統計剪枝。這樣不僅提高了數據分析效率,也解決了單機無法或高效處理海量數據的情況。
本文采用“搬運算”的方式對并行化IPF算法——DFP進行實現??梢詫⑶笕☆l繁項集的操作分為如下兩個階段進行:
兩組患者不良反應情況對比,治療過程中,對照組有1例患者出現皮膚瘀點、2例患者出現胃腸道反應、2例出現輕度牙齦出血;觀察組中有1例患者出現皮膚瘀點、2例患者出現胃腸道反應、1例患者出現輕度牙齦出血。兩組患者均出現了不同程度的不良反應,針對患者出現的不良反應并未給予特殊處理,均自行消退。組間不良反應發(fā)生情況對比,差異無統計學意義(P>0.05)。
(1)產生局部頻繁項集。在分布式集群的m個節(jié)點運行IFP算法,求出每個節(jié)點的局部頻繁項集;
針對存在的不足,本文將給出相應的改進方案,并加以實現形成一種新的FP-grow th改進算法:IFP。為了更好地進行描述,事務數據庫D作為描述數據進行算法闡述,如表1所示:
為了使頻度統計工作更加高效,算法再次在每個數據節(jié)點上構建FP-tree,通過對FP-tree的挖掘來統計項集的局部頻度。以表1事務數據庫D所構建的FP-tree為例,假設候選項集集合中有一個候選項集a={c,p},則有效的路徑為標注的粗體部分路徑圖,如圖3所示:
圖3 有效查詢路徑
根據FP-tree的特點可知,除根節(jié)點以外,每個節(jié)點有且僅有一個父節(jié)點,所以算法采用自底向上進行搜索,確定相對p于FP-tree中出現頻度最小的項目p ,根據Header Table和定位FP-tree中的所有項目名為的節(jié)點,從節(jié)點向上搜索。具體的匹配過程轉換為最長公共子序列問題,所以一個候選項集與一條路徑匹配的時間復雜度為,其中|α |為候選項集長度,|path |為路徑所有節(jié)點個數,時間復雜度為線性的。
下面將以偽代碼的形式給出DFP算法的實現過程,如下表2所示:
表2 Spark環(huán)境下DFP算法執(zhí)行過程
為了驗證本文實現的分布式算法SPFP的有效性,本文使用5臺計算機(Intel Core i5,CPU 2.4GHz,內存為2GB)組成的分布式Spark集群。其中Spark集群的環(huán)境參數為:操作系統Ubuntu14.04,Hadoop版本Hadoop2.4.1,Spark版本為Spark1.2.0,算法的實現語言為Scala 2.10.4,JDK版本為JDK 7u55,其中Spark集群采取的主從式架構,一臺計算機作為Master節(jié)點,其他4臺計算機作為Salve節(jié)點。其中實驗所使用的測試數據集為Accidents[3]數據集,數據來自比利時國家統計局獲得的佛蘭德地區(qū)1991年至2000年交通意外統計數據,數據集共340184條數據實例,含有572種不同的屬性值,平均每條事務約含45個屬性值。
本文采用了多次取平均的方式來消除單次試驗帶來誤差。對以上3種數據集分別應用PFP_HDP、PFP_SPK和DFP算法,其中PFP_HDP算法是一種基于MapReduce架構的并行化FP-grow th算法,PFP_SPK算法是一種基于原始FP-grow th算法實現的基于Spark的并行化算法。則實驗結果如圖4所示:
入摩入富比例提升,國際資金加速涌入A股市場。根據MSCI的披露,2019年底將A股納入份額由目前的5%提升到20%,屆時A股占整個MSCI新興市場指數將由目前的0.7%提升至3%。同時今年9月富時宣布將分三個階段把A股1249只股票納入富時全球市場指數,第一階段將從2019年6月開始,到2020年中國A股將占富時新興市場指數的5.6%。隨著中國股市逐步融入國際市場,海外資金將通過北上渠道源源不斷流入A股。高盛預計2019年因為MSCI納入比例提升和納入富時羅素導致的北上資金將達到650億美元,相對于2017、2018年的300億美元和400億美元有較大增長。
圖4 Accidents:m in_sup=20%
分析可知,3種算法的執(zhí)行時間與數據集的拷貝數增長呈正相關上升關系,其中PFP_HDP算法的上升幅度最為明顯,由于PFP_HDP算法在運行過程中,在集群中存在大量的數據傳輸,同時由于MapReduce模型的高延遲、迭代特性支持不足等短板,導致算法的執(zhí)行時間以幾乎線性的方式增長,相比較,其他兩種算法幾乎保持水平方式增長。而得益于DFP算法改進的數據結構,DFP算法效率高出PFP_HDP算法20~50倍,比PFP_SPK算法也高出幾倍。
全區(qū)三級地共24158.77公頃,占全區(qū)耕地面積的29.09%。其中,以孫崗鎮(zhèn)最多,其面積為4279.67公頃,占三級地17.71%,東河口鎮(zhèn)和張店鎮(zhèn)次之且相差不大,清水河街道沒有分布三級耕地。三級地主要分布在海拔較高且地形起伏相對較大,路網不夠發(fā)達,土壤中微量元素含量較缺,農田基礎建設一般滿足或者很難滿足的地區(qū)。這些農用地受主次干道的影響較小,受支路的影響較大。這些耕地遠離人口聚集區(qū),農產品與生產資料的交易受到一定限制。
同樣地,針對FP-tree構建原理,以表3-1事務數據庫D為示例數據,本文對FP-tree結構修改如圖2所示:
圖5 Accidents:min_sup=20%
從圖5的結果中可以看出,運行時間隨節(jié)點的增多而有下降趨勢,在節(jié)點少時下降幅度很大,隨著節(jié)點變多,其幾乎以線性方式遞減,并有趨于水平的趨勢。
本文通過對設備點檢的重要性進行簡單的闡述,進而分別從設備點檢分類管理、設備點檢分工管理、設備點檢記錄管理、設備點檢檢查管理4個方面對設備點檢在大型養(yǎng)路機械管理中的應用進行詳細的研討與探究,并分別從設備保養(yǎng)與維護、設備點檢人員的能力培訓、制定全面的設備點檢流程3方面對設備點檢在大型養(yǎng)路機械管理中的應用要點進行詳細的研究與思考。經過本文研究表明,在該設備點檢的應用領域依舊存在著較多問題。因此,在未來的研究生活中,應進一步對設備點檢在大型養(yǎng)路機械中的應用進行詳細的研究與分析,希望本文能為設備點檢在大型養(yǎng)路機械管理中的應用研究提供幾點借鑒,并為大型養(yǎng)路機械管理的健全提供積極的推動作用。
綜合可得,本文的實現算法DFP比其他算法的執(zhí)行效率更高的同時,還具有良好的數據伸縮性和集群伸縮性。
本文分析了傳統關聯規(guī)則挖掘算法FP-grow th的不足,并針對算法的不足分別從項頭表和FP-tree數據結構的實現上、優(yōu)化單路徑問題等角度提出了優(yōu)化?;趦?yōu)化的FP-grow th算法,提出了Spark環(huán)境下的分布式實現算法DFP算法。最后分別從數據伸縮性和集群伸縮性兩個角度對算法進行了對比試驗,結果證明DFP算法是一種高效的頻繁項集生成算法。
基于本文工作,下一步將考慮如何將本文實現算法應用在實際問題的分析中,嘗試對現實的股票數據或者購物籃數據進行分析,并從中找出有意義的規(guī)則或關系。參考文獻
[1] Fayyad U.,. Piatetsky-Shapiro G, and Smyth P., “From data mining to know ledge discovery in databases”[J], AI magazine, vol. 17, no. 3, p. 37, 1996.
[2] Jiawei Han, Jian Pei, Yiwen Yin. M ining frequent patterns w ithout candidate generation. Proceedings of the 2000 ACM SIGMOD International conference on Management of Data SIGMOD'00. Dallas[J], Texas, United States: ACM Press, 200, 29(2): 1-12P.
[3] Frequent Itemset M ining Dataset Repository[EB/OL].[20 -12-10-21]. http://fim i.ua.ac.be/data/, 2012.
因此,加強綜合研究,對中國共產黨生態(tài)文明思想的形成背景、發(fā)展歷程、主要內容、經驗措施等問題進行系統而深入的分析和探討,將有可能成為學術界研究此問題的未來趨勢。
[4] 楊勇,王偉. 一種基于MapReduce的并行FP-grow th算法[J]. 重慶郵電大學學報(自然科學版),2013,25(05): 651-657.
[5] 朱濤. 基于FP-grow th關聯規(guī)則挖掘算法的研究與應用[D].南昌大學,2010.
[6] 章志剛,吉根林. 一種基于FP-Grow th的頻繁項目集并行挖掘算法[J]. 計算機工程與應用,2014,02:103-106.
研究組并發(fā)癥總發(fā)生率為6.82%,低于常規(guī)組15.91%,差異具有統計學意義(P<0.05)。詳情見表2。
[7] 鄧豐義,劉震宇. 基于模式矩陣的FP-grow th改進算法[J].廈門大學學報(自然科學版),2005,05:629-633.
由式(4)第1式、式(11)、式(12)、以及圖1的△OA1B1、△OA2B2知,當φ為φ1、φ2時,φ為0、180,δ為δmax、δmin,α為α1、α2,注意到式(13)即知φ1、φ2是αmax可能出現位置。
[8] 陳興蜀,張帥,童浩,崔曉靖. 基于布爾矩陣和MapReduce 的FP-Grow th算法[J]. 華南理工大學學報(自然科學版),2014,01:135-141.
Improvement and Research of FP-grow th Algorithm Based on Distributed Spark
Deng LingLing1, Lou Yuansheng1, Ye Feng1,2
(1. College of Computer and Information, Hohai University, Nanjing 211100, China;
2 College of Computer Science and Technology, Nanjing University of Aeronautics and Astronautics, Nanjing 210016, China)
Abstract:FP-grow th algorithm as the representatives of non-pruning algorithms is w idely used in mining transaction datasets. But it is sensitive to the calculation and the scale of datasets. When building FP-tree, the search operation as the major time-consuming operation has a higher complexity. And when the horizontal or vertical dimension of data set is larger, the mining efficiency w ill be reduced or even failed. To solve the above problems, reducing the complexity of search time and applying distributed computing are the w idely used strategies. This paper presents a distributed DFP algorithm based on Spark framework and improved FP-grow th algorithm. The results of tests show that, compared to the PFP algorithm based on MapReduce, the PFP_SPK algorithm based on Spark and original FP-grow th algorithm, DFP has high efficiency, cluster and flexibility.
Key words:Frequent Item Sets; FP-grow th; Spark; Efficiency
中圖分類號:TP311
文獻標志碼:A
文章編號:1007-757X(2016)05-0009-03
基金項目:國家科技攻關計劃(No. 2013BAB05B00 、No. 2013BAB05B01)
收稿日期:(2016.02.20)