一種面向寄遞數據的并行化關鍵節(jié)點發(fā)現方法
【技術領域】
[0001]本發(fā)明涉及社會網絡分析技術領域,尤其是涉及一種面向寄遞數據的并行化關鍵節(jié)點發(fā)現方法。
【背景技術】
[0002]自從在1920年“社會網絡”這個概念被英國學者提出來之后,研究者們對社會網絡的研究從未間斷過。尤其現在隨著生物信息技術、網絡技術、通信技術、社交平臺的快速發(fā)展,社會網絡中的每個個體之間形成了一個巨大的復雜的社會網絡。社會生活中,復雜網絡與我們的生活息息相關,我們經常接觸到的復雜網絡包括:計算機領域中的因特網、萬維網、通信網絡、郵件網絡、微博網絡,物流中的物流寄遞關系網絡以及生物醫(yī)學領域的蛋白質與蛋白質之間相互作用的網絡。關鍵節(jié)點是社會網絡結構中普遍存在的比較重要的一種節(jié)點,近些年對社會網絡中關鍵節(jié)點的研究一直是一個熱點。在社會和物理網絡中發(fā)現關鍵節(jié)點對其重要性進行評估具有很重要的實際意義。例如在社交網絡中尋找出一個社會團體中最活躍的用戶,定位網絡攻擊和防御中的關鍵節(jié)點,確定物流網絡中關鍵人物等。對社會網絡結構中的關鍵節(jié)點發(fā)現有助于更加深層次地挖掘社會網絡中的信息,找出社團結構中的關鍵節(jié)點,對于理解社會網絡的結構和功能有著深刻的理論與現實意義。
[0003]首先,現有的關于復雜網絡中關鍵節(jié)點的研究大多都是利用谷歌的PageRank算法以及在其基礎之上進行改進。但是,大多數關鍵節(jié)點發(fā)現算法只考慮了邊的權值,很少有人將節(jié)點自身的權值考慮進來,導致在網絡中挖掘關鍵人物的時候忽略了很多有用的信息,影響了關鍵節(jié)點發(fā)現的準確性。其次,我們定義節(jié)點活躍度作為節(jié)點自身權值之外,我們用兩個因素來計算邊的權值,一個是連接邊的兩個節(jié)點的共享鄰居數,另一個是節(jié)點對之間的交互頻率,這樣就充分地利用了網絡中的信息。最后,由于計算機技術和互聯(lián)網技術的迅猛發(fā)展,人們獲取數據的能力不斷增強,研究人員研究的網絡規(guī)模也從原來的幾十至幾百個結點上升到百萬至千萬級的規(guī)模,同時考慮到MapReduce編程框架適合處理大規(guī)模數據,因此本發(fā)明提出基于MapReduce編程框架,實現面向大規(guī)模寄遞數據的并行化關鍵節(jié)點發(fā)現。
【發(fā)明內容】
[0004]本發(fā)明的目的就是為了克服上述現有技術存在的缺陷而提供一種面向寄遞數據的并行化關鍵節(jié)點發(fā)現方法,基于真實的物流網絡,將節(jié)點活躍度、節(jié)點交互頻率和節(jié)點對的共享鄰居數等考慮到權值計算中,充分利用了物流寄遞網絡中的信息,減少了有效信息的丟失,提高了網絡中關鍵節(jié)點發(fā)現的準確性,并基于MapReduce編程框架上,在比較成熟的谷歌的PageRank算法之上對其進行改進,實現算法的并行化,大大提高了關鍵節(jié)點挖掘的效率和穩(wěn)定性。
[0005]本發(fā)明的目的可以通過以下技術方案來實現:
[0006]—種面向寄遞數據的并行化關鍵節(jié)點發(fā)現方法,包括:
[0007]步驟S1:根據寄遞數據中設定時間內各節(jié)點的收發(fā)總次數獲取節(jié)點活躍度,將節(jié)點活躍度作為節(jié)點自身的權值;
[0008]步驟S2:根據寄遞數據中設定時間內各節(jié)點對的交互頻率和共享鄰居數度量指標獲取各節(jié)點對的邊的權值,將由寄遞數據形成的網絡定義為一個有向雙加權網絡圖;
[0009]步驟S3:在PageRank算法的基礎上加入節(jié)點自身的權值和節(jié)點對的邊的權值,并行地挖掘有向雙加權網絡圖中的關鍵節(jié)點。
[0010]所述節(jié)點活躍度滿足以下公式:
[0011]a; = M i/Max^um(I)
[0012]式中,8;表示節(jié)點i的節(jié)點活躍度,M ;表示節(jié)點i在設定時間內收發(fā)總次數,Max_num表示所有M1中的最大值。
[0013]所述邊的權值滿足以下公式:
[0014]Wji= aXfreq iS+(l~a) Neighbor (i, j)(2)
[0015]式中,《^表示節(jié)點i和節(jié)點j之間的邊的權值,freq ^表示節(jié)點i和節(jié)點j之間的交互頻率,Neighbor (i, j)表示節(jié)點i和節(jié)點j之間的共享鄰居數度量指標,a表示調整因子。
[0016]所述交互頻率滿足以下公式:
[0017]freq"= n ij/Max—num(3)
[0018]式中,freqy表示節(jié)點i和節(jié)點j之間的交互頻率,n 表示節(jié)點i和節(jié)點j形成的邊的出現次數,Max_num表示所有Iiu中的最大值。
[0019]所述共享鄰居數度量指標滿足以下公式:
[0020]Neighbor (i, j) = Neighbor_shared_num(i, j)/Max_SharedNum (4)
[0021]式中,Neighbor (i, j)表示節(jié)點i和節(jié)點j之間的共享鄰居數度量指標,Neighbor_shared_num (i, j)表示節(jié)點i和節(jié)點j之間的共享鄰居數,Max_SharedNum表示所述Neighbor_shared_num(i, j)中的最大值。
[0022]所述步驟S3具體為:
[0023]301:獲取各節(jié)點的PageRank值,滿足以下公式:
[0024]PR(P1) = &1/Ν+(1-&1) X XPR(Pj) XWji/L(Pj) (5)
[0025]式中,PR(Pi)表示節(jié)點i的PageRank值,pse M(p ;),M(Pi)表示指向節(jié)點i的集合,L(p.j)表示指向節(jié)點i的這個節(jié)點的出度,N表示寄遞數據中總的節(jié)點個數,示節(jié)點i的節(jié)點活躍度,《^表示節(jié)點i和節(jié)點j之間的邊的權值;
[0026]302:針對各節(jié)點,對比前后兩次獲取的PageRank值,判斷兩者差值的絕對值是否大于給定的閾值ε,若是,跳轉步驟301,繼續(xù)獲取下一輪各節(jié)點的PageRank值,若否,執(zhí)行步驟303 ;
[0027]303:對步驟302最終獲取的各節(jié)點的PageRank值進行排序,排名前k個的節(jié)點為所挖掘的關鍵節(jié)點,k為關鍵節(jié)點的數量。
[0028]該并行化關鍵節(jié)點發(fā)現方法中各步驟的數據均基于MapReduce編程框架進行并行化處理。
[0029]與現有技術相比,本發(fā)明具有以下優(yōu)點:
[0030]I)由于現有對于復雜網絡中關鍵節(jié)點的發(fā)現算法中,很少有研究者同時考慮到節(jié)點自身的權值以及由節(jié)點間交互頻率和共享鄰居數影響的邊的權值,而本發(fā)明方法在設計中還考慮到了節(jié)點自身的活躍度,將節(jié)點活躍度作為節(jié)點自身的權值,在考慮邊的權值的時候,引進兩個決定邊的權值的因素,即節(jié)點間的交互頻率以及節(jié)點的共享鄰居數,充分的利用了網絡中的信息,提高了算法的精確性,適合于大規(guī)模社會網絡中關鍵節(jié)點發(fā)現。
[0031]2)基于寄遞數據來構建寄遞網絡,將PageRank算法運用到物流寄遞數據形成的網絡中來挖掘關鍵節(jié)點,適用于在海量寄遞數據中關鍵節(jié)點的準確和快速挖掘。
[0032]3)基于MapReduce編程框架對改進過后的PageRank實現了并行化計算,大大提高了算法的擴展性、挖掘效率和穩(wěn)定性。
【附圖說明】
[0033]圖1為本發(fā)明并行化方案的整體流程圖;
[0034]圖2為MapReduce處理數據的過程圖;
[0035]圖3為共享鄰居數定義的示意圖。
【具體實施方式】
[0036]下面結合附圖和具體實施例對本發(fā)明進行詳細說明。本實施例以本發(fā)明技術方案為前提進行實施,給出了詳細的實施方式和具體的操作過程,但本發(fā)明的保護范圍不限于下述的實施例。
[0037]如圖2所示,MapReduce通過劃分的步驟,將海量數據分組并將對其的處理分配給主節(jié)點下的各個分節(jié)點共同完成,最后整合各個分節(jié)點的計算結果得到最終結果。MapReduce將整個數據處理過程抽象為兩個部分,用函數表示,分別為map和reduce。map的工作是將任務分解成多個,reduce負責匯總多任務處理的結果。MapReduce框架下的數據集可以分解成多個小數據集,并且可以被并行化處理。
[0038]如圖1所示,一種基于MapReduce框架和PageRank算法的面向寄遞數據的并行化關鍵節(jié)點發(fā)現方法包括:
[0039]步驟S1:根據寄遞數據中設定時間內各節(jié)點的收發(fā)總次數獲取節(jié)點活躍度,將節(jié)點活躍度作為節(jié)點自身的權值。具體如下:
[0040]基于MapReduce框架,將待挖掘的原始數據集隨機的劃分多個數據塊split O,MapReduce集群中的計算機節(jié)點啟動多個Mapper,每個Mapper階段分別處理對應的數據塊信息:讀取節(jié)點數據的相關信息,經過map函數中的處理程序mapO,將其轉化為〈key, value)形式輸出,獲取key值為當前節(jié)點,value值是與當前節(jié)點有交互關系的相鄰節(jié)點。例如有一個寄遞行為為A — B,這里A代表這個寄遞行為中的發(fā)件人,B代表這個寄遞行為中的收件人,為有向的,但是在map輸出的時候對于A — B,雖然輸入為有向,但是輸出的是A-B和B-A,為無向。最后,各個map函數的輸出結果被傳輸到Reudcer階段的處理程序reduce ()中進行結果匯總,統(tǒng)計各個節(jié)點收發(fā)快遞的總次數,即收發(fā)總次數,以node:count的數據格式寫到文件中保存起來。
[0041]由收發(fā)總次數計算節(jié)點活躍度,滿足以下公式:
[0042]a; = M i/Max^um(I)
[0043]式中,8;表示節(jié)點i的節(jié)點活躍度,M ;表示節(jié)點i在設定時間內收發(fā)總次數,Max_num表示所有M1中的最大值。
[0044]步驟S2:根據寄遞數據中設定時間內各節(jié)點對的交互頻率和共享鄰居數度量指標獲取各節(jié)點對的邊的權值,將由寄遞數據形成的網絡定義為一個有向雙加權網絡圖。具體如下:
[0045]201:計算設定時間內各節(jié)點對的交互頻率:
[0046]數據預處理同上,將原始數據集隨機劃分為數個塊,MapReduce集群的計算機節(jié)點啟動多個Mapper,每個Mapper階段分別處理對應的數據塊信息,讀取節(jié)點和邊的相關信息,將其轉化為〈key,value)形式輸出,獲取的key值是節(jié)點對,value值是1,例如,有一次A — B的寄遞行為,map輸出為<A_B,1>和<B_A,1>。然后,各個map的輸出被傳送到Reducer端進行匯總,統(tǒng)計出每個節(jié)點對形成的邊出現的總次數,最后對于每一條寄遞行為都會有〈nodel_node2: count〉和〈node2_n