一種分布式計算圖節點相似度的方法
【專利摘要】一種分布式計算圖節點相似度的方法,屬于計算機數據挖掘領域,包括:采用主從模式搭建分布式計算平臺;主計算機讀入對象數據,建立圖模型并發送給各子計算機;主計算機進行任務劃分,并將各子任務分配給各子計算機;各子計算機計算其各任務節點分別傳遞給圖模型中節點對的相似度增量計算值;主計算機計算偏移系數并分別發送給對應的各子計算機;子計算機對本地各任務節點的相似度增量計算值進行修正,并將修正后的本地各任務節點的相似度增量進行求和后傳送給主計算機;主計算機對圖模型中各節點對的相似度進行整合,最終得到圖模型中各個節點對的相似度;該方法相比于傳統SimRank計算方法,傳輸代價低,計算時間短,效率明顯提高。
【專利說明】一種分布式計算圖節點相似度的方法
【技術領域】
[0001] 本發明屬于計算機數據挖掘領域,具體涉及一種分布式計算圖節點相似度的方 法。
【背景技術】
[0002] 隨著圖結構的廣泛應用,計算兩節點相似度已經成為一種基本的圖操作方法。例 如,針對一個社交網絡所建立的圖模型中,節點代表個人賬號,節點之間的邊代表個人賬號 之間的關系,節點相似度可表述成為兩個賬號的關聯程度,其在探測相似人群以及朋友推 薦中有重要應用;又如,針對引文網絡所建立的圖模型中,節點代表文章,節點之間的邊代 表文章之間的引用關系,而節點相似度可應用于文章分類及相似文章推薦。
[0003] 目前,已有多種計算節點相似度的方法,其中SimRank方法因具有高準確性而 被廣泛應用。傳統SimRank方法計算復雜性很高,計算方法如下:對于給定的有向圖,令 s (a, b)表示節點a和b之間的相似性,則這兩個節點的SimRank相似度如下:
[0004] 1)若a = b,則s (a, b) = 1 ;2)若a尹b,則s (a, b)的計算公式如下:
[0005]
【權利要求】
1. 一種分布式計算圖節點相似度的方法,其特征在于:包括如下步驟: 步驟1 :采用主從模式搭建分布式計算平臺; 搭建的分布式環境中共有N臺計算機,將其中一臺計算機作為主計算機,其余N-1臺計 算機均作為子計算機; 步驟2:主計算機讀入對象數據,建立圖模型并發送給分布式計算平臺中的每臺子計 算機; 主計算機以對象為節點,對象間關系為節點之間的邊,建立圖模型并將該圖模型發送 給分布式環境中每臺子計算機; 步驟3 :以該圖模型的所有節點為任務劃分對象,主計算機進行任務劃分,并將劃分后 的各子任務及迭代次數分配給各子計算機;子任務由所劃分的不同節點構成;子任務中的 不同節點,稱作任務節點; 步驟4 :根據接收的任務,子計算機計算其各任務節點分別傳遞給圖模型中的各個節 點對的相似度增量計算值;相似度增量計算值為不考慮所得到的游歷是否為首遇游歷時, 任務節點傳遞給對應節點對的相似度增量; 對于單個任務節點m,對應的子計算機首先構建該節點的相似度增量計算值矩陣,大小 為ηΧη,并將其中每個元素初始化為0,該矩陣用于存放該節點傳遞給各相應節點對的相 似度增量計算值;接下來采用廣度優先算法,以該節點m為根節點進行廣度優先搜索,將節 點m在每一層所能到達的節點存儲在集合List k(m)中,貝1J有 Listk(m) = {(j, Pk[m, j])}, k = 1, ···, K (2) 其中Listk(m)表示以節點m為根節點,在第k層所能到達的圖節點;j代表圖中任意節 點;Pk[m, j]表示從節點j出發,沿入邊方向,經k步游走到達節點m的概率,稱為節點m到 節點j的路徑值; 以迭代方式計算該節點的相似度增量計算值,即Listk(m)根據Listj^Oii)計算得到, Listk(m)中每個元素根據式(3)進行更新,
(3) 根據公式(4)及集合Listk(m),計算該節點m在各層傳遞給節點對(j, )的相似度 增量計算值ν' m,k(j,j'),其中j'為圖中任意節點;任務節點m所對應的子計算機將j' =j時的相似度增量計算值V m,k(j, )發送給主計算機;將尹j時的相似度增量計 算值v m,ka_r )通過公式(5)累加到相似度增量計算值矩陣中;
(4) 其中,v )表示節點m在第k層傳遞給節點對(j,_T )的相似度增量計算 值,即節點對(j, j ')沿入邊方向經過k步游走,在節點m相遇的游歷值之和; s' )= W m,k(J·,J·') (5) 其中,s' m(j,_f )表示該任務節點m帶給節點對(j,j')的相似度增量計算值; 當迭代k = K次以后,迭代停止,相似度增量計算值矩陣存放的即為節點m傳遞給各節 點對的相似度增量計算值; 步驟5.主計算機計算各任務節點的偏移系數并分別發送給對應的各子計算機;偏移 系數為用于對各任務節點的相似度增量計算值進行修正的系數; 在所有子計算機完成步驟4后,主計算機根據接收到的每個子計算機發送的其各任務 節點傳遞給節點對(j, j ' ),= j時的相似度增量計算值V m,k(j, ),建立集合Set = {({x',k',y' },v' )},其中X'和y'均表示任意圖節點,ν'表示節點X'在第k' =1,2,"%1(次迭代對節點對(7/,7/)的相似度增量計算值¥/!£^(7 /,7/),并用 Set(x',k',y')表示集合Set對應的元素ν' =v' x,,k,(y',y');構建集合Sco ={({x, k, y},v)},其中x和y均表示任意圖節點,v表示以節點x為起點,經過k步游走, 在節點y發生首遇的游歷值之和vx, k(y, y),并用Sc〇(x, k, y)表示集合Sco對應的元素v = vx,k(y,y);下面介紹集合Sco的更新方法: 以k = 1,2,…,K為迭代順序更新集合Sco,在第k-Ι次迭代計算Sco (X,k-1, y)全部 完成后,才進行第k次迭代計算Sco (x,k,y),其中單個元素Sco (x,k,y)計算方法如下: A. 若k = 1,則Sco (X,k, y) = Set (X,k, y),則轉去執行步驟C ;否則執行步驟B ; B. Sco (X,k, y)通過從集合Sco中查找出元素Sco (X,kp p)與從集合Set中查找出元素 Set(p,k2,y),且滿足1^+1? = k,根據公式(6)計算得到偏差v" x,k(y,y),公式(6)如下:
(6) 再通過公式(7)計算得到Sco (X, k, y),公式(7)如下:
(7) C. 結束; 集合Sco更新完畢后,接下來通過公式(8)計算各個任務節點的偏移系數,
(8) S y為節點y的偏移系數,主計算機依據根節點的對應關系,將該偏移系數發送給相應 的子計算機; 步驟6.子計算機接收到其各任務節點的偏移系數之后對本地各任務節點的相似度增 量計算值進行修正,并將修正后的本地各任務節點的相似度增量進行求和后傳送給主計算 機; 子計算機根據公式(9)對步驟4求得的本地相似度增量計算值進行修正,即 s(j,j')= 2ys' y(j,j')(1-δ y) (9) 其中s(j,j')表示節點對(j,j')的相似度,s' y(j,_f )表示節點y傳遞給節點 對(j,)的相似度增量計算值,其為不考慮所得到的游歷是否為首遇游歷的計算結果; S y表示任務節點y的偏移系數,其用于對任務節點y的相似度增量計算值進行修正;求和 符號內s' y(j,j' )(l_Sy)整體表示節點y傳遞給節點對(j,j')的相似度增量,為修 正后的節點y對應矩陣中的記錄; 步驟7 :根據從各子計算機接收的各節點的相似度增量,主計算機對圖模型中各節點 對的相似度進行整合,最終得到圖模型中各個節點對的相似度; 主計算機接收到所有子計算機發送的各節點的相似度增量后,將對應節點對的相似度 增量相加,得到每個節點對的相似度值,再將每個節點與其自身的相似度修正為1. 0。
2.根據權利要求1所述的分布式計算圖節點相似度的方法,其特征在于,步驟2所述的 建立圖模型并發送給分布式計算平臺中的每臺子計算機,主計算機及各子計算機對該圖模 型進行存儲,存儲的方法為: 主計算機以對象為節點,對象間關系為節點之間的邊,建立圖模型;主計算機以文本 形式對該圖模型進行存儲,每行存儲節點tail的所有出鄰居及出鄰居入度,并為tail建 立索弓丨,存儲結構如下:tail, (headn lUheadi) |),…(head|0(tail)|,|l(head|0(tail)|) |),其 中(tail, headz),z = 1, 2, ···, |〇(tail) I均為圖中從節點tail到節點headz的有向邊, I 0 (tail) I為tail的出度;11 (headz) I表示節點headz的入度;各子計算機將其接收的該 圖模型以相同的存儲結構存儲于本地。
3.根據權利要求1所述的分布式計算圖節點相似度的方法,其特征在于,步驟3所述的 主計算機將劃分后的各子任務及迭代次數分配給各子計算機,其中迭代次數K根據式(1) 確定, (1) 其中,ε為用戶所能容忍的誤差大小;C為衰減因子,是介于0,1之間的常數。
【文檔編號】H04L29/08GK104158840SQ201410323742
【公開日】2014年11月19日 申請日期:2014年7月9日 優先權日:2014年7月9日
【發明者】申德榮, 馮朔, 寇月, 聶鐵錚, 王振華, 于戈 申請人:東北大學