王永貴,徐山珊,肖成龍
遼寧工程技術大學 軟件學院,遼寧 葫蘆島 125105
社交網絡的發展改變著人們的生活方式,興趣的共同點會導致社交網絡中的個體逐漸發展形成一系列的社團[1]。推薦好友[2]通常轉化為社團發現,用戶的行為習慣或興趣愛好越相似,越可能是同一個社團中的成員[3]。無線城市社團發現是通過智能移動終端連接無線網絡的方式,對用戶的地理位置進行捕捉[4],在MAC 地址接入記錄中挖掘隱藏的關鍵信息。社團發現在諸多方面具備廣闊的發展前景和重要的應用價值[5],但在大數據時代[6]中準確快速地解決社團發現問題仍面臨著巨大的挑戰。
文獻[7-12]針對傳統社團發現算法的缺點,提出了改進方法,卻沒有考慮地理位置信息[13]。文獻[14-16]分析了將社區發現與關聯規則相結合的可行性,并提出了混合算法。文獻[17-19]針對傳統關聯規則算法挖掘效率低的缺點,提出了改進算法。然而,上述大部分算法均是單機執行,已無法處理大規模復雜數據集。
針對上述問題,本文深入研究了社團發現問題,并提出了基于Spark 利用改進關聯規則解決無線城市社團發現問題的SIACD(Spark-based use of improved Apriori to achieve community detection)算法。實驗結果表明,SIACD 算法解決了Apriori 算法需大量迭代計算的問題,改善了團搜索(clique search,CS)算法生成結果冗余的不足,充分發揮Spark并行計算的優勢,避免了MP-T-CS(MapReduce tree clique search)算法多次磁盤I/O操作的缺點,有效提升了計算效率。
文章組織結構如下:第1 章介紹研究背景與意義;第2章介紹基礎知識和Spark大數據平臺;第3章介紹相關算法并分析其不足;第4 章介紹新SIACD算法;第5 章為實驗驗證及結果分析;第6 章總結全文。
社團發現是指發現網絡中社團個體行為之間的關聯關系。用戶之間的互動越頻繁就越可能蘊含著潛在的興趣關聯或者較強的社交關系。
定義1[4](MAC 地址)介質訪問控制地址,又稱為物理地址,用來定義網絡硬件設備的位置。
定義2[4](MAC地址原始數據)用戶使用設備的MAC地址、無線網絡的MAC地址、接入時間、接入地點以及其他相關信息組成的集合。
定義3[4](MAC 地址事務數據)將MAC 地址原始數據中同時同地的數據壓縮后得到的集合。
例如,在同一地點3位用戶進行無線網絡認證行為,100 s以內有效,如表1所示[20]。

Table 1 MAC transaction data表1 MAC事務數據
關聯規則是分析數據源并從中發現事物之間可能存在的關聯或者聯系。Apriori算法是經典的關聯規則算法,已廣泛應用到各個領域。
定義4[21](關聯規則)某事務包含項集X,很可能包含項集Y(X?Y=?),關聯規則:X→Y。
定義5[21](支持度計數)事務包含項集X的個數,表達式:σ(X)=|{ti|X?ti,ti?T}|。
定義6[21](支持度)事務同時包含X和Y的百分比,表達式:s(X→Y)=σ(X?Y)/N。
定義7[21](置信度)事務已包含X時,包含Y的百分比,表達式:c(X→Y)=σ(X?Y)/σ(X)。
定義8[21](頻繁項集)支持度大于等于支持度閾值的項集。
性質1[17]若一個項集是頻繁項集,則它的所有子集也都是頻繁項集。反之也成立。
早期研究者較關注基于Hadoop的算法并行化計算,但Hadoop網絡和磁盤讀寫開銷很大,難以高效地實現大量的迭代計算[22-26]。Spark 是專為處理大數據而設計的快速且通用的計算引擎[27]。Spark不僅能基于內存計算,還能在Hadoop 中并行計算,因此Spark能更好地適用于需大量迭代計算的算法,在實際的數據分析過程中具有重要的意義[28]。
3.1.1 經典CS算法
團搜索(CS)算法主要思想是將數據映射到無向有權圖中,節點代表用戶,邊代表不同用戶在某地同時出現的關系,邊上的權重代表同時出現的次數。通過挖掘由較大權重的邊組成的團,從而發現潛在的社團關系。但CS算法存在生成結果冗余、復雜度高、海量數據溢出等問題。
3.1.2 改進MP-T-CS算法
MAC地址數據預處理主要偽代碼如下所示:
針對CS 算法的缺點,提出了解決無線城市數據中社團發現問題的MP-T-CS算法。該算法利用特殊二叉樹結構存儲數據,將CS 算法的主要思想結合MapReduce模型[4],在Hadoop集群上實現了算法并行化計算,但該算法進行了多次Map和Reduce操作,只有重新從磁盤中加載數據后才能再次處理數據,因此造成了不必要的時間消耗。
3.2.1 核心思想
事務代表社團活動,而事務的項集代表用戶組成的社團數據集合,若不同的用戶同時在某些事務中頻繁出現,那么他們很可能屬于同一個社團。利用Apriori算法尋找頻繁項集的過程就是挖掘不同用戶是某社團成員的過程,即為社團發現。
3.2.2 算法步驟
首先從數據集中生成候選1-項集C1,當C1大于等于支持度閾值時生成頻繁1-項集L1。然后由L1兩兩結合生成C2,對C2進行剪枝并生成L2,不斷迭代,直至最終獲取Lk。算法流程圖如圖1所示。

Fig.1 Community discovery flow chart based on Apriori algorithm圖1 基于Apriori算法的社團發現流程圖
3.2.3 算法分析
Apriori算法需不斷遍歷數據集來計算候選項集的支持度計數,其計算復雜度主要受到項數和事務數的影響。設事務數為m,項數為n,該算法的時間復雜度為O(mn2),空間復雜度為O(n2)。不難看出,Apriori 算法的復雜度較高,會造成極大的時間消耗與空間消耗,尤其是輸入大規模數據時,傳統Apriori算法挖掘效率很低,因此不適用于現階段大規模復雜網絡數據中的社團發現。
SIACD算法的核心思想:首先,針對大多數社團發現算法不考慮社團成員所在地理位置信息的問題,引入了無線城市中MAC 地址事務數據,利用布爾矩陣將數據進行壓縮,這樣可以有效減少數據的存儲空間[29];其次,利用基于項數布爾矩陣中0-1向量的交運算來改進傳統Apriori算法循環掃描數據的缺點,并保留關聯規則的先驗性質,將不符合條件的項集刪除,再次壓縮數據,從而減少計算次數;最后,在Spark 集群上實現算法的并行化計算,利用Spark 基于內存計算的優勢,提高算法的計算效率。
從目前來看,與其他的英語教學階段相比,高職英語教育在實踐教學的過程之中存在許多的不足,其中職校學生的綜合英語基礎相對較為薄弱,老師所采取的教學理念以及教學模式比較傳統以及單一,實際的教學內容與慕課的教學要求之間還存在許多差距,這一點嚴重影響了教學質量以及教學水平的提升。
湖州市南潯區人民政府副區長沈雪芬在大會致辭中肯定了南潯木地板產業的發展,并表揚了包括世友地板、久盛地板、森林之星地板等優秀地板品牌。她相信,中國地板產業必將形成新的格局,并擁有更廣闊的發展前景。

針對大多數傳統社團發現算法沒有考慮地址位置信息的缺點,SIACD 算法引入MAC 地址的概念。事務Tn[21]代表同時出現在某地的用戶們所擁有的MAC 地址的集合,且事務Tn中包含唯一的標識號TID。若一組MAC 地址在不同的事務中頻繁出現,則表示這些用戶來自于同一個社團[13]。而利用Apriori 算法尋找MAC 地址事務數據中頻繁項集的過程,即為社團發現。
4.2.1 相關定義
定義9[19](布爾矩陣)又稱0-1矩陣。
定義10[17](項數)事務Tn包含項的個數叫作事務的項數,用TIn表示。
定義11[17](項數布爾矩陣)在布爾矩陣的前面加上一列記錄事務的項數,即項數布爾矩陣。
性質2[17]在數據集中若存在一個事務Tn,且該事務的項數小于k,當生成頻繁k-項集時,沒有必要掃描該事務。
證明生成Lk時需計算Ck的事務數,若Tn的項數小于k,由定義10可知Tn不可能包含Ck,則不需要掃描Tn。因此如果直接挖掘Lk,則可以刪掉項數小于k的Tn,不用映射到布爾矩陣中[17]。 □
4.2.2 處理方法
將MAC 地址原始數據中同一時間和場所的數據進行壓縮,刪除非關鍵數據,只保留用戶設備的MAC 地址和無線網絡的MAC 地址以及接入時間等數據,生成MAC 地址事務數據集。利用0-1 儲存特性將其轉化成布爾矩陣,這樣可以有效壓縮數據存儲空間,節約數據讀取掃描的時間。
手機用戶在進行手機攝影過程中,需要具有一定的道德觀念和法律意識,但有一部分手機用戶往往會為了迎合受眾獵奇心理,利用一些較高的隱蔽性功能進行拍攝,并將一些隱私圖像上傳至網絡,嚴重侵害公民隱私權。

MAC地址數據預處理主要思想如圖2所示。

Fig.2 Data preprocessing main idea diagram圖2 數據預處理主要思想圖解
從HDFS(Hadoop distributed file system)中讀取MAC地址事務數據,以事務TID為行和項集items為列構造事務矩陣M。若事務Tn中存在項集I,則其對應的矩陣位置上賦值為“1”,若不存在則賦值為“0”。以此類推,從而將MAC 地址事務數據轉化為布爾矩陣MT。為了方便計算,在矩陣前面加上一列項數TIn,得到基于項數的全局布爾矩陣MTI。
4.2.3 處理流程
6.{Tn=Ti∩Ti-1}//生成新事務
一詞多譯,在本文指一個術語有多個譯文版本的現象,既包含語義無實質偏差的譯文,也包含存在語義偏差的譯文。
傳統Apriori算法計算效率低的本質原因是頻繁的迭代過程已無法滿足大數據時代對社團發現問題的處理能力要求,對此本文結合Spark集群對Apriori算法進行如下改進。

Fig.3 Data preprocessing flow chart圖3 數據預處理流程圖
4.3.1 基于Apriori的改進
針對Apriori算法存在重復掃描數據集及生成結果冗余等問題,SIACD 算法引入基于項數的布爾向量[30]交運算的概念,能避免無效運算,進而提升算法效率。
定義12[17](布爾向量交運算)布爾向量X=(x1,x2,…,xn)和Y=(y1,y2,…,yn)的交運算定義為X?Y=(x1·y1,x2·y2,…,xn·yn)。布爾向量交運算相當于邏輯與運算,0 ?0=0,0 ?1=0,1 ?0=0,1 ?1=1。
Output:Lk.
“支架”是教師和學習者共同活動的過程,教師和學習者都為主體。只有教師和學習者都積極參與互動,才能促進學習者從在教師的指導下完成任務轉變為獨立完成任務,提高自己的自主學習能力。教師“支架”是否能起到預期的作用受到教師和學習者相關因素的影響。
全局Moran's I取值范圍為[-1,1],I>0表明各樣本點互為正相關,且值越大,正相關程度越大;I<0表明各樣本點互為負相關;I=0表明沒有相關性。
2.if(TIi 3.{deleteTi}//刪除項數小于k的事務 4.else 5.for(i=last,i>1,i--)//從最后一行向上做交運算 MAC地址數據預處理流程圖如圖3所示。 (2)加強施工工藝改造技術的研究。噴混植生是工程與生物措施緊密結合的施工技術,工藝過程復雜并影響著工程質量。主要研究不同母巖、不同坡度巖石坡面的最佳施工工藝,錨桿與掛網工藝的改進、建植層噴混工藝的優化等,達到既降低生產成本,又能快速生態治理、長期護坡的目的。 7.Ck=T1?T2?…?Tn//生成局部候選項集Ck 8.if(Sup(Ck) 9.{deleteCk}//局部候選項集的支持度小于局部支持度閾值或不滿足先驗性質,則刪除 10.else 14.else 11.C=C1?C2?…?Cn//合并所有局部候選項集 12.if(Sup(C) 這么壯觀的場面,該發個朋友圈了!近日,湖南高速警察民警巡邏中發現一小車撞護欄,所幸無人受傷,后對駕駛員進行酒精測試,結果顯示醉駕,此時他竟提出要拍個照發“朋友圈”。 13.{deleteC}//刪除小于支持度閾值的候選項集 MATLAB仿真過程中每組發送的原始數據幀的個數K設為100,共發送25組數據幀.在40MHz帶寬下對單流和雙流分別取MCS4和MCS11的情況進行評估和分析. 15.L=allC//生成全局頻繁項集L 4.3.2 提取社團 由于MAC 地址具有唯一性,因此用戶MAC 地址等價于項I,即MACn=In。項In代表擁有MACn的社團成員,事務Tn代表社團活動,而事務的頻繁項集代表成員組成的社團集合。若MAC 地址頻繁地同時出現在某些事務中,那么其對應的用戶即為同一個社團成員。利用改進Apriori 算法尋找MAC 地址事務中頻繁項集的過程即為社團發現,而頻繁項集中包含的MAC地址擁有者即為該社團成員。 例如,通過4.3.1 小節生成全局頻繁項集L={I1,I2,I3},將L中I轉換成對應的MAC地址,即L={MAC1,MAC2,MAC3}。由MAC地址的唯一性可知,其對應的用戶就是該社團成員,即用戶1、用戶2、用戶3 這三位為該社團成員。 4.4.1 處理過程 首先,Spark 通過flatmap()讀取數據并轉換成由事務標識及對應項組成的 電力變電站運行的過程中,一定要重視設備的質量檢查,因為設備的安全性取決于其質量的好壞。電力企業需成立專業的設備評估小組,對各電力運行設備等進行定期維護和評估,保證設備能夠滿足國家規定的要求。對于一些磨損或老舊設備要進行維護和更換,從而實現電力系統電力變電站的高效安全運行,在這個基礎上提高電力行業的發展實力。 4.4.2 RDD分區 目前聚類方式有三類:一是系統聚類,用于對小樣本的對象間聚類以及對變量聚類。二是有序樣品聚類,對有排序次序的樣本的對象間聚類,要求是次序相鄰的對象才能聚為一類。三是動態聚類,適用于樣本量大時對象間的聚類,一般用k-means法處理。由于內部審計一般依靠歷史數據,提出有價值的工作建議,所以由于涉及內部審計的業務數據量較大,所以本文采用第三種聚類分析方式。 一般情況下,RDD(resilient distributed datasets)會自動進行分區,但由于分區的數量影響著運行時間的變化,尤其是通信代價在分布式程序中占比很大,Spark 程序可以自定義分區數量,因此通過控制RDD 分區對數據進行并行化處理來減少通信開銷。最終目的是盡量減少網絡傳輸代價,從而極大地提升整體性能。 比如,明確鰱鳙魚的投放、捕撈經營權歸千島湖發展集團,鰱鳙魚年投放量必須在60萬kg以上,鰱鳙魚捕撈生產采取限額捕撈制度。 在spark-shell中執行分區代碼部分如下所示: 實時跟蹤系統就是跟蹤、記錄學生的學習過程和教師的教學過程,得到大量的學習數據和教學數據,并智能化分析這些數據,得出有建設性的結論和建議,為改進教學和學習提供強有力的指導。這一功能模塊與銅職院的質量管理辦公室所做的工作切合,質量管理辦公室的主要任務就是對學校教學質量進行診斷改進分析研判。實時跟蹤系統不僅對單個教師的教學提供幫助,更是對整個學校的教學改革和教學研究提供大數據支持。因此這是學校應該重點建設的第二個模塊,此方面可能涉及到人臉識別、智能跟蹤定位、數據存儲等相關的技術。 1.textFile(path,partition)//從HDFS讀取數據 2.def getPartitions:Array[Partition]//通過該方法獲取RDD的分區數量() 3.parallelize(1 to 100,任務數) 4.getNumPartitions:Int=分區數//RDD的分區 5.saveAsTextFile("/路徑")}//保存路徑 4.5.1 算法流程 SIACD算法流程圖如圖4所示。 4.5.2 算法舉例 為了更加清晰地論述SIACD 算法的主要思想,舉例如圖5所示。 設min_sup=30%,則挖掘頻繁k-項集的事務數為當設分區數為2時,局部頻繁k-項集的事務數為count(Ck)≥假設求L3(k=3),則將局部布爾矩陣按項數大小降序重新排列,然后把項數小于3 的事務T1和T6刪除,產生新的局部布爾矩陣 Fig.4 SIACD algorithm flow chart圖4 SIACD算法流程圖 綜上分析,只有項集{I1,I2,I3}滿足要求,因此得到頻繁3-項集L3={I1,I2,I3}。將I轉換成MAC 地址,得到L3={MAC1,MAC2,MAC3}。即MAC 地址用戶頻繁地同時出現在事務T5~T7中,因此對應的用戶1、用戶2、用戶3為同一社團成員。 Fig.5 Parallel processing diagram based on improved Apriori圖5 基于改進Apriori的并行處理圖解 4.6.1 時間復雜性分析 SIACD算法通過預處理過程將數據集轉化為布爾矩陣,只掃描一次全部的事務數據集。布爾向量兩兩自連接可直接獲取頻繁項集,無需迭代運算,有效減少了計算量,并結合Spark 實現了并行化處理,降低了運行時間。設事務數為m、項數為n、分區數為p,該算法的時間復雜度為O(mn/p),小于Apriori算法的時間復雜度為O(mn2)。另外,Spark 將數據緩存在內存中計算,避免了大量的磁盤I/O 操作,降低了運行時間,提高了計算效率。 4.6.2 空間復雜性分析 SIACD算法利用0-1形式轉化數據,有效減少了數據的存儲空間。通過布爾向量兩兩自連接完成交運算,有效減少了候選項集的規模,避免了大量的迭代計算,同時減少了中間結果的存儲空間。因此當事務數為m及項數為n時,該算法的空間復雜度為O(n),小于Apriori算法的空間復雜度為O(n2)。 搭建Spark分布式計算集群,其中包含1個master主節點和7 個slave 計算節點。計算機配置:CPU 型號為Intel core i7-6500U,內存為16 GB,硬盤為1 TB,操作系統為Linux系統,Ubuntu 14.04,JDK 1.8,Hadoop 2.6.0,Spark 1.6。 本文均采用多次平均值的方式統計運行時間以消除單次實驗帶來誤差的影響。通過對MAC 地址數據集進行隨機采樣來控制輸入MAC 地址事務數據規模。采用UCI 數據集中MAC 地址樣本數據集概況如表2所示。 Table 2 Survey of sample data sets表2 樣本數據集概況 5.2.1 結果準確性實驗 實驗條件:集群節點數為8,MAC 地址事務數據為樣本1和樣本2,預設min_sup=20%及δ=0.05[13],將兩樣本中固有社團作為社團發現結果準確性的評價標準,對比SIACD 算法、Apriori 算法、MP-T-CS 算法、CS 算法、NMF 算法[12]、并行譜聚類算法[29]的挖掘結果。N()表示該算法挖掘的社團個數,實驗結果如表3所示。 Table 3 Comparison of mining result表3 挖掘結果對比 個 實驗分析:如表3 所示,六種算法的社團挖掘結果大致相同,且并行SIACD 算法和單機Apriori 算法挖掘的社團質量和數量相同。實驗說明:SIACD 算法的并行化處理是可靠的,能準確挖掘出滿足支持度閾值的頻繁項集以及所需提取的社團及社團成員集合。 5.2.2 計算效率實驗 實驗條件:集群節點數為8,預設min_sup=20%,MAC 地址事務數據為樣本1 至樣本5,對比SIACD算法、Apriori 算法、MP-T-CS 算法、CS 算法的運行時間的變化情況,實驗結果如圖6所示。 Fig.6 Comparison of running time of 4 algorithms in different amount of data圖6 四種算法在不同數據量下運行時間的比較 實驗分析:如圖6所示,當數據量較少時,SIACD算法、MP-T-CS算法、CS算法三種算法的運行時間大致相同,原因是SIACD 算法是建立在Spark 偽集群上,節點之間傳輸數據浪費了時間,因此此時并沒有體現集群并行計算的優勢。當數據量逐漸增大時,SIACD算法的運行時間要明顯低于其他算法的運行時間,這是由于SIACD 算法利用布爾矩陣將數據進行了壓縮,以及優化了頻繁項集迭代的過程。當數據量較大時,通信開銷占比微小可忽略不計,Spark基于內存快速計算的特性顯現優勢。實驗說明:SIACD 算法對海量數據的處理能力和計算效率比Apriori算法、MP-T-CS算法、CS算法更好。 5.2.3 支持度實驗 實驗條件:集群節點數為8,MAC 地址事務數據為樣本3,min_sup從10%至50%依次遞增,對比SIACD 算法、Apriori 算法、MP-T-CS 算法、CS 算法的運行時間的變化情況,實驗結果如圖7所示。 Fig.7 Comparison of running time of 4 algorithms under different min_sup圖7 四種算法在不同支持度閾值下運行時間的比較 實驗分析:如圖7 所示,四種算法的運行時間會隨著支持度閾值的增大而減少,原因是算法利用支持度刪除不滿足要求的數據,支持度閾值越高,挖掘頻繁項集的數量就越少,時間消耗越少。隨著支持度閾值逐漸減少時,SIACD 算法的運行時間明顯少于其他三種算法,這是由于SIACD算法利用0-1代替原始數據,減少數據存儲和掃描的時間,并優化了計算過程,從而減少了運行時間。實驗說明:支持度閾值過大挖據的有效信息減少,而支持度閾值過小挖掘的信息復雜且冗余,這說明預先設定不同的支持度閾值會影響產生頻繁項集的時間,進而影響算法的計算效率。在同等條件下,SIACD 算法的計算效率高于其他的算法。 5.2.4 可擴展性實驗 加速比是同一任務在單節點和多節點并行處理中消耗時間的比率,用來衡量算法程序并行化的性能及效果。加速比公式: 實驗1MAC 地址事務數據為樣本3,集群節點為1 至8,預設min_sup=20%,分別測試SIACD 算法、MP-T-CS算法的加速比,實驗結果如圖8所示。 Fig.8 Change of speedup ratio of algorithms圖8 算法加速比的變化情況 實驗分析:如圖8 所示,兩個算法的加速比均隨著節點數的增加呈上升趨勢,這表明計算速度在逐步提高。當節點數也相同時,SIACD 算法的加速比總是要高于MP-T-CS 算法,原因是SIACD 算法將數據壓縮,有效減少了數據處理時間,并省去了生成頻繁項集的迭代過程,大大降低了運行時間。實驗說明:雖然SIACD 算法和MP-T-CS 算法都具備可擴展性,但SIACD算法的并行化性能及效果更好,對海量數據的計算效率更高。 實驗2集群節點為1 至8,預設min_sup=20%,分別測試SIACD算法計算MAC地址事務數據樣本1至樣本5的加速比,實驗結果如圖9所示。 Fig.9 Change of speedup ratio of SIACD algorithm under different amount of data圖9 SIACD算法在不同數據量下加速比的變化 實驗分析:如圖9所示,當節點數不變,數據量較小時,線段接近水平,這說明加速效果并不明顯,原因是此時計算時間較短,通信開銷占比略大,并行計算優勢也不突出。但當數據量較大時,通信開銷占比可忽略不計,由于SIACD算法是基于Spark內存快速計算的,加速優勢明顯。實驗說明:在處理海量數據時,SIACD算法可以有效減少時間消耗,具有較好的處理能力和計算效率。 針對社團發現算法計算效率低及復雜度高等問題,本文提出了基于Spark利用改進關聯規則解決無線城市社團發現問題的SIACD算法。該算法充分利用Spark基于內存計算的特性,避免了MapReduce多次磁盤讀寫操作,改善了Apriori 算法迭代計算的不足,提高了社團發現的效率。實驗結果表明,傳統的社團發現算法和關聯規則算法均不滿足大數據時代對計算速度的要求,SIACD算法性能優勢明顯,降低了計算時間,有效提升了對海量數據的處理能力。下一步,希望結合FP-tree 算法對無線城市社團發現問題進行更深入的研究。4.4 基于Spark的并行化處理
4.5 算法流程與舉例說明


4.6 算法分析
5 實驗驗證與分析
5.1 實驗環境
5.2 實驗對比






6 結束語