錢 榕,王嘉瑞,邢方遠,許建婷,張克君
1.北京電子科技學院,北京 100070
2.西安電子科技大學,西安 710071
在復雜網絡[1]領域,節點重要性排序[2]在交通規劃、流行病傳播[3]、輿情監控、商品推薦等領域都有著廣泛的應用。研究者們已經提出了許多重要節點排序的經典算法,比如K-shell 算法[4]、HITs(hyperlink-induced topic search)算法[5]、PageRank算法[6]等。其中,K-shell算法計算復雜度低,適用于大型網絡,但該算法對節點重要性的區分度不高,是一種粗粒度的重要性排序方法,對于一些特殊網絡結構,如星形網絡[7]等,無法發揮作用。HITs 算法開創了用不同指標同時評價網絡中節點重要性的先例,但真實的網絡中存在很多特殊的結構,如內部鏈接十分緊密的社團結構[8],這會導致社團內的節點權威值和樞紐值相互增強,使得結果出現偏差。PageRank算法在社交網絡[9]分析中也有著廣泛的應用,但在實際的社交網絡中,人與人之間有著十分復雜的關系,PageRank中均等的分配策略顯然是不符合實際的。
針對以上算法的不足,鐘林峰提出了一種基于迭代資源分配的關鍵節點挖掘算法(iterative resource allocation,IRA)[10],并從傳播學的角度對該算法進行了改進,提出了基于節點傳播屬性的迭代資源分配改進算法(improved iterative resource allocation,IIRA),并取得了良好的效果。
但是無論是IRA 算法還是IIRA 算法,都需要以其他算法的中心性指標作為資源分配的依據,一定程度上依賴輸入指標的準確度。在社交網絡中,信息往往更容易在兩個更為相似的節點之間傳播,以節點中心性指標作為資源分配的依據本身并不準確且無法衡量這種相似程度,在傳播過程中以節點相似度作為資源分配的依據更具有合理性。因此本文將節點的相似度作為資源分配的依據,提出了SBRA(similarity-based resource allocation)算法。除此之外,基于傳播概率的IIRA算法在設計之初就存在一個假設,即只有直接相連的節點之間才會存在資源的傳遞。但在實際的社交網絡中,影響力不僅在直接相連的節點之間傳播,而且會向節點的二階鄰居節點甚至更遠的鄰居節點傳播。針對這一問題,本文將LeaderRank 算法[11]的背景節點思想引入SBRA算法,提出了基于節點相似度和高階資源流動的L-SBRA(LeaderRank similarity-based resource allocation)算法,解決了非直接相鄰節點間的資源傳播問題,使得該算法更適用于社交網絡。
經典的節點重要性算法大多是基于網絡拓撲結構,即基于節點的屬性信息。而IRA算法認為,節點的重要性不僅與自身的屬性相關,也和相鄰節點的屬性相關。
對于給定的無向無權網絡G=(V,E),其中包含|V| =N個節點和|E| =M條邊。網絡G的鄰接矩陣A中的元素用aij表示,如果節點vi與節點vj之間有連邊,則aij=1,若節點vi與節點vj之間沒有連邊,則aij=0。IRA算法公式如下:

其中,IRA 值用來衡量每個節點的重要程度,IRAi(t)表示第t個時間步節點vi的IRA 值,Γ(i)表示節點vi的鄰居節點集,θi表示節點vi的一個具體的資源值,可以將K-shell、度中心性(degree centrality,DC)[12]、特征向量中心性(eigenvector centrality,EC)[13]、接近中心性(closeness centrality,CC)[14]等指標作為輸入,α為可調節中心性值的權重。
IRA算法大致流程為:首先將所有節點的IRA 值都初始化為1,然后按照式(1)迭代更新IRA 值直至其穩定,最后得到的資源值就代表了各節點的重要程度。
IRA算法融合了節點自身屬性和鄰居節點屬性,文獻[10]證明,相比其他算法,IRA算法在大部分網絡中準確度都有不同程度的提升,并且得到了更加精確的排序結果。此外,在真實網絡中,隨著參數α的增大,IRA算法得出的準確率先緩慢上升然后急劇下降,這意味著隨著參數α的增大,IRA算法得出的節點重要性程度排名的準確性是逐漸下降的,因此后續文章默認該值為1。
IRA 算法同時考慮節點自身屬性和鄰居節點屬性的影響,提高了重要節點排序的準確性,但IRA 算法在對葉子節點的重要性排序中往往表現較差。這是由于在資源分配的過程中,網絡的局域現象干擾了算法的準確性,未考慮節點的傳播屬性可能會對資源分配的結果產生影響。因此,文獻[10]引入節點的傳播概率,提出了改進的資源分配算法IIRA。在IIRA算法的資源分配過程中,節點獲得的資源值不僅與節點自身和鄰居節點的屬性信息有關,還受到傳播概率和鄰居節點數目的影響。

對于給定的無向無權網絡G=(V,E),IIRA 算法公式如下:其中,IIRA 值用來衡量每個節點的重要程度,IIRAi(t)表示第t個時間步節點vi的IIRA 值。式(2)中除ψi外各符號與IRA算法中相同。ψi表示節點所受到的傳播屬性的影響,具體含義為:

其中,β為傳播概率;di為節點vi的度,定義為:

IIRA算法大致流程為:首先將所有節點的IIRA 值都初始化為1,然后按照式(2)迭代更新IIRA 值直至其穩定,最后得到的資源值就代表了各節點的重要程度。改進后的IIRA算法準確性比IRA算法有了進一步的提高。
IRA算法體系可以應用于許多中心性算法,并提高這些中心性算法的性能。但這樣會使得排序的結果很大程度上依賴于輸入的中心性指標,只能有限地提升算法的準確度,難以突破這些中心性指標的局限。
在實際的社交網絡中,人們往往有著復雜的關系。從傳播學的角度來說,消息在不同節點之間的傳播能力是不同的。例如在消息網絡中,消息往往更容易在有著相同興趣愛好的小圈子里快速傳播,換句話說,它們更為相似。在社交網絡中,節點之間的相似程度也可以用來刻畫節點之間的消息傳播效率。傳統的中心性指標是無法衡量這種相似程度的,也是不夠準確的,因此提出一種新的指標來替代原有的中心性指標作為資源分配算法的輸入很有必要。正是基于上述原因提出SBRA算法,用節點之間的相似性指標代替中心性作為IIRA算法的輸入,通過節點之間相似性的比例來分配資源,使得算法更適用于社交網絡。
SBRA 算法的核心思想是計算節點之間的余弦相似度,并根據節點間的相似性指標占比作為資源分配的依據,進行迭代資源分配,最后穩定后的資源值就是節點的重要程度。
對于給定的無向無權網絡G=(V,E),在迭代開始前,將節點的資源值全部初始化為1,使用Node2vec[15]模型將網絡節點表示成向量形式,并根據向量的余弦相似度得出相似性矩陣M。相似性矩陣M中的元素mij的計算方法如下:

其中,mij為節點vi與節點vj的余弦相似度,vector(vi)表示節點vi的向量,‖ ‖vector(vi) 表示節點vi的向量模長,余弦相似度的范圍為[-1,1]。在資源分配的過程中,要以相似度的占比來分配資源,其中的零值和負值的相似度是無法參與計算的,在實際的社交網絡中也是不合乎邏輯的。因此對相似度的值進行修正,將余弦相似度的值整體加1 并乘上0.5,使節點的相似度修正到[0,1]的區間,得到修正后的相似性矩陣S,既便于計算,又符合通常的認知。矩陣S中的元素sij為:

其中,sij為節點vi與節點vj修正后的余弦相似度。
初始化完成后,開始資源迭代分配。在每輪的迭代過程中,每個節點的資源值更新為其所有相鄰節點為其分配的資源值總和,而資源分配的依據就是節點間的相似性指標占比。用Ii(t)表示第t輪資源迭代節點vi的資源值,則每輪迭代節點vi獲得的資源可以表示為:

除sij外各符號與IRA算法體系一致。

可以進一步寫成矩陣形式:矩陣W中的元素wij為:

可以將資源矩陣W看作一個對角陣D左乘矩陣T得到的矩陣,式(8)則可以改寫為:

其中對角陣D可表示為:

可知tij≥0 且∑itij=1,根據圓盤定理[16],當t趨于無窮時,Tt將收斂于一個常數矩陣,而矩陣左乘一個對角陣只會使其行乘上一個倍數,又由于矩陣D中的元素取值均在(0,1]區間,因此資源值的變化量會無限趨近于零值,也就是說存在一個足夠小的ε,且ε >0,當I(t)在t趨于無窮時收斂,滿足 |I(t)-I(t-1)|<ε,經過若干輪迭代后,資源值一定會達到穩定狀態。
具體來看,SBRA算法的過程如下:
(1)計算出資源矩陣W并初始化資源值I(0)=(1,1,…,1)T。
(2)按I(t+1)=W·I(t)或I(t)=Wt·I(0)的方式更新第t輪迭代節點的資源值。
(3)重復步驟(2),直到所有節點的資源值穩定,即滿足 |I(t)-I(t-1)|<ε,令ε=10-6。
以圖1中的網絡a來詳細說明SBRA算法。其中有5個節點和5條邊,在初始階段,將其資源值全部設為1,即I(0)=(1,1,…,1)T,經過建模可以得到節點的向量表示,將修正的節點之間的余弦相似度作為資源分配的依據,假設傳播概率β為0.8,則資源分配矩陣W為:


圖1 具有5個節點的網絡示例Fig.1 Network examples with 5 nodes
因為SBRA算法中對角陣的存在,節點資源值會隨著迭代不斷變少,所以將每輪迭代后的資源值總量重新等比放大到初始化時的資源總量。如圖2所示,可以看到經過迭代,網絡a中的每個節點的資源變化值最終趨于0,表示資源值達到穩定狀態。

圖2 SBRA算法下網絡a節點資源變化值Fig.2 Node resource change value in Network a with SBRA algorithm
在網絡a的基礎上得到網絡b、網絡c、網絡d。同樣設置修正的余弦相似度作為資源分配依據,并將資源迭代后的結果放縮到合適的區間,可以得出網絡節點最終的資源值。如表1所示,隨著節點2、3、4節點度的增大,節點1在網絡中的重要性比重逐漸減弱,這樣的結果也是符合通常認知的。

表1 SBRA算法在圖1中網絡各節點迭代穩定的資源值Table 1 Iterative stable resource value of each node of networks in Fig.1 with SBRA algorithm
IIRA 算法在設計之初就存在一個假設,即只有直接相連的節點之間才會存在資源的傳遞。但無論網絡中的節點是否直接相連,其影響力的傳播都是存在的,只是影響力的傳播距離越遠,對節點影響就越小。資源分配的過程也應該考慮到非直接相連的節點的資源流動情況。因此將LeaderRank 算法的背景節點思想引入SBRA算法,提出了L-SBRA算法。
L-SBRA算法就是在SBRA算法的基礎上在網絡中加入一個背景節點。首先將背景節點和原網絡中的每個節點建立連邊,然后通過連邊關系將相鄰節點分配的資源值迭代更新到每個節點上,直到每個節點的資源值都達到穩定狀態,再將背景節點的資源值按照輸入指標的占比分配給原網絡中的每個節點,此時節點的資源值大小即可作為節點重要性排序的指標。
對于給定的無權無向網絡G=(V,E),加入背景節點vb形成新的網絡Ge,網絡Ge的鄰接矩陣U中的元素用uij表示,若網絡Ge中的節點vi和vj有連邊則uij=1,反之若沒有連邊則uij=0。并將新的網絡除背景節點外的資源值全部初始化為1,背景節點的資源值初始化為0。若用Ie表示網絡Ge節點的資源值,則Ie=[1,1,…,1,0]T。
對于節點相似性來說,在加入背景節點后,由于背景節點與原網絡中的所有節點都相連,在建模時從每個節點隨機游走到該節點的概率都很大,即背景節點和所有節點的相似度都很高,這就會導致在資源迭代時大量的資源流動到背景節點。這樣的結果違背了設計算法的初衷,即希望只有少量的資源通過背景節點,用以表示資源在高階鄰居節點間的流動。因此用原網絡G中所有節點對之間相似度的平均值sˉ作為背景節點與其余各節點的相似度。可得相似性矩陣S′,其中矩陣中元素s′ij為:

初始化完成后,開始進行資源迭代。用Iei(t)表示第t輪迭代網絡Ge中的節點vi的資源值,那么每輪迭代網絡Ge的節點資源值可以表示為:

可以進一步寫成矩陣形式:

矩陣H中的元素hij為:

同樣可以證明,當迭代次數t足夠大時,節點的資源值會趨于穩定。最后,將背景節點的資源值按照各節點與背景節點修正的余弦相似度比重分給原網絡中的各個節點,便可以計算出節點vi的最終資源值:

其中,sib指網絡Ge中節點vi與背景節點vb修正后的余弦相似度。
具體來看,L-SBRA算法的過程如下:
(1)網絡G中加入背景節點vb形成網絡Ge,計算出資源矩陣H并初始化資源值Ie=[1,1,…,1,0]T,其中背景節點的資源值為0。
(2)按Ie(t+1)=H·Ie(t)或Ie(t)=Ht·Ie(0)的方式更新第t輪迭代節點的資源值。
(3)重復步驟(2),直到所有節點的資源值穩定,即滿足 |Ie(t)-Ie(t-1)|<ε,令ε=10-6。
(4)將背景節點的資源值按照各節點與背景節點修正的余弦相似度比重分給其他節點,得到各節點的最終資源值Ii(t)。
同樣以圖1 中的網絡a 來詳細說明L-SBRA 算法。在初始階段,加入背景節點并將資源值初始化Ie(0)=(1,1,…,1,0)T,假設傳播概率β為0.8,則資源分配矩陣H為:

因為節點的資源值最終會收斂到一個穩定的狀態,所以將每輪迭代后的資源值總量重新等比放大到初始化時的資源總量。如圖3 所示,可以看到經過迭代,網絡a 中的每個節點的資源變化值最終趨于0,資源值達到穩定狀態。

圖3 L-SBRA算法下網絡a節點資源變化值Fig.3 Node resource change value in Network a with L-SBRA algorithm
同樣對圖1的4個網絡設置修正的余弦相似度值作為算法的輸入,假設傳播概率β為0.8,并將資源迭代后的結果放縮到合適的區間,可以得出網絡節點最終的資源值。如表2所示,隨著網絡節點2、3、4連邊的增多,節點1 重要性不斷降低,而連邊變化后節點3、4、5 的重要性始終未超過節點1,在網絡b 中節點3 的連邊多于節點2和4,因此重要性高于節點2和4,與預期一致。

表2 L-SBRA算法在圖1中網絡各節點迭代穩定的資源值Table 2 Iterative stable resource value of each node of networks in Fig.1 with L-SBRA algorithm
本文設計了對比實驗來展示和分析IIRA、SBRA及L-SBRA算法的有效性和優越性。
實驗采用基于傳播動力學的SIR模型[17]作為評價標準,以某一節點在一定時間感染的節點數來衡量該節點在網絡中的重要程度。為了刻畫節點重要性排序算法的準確度,采用不精確函數(Inaccu function)和Kendall系數[18]來表示排序結果和節點真實影響力之間的關系。
不精確函數是通過計算關鍵節點挖掘算法得出來的關鍵性排名里比較靠前的關鍵節點的平均傳播能力,進而判定挖掘算法準確性的函數,其計算方法為:

其中,εalg(p)表示通過重要性排序算法alg 得出的網絡中重要程度排前pN個節點的影響力與網絡中真實傳播能力排前pN個節點的影響力區別。Malg(p)表示算法得出的前pN個節點在一定的時間步感染的節點數,Meff(p)表示網絡中真實傳播能力排前pN個節點的在相同時間步感染的節點數。這里的p為選取網絡中節點的比例,0<p <1,N為網絡總節點數。若Malg(p)與Meff(p)越接近,則不精確函數εalg(p)值越小,表示算法的結果精確度越高。
Kendall 系數τ可以用來表示兩個序列之間的相關程度,用這個指標來評價重要性排序算法得到的結果與節點的真實影響力之間的相關性,其具體計算方法為:

其中,N為網絡節點總數,xi表示節點vi的真實影響力,即SIR模型模擬的影響力,yi表示排序算法計算出的節點vi影響力。sgn(x)為符號函數,當x >0,時sgn(x)=1,當x <0 時,sgn(x)=-1,當x=0 時,sgn(x)=0。算法準確性越高則τ值越大。
為了驗證算法的有效性和優越性,本文數據集采用了US Airline網絡、Email網絡和Hamster用戶網絡。三個網絡均為無權無向網絡,網絡的基本參數如表3 所示。其中N為網絡節點數,M為網絡邊數,<k >為網絡平均度,r為網絡的同配系數,C為網絡的平均聚集系數。

表3 網絡數據集參數Table 3 Network dataset parameters
設置SIR模型的傳播率為0.2,恢復率為0.1,分別以DC、EC、CC、K-shell值作為IIRA算法的輸入,兩種算法中節點間的傳播概率β取0.8,使用Node2vec算法來對網絡結構建模。經過迭代可以得到兩個算法在各網絡中的不精確函數和Kendall 系數。
如圖4、圖5所示,在US Airline網絡中,SBRA算法表現和以DC、EC、CC中心性指標為輸入的IIRA算法精確度相當,明顯優于以K-shell指標為輸入的IIRA算法。

圖4 US Airline數據集不同輸入指標的Kendall系數Fig.4 Kendall coefficients of different input indicators in US Airline dataset

圖5 US Airline數據集不同輸入指標的不精確函數Fig.5 Inaccu function of different input indicators in US Airline dataset
如圖6、圖7所示,在Email網絡中,兩種算法的表現和在US Airline中相似,SBRA算法和以DC、EC、CC中心性指標為輸入的IIRA 算法精確度相當,顯著優于以K-shell指標為輸入的IIRA算法。

圖6 Email數據集不同輸入指標的Kendall系數Fig.6 Kendall coefficients of different input indicators in Email dataset

圖7 Email數據集不同輸入指標的不精確函數Fig.7 Inaccu function of different input indicators in Email dataset
在圖4 到圖7 中,無論是以哪種中心性指標作為輸入,IIRA 算法和SBRA 算法在迭代100 次前的Kendall系數都可以趨于穩定。在US Airline網絡和Email網絡中以DC、EC 和CC 中心性指標作為輸入的IIRA 算法Kendall 系數和SBRA 算法穩定后的Kendall 系數都十分接近,不精確函數也基本重合。兩種算法的Kendall系數接近說明在這兩個網絡中,兩種算法的精確度基本一致,基本重合的不精確函數說明導致出現結果差異的節點影響力十分接近,它們之間的影響力差別基本可以忽略不計。以K-shell值作為輸入的IIRA算法中,SBRA算法明顯結果更優。出現這一現象的原因在于IIRA算法精度依賴于輸入的中心性指標,而K-shell 值本身并不精確。
如圖8、圖9所示,在Hamster網絡中,SBRA算法在第25次迭代之后就已穩定,其精確度均高于IIRA算法,明顯優于以EC 中心性指標和以K-shell 指標為輸入的IIRA 算法。SBRA 算法和以DC 中心性指標為輸入的IIRA 算法在影響力排前7%的節點精確度相當,在超過7%節點后顯著優于IIRA 算法,和以CC 中心性指標為輸入的IIRA 算法在影響力排前14%的節點精確度相當,在超過14%的節點以后明顯優于IIRA 算法。可以看到,SBRA算法不僅收斂速度更快,而且精度更高、更穩定。

圖8 Hamster數據集不同輸入指標的Kendall系數Fig.8 Kendall coefficients of different input indicators in Hamster dataset

圖9 Hamster數據集不同輸入指標的不精確函數Fig.9 Inaccu function of different input indicators in Hamster dataset
通過IIRA 算法和SBRA 算法的對比實驗可以看出,在三個不同網絡中兩種算法的表現并不相同。IIRA算法的精度很大程度上受輸入的中心性指標影響。如圖10、圖11所示,將SBRA算法迭代穩定后的資源值作為IIRA算法的輸入重新迭代,算法的精度下降,可以說明SBRA 算法已經接近了IRA 算法體系的精度上限。兩種算法在Hamster網絡中SBRA的表現更好,已經可以說明以節點相似度作為輸入要比以中心性指標作為輸入進行資源迭代更加合理。在US Airline網絡和Email網絡中兩種算法精度相當,是由于這兩個網絡的節點數較少,中心性指標的誤差不至于影響到節點的重要性排序情況,因此兩種算法都能準確地識別到關鍵節點。

圖10 IIRA重新迭代SBRA穩定后資源的三個網絡的Kendall系數Fig.10 Kendall coefficients of three networks when IIRA re-iterates resources after SBRA stabilization

圖11 IIRA重新迭代SBRA穩定后資源的三個網絡的不精確函數Fig.11 Inaccu function of three networks when IIRA re-iterates resources after SBRA stabilization
通過對比實驗可以得出,在節點數量較多的情況下SBRA 算法的精度要高于IIRA 算法。在時間方面,以CC 中心性指標為輸入的IIRA 算法雖然有一定的精確度,但由于要計算CC中心性指標,算法的復雜度隨著網絡規模的增大呈指數級上升,對于大型網絡來說這樣的計算成本是不可接受的,相對而言SBRA算法計算復雜度要小得多。在算力成本不斷下降的今天,SBRA算法的復雜度仍然是可以承擔得起的。但這并不說明在較少節點情況下SBRA 算法是沒有意義的。由于IIRA 算法有多種輸入,并不能確定用哪種輸入可以得到最準確的排序結果。而SBRA 算法在小型網絡中雖然排序精度并不會提升,但其排序結果與IIRA 算法最精確的排序結果相當,免去了選擇輸入指標的麻煩。因此可以得出SBRA算法優于IIRA算法的結論。
設置SIR模型的傳播率為0.2,恢復率為0.1,L-SBRA算法和SBRA 算法中節點間的傳播概率β取0.8,使用Node2vec 算法來對網絡結構建模。經過迭代可以得到兩種算法在各網絡之中的不精確函數和Kendall 系數,如圖12、圖13所示。

圖12 L-SBRA算法與SBRA算法在三個網絡中的Kendall系數Fig.12 Kendall coefficients of L-SBRA algorithm and SBRA algorithm in three networks

圖13 L-SBRA算法與SBRA算法在三個網絡中的不精確函數Fig.13 Inaccu functions of L-SBRA algorithm and SBRA algorithm in three networks
在三個網絡中,L-SBRA算法均在第25次迭代之前趨于穩定,收斂速度均比SBRA 算法快,算法收斂速度加快是由于背景節點的出現使得網絡中的連邊數顯著增多,從而加快了資源流動的速度。在US Airline網絡和Email 網絡中,SBRA 算法和L-SBRA 算法的精確度基本相當。在Hamster 網絡中,在選取節點數量超過網絡節點總數的14%時,L-SBRA 算法精度也有一定的提高。結合算法在三個網絡中的表現同樣可以得出,算法可以同時提高收斂速度和準確度。在US Airline 網絡和Email網絡上算法精度未提高,是因為這兩個網絡規模較小,算法的精度差,不足以影響節點的排序結果。
通過上述對比實驗,可以發現在小型數據集上SBRA算法和L-SBRA 算法都能接近IRA 算法框架的精度上限,而L-SBRA 算法收斂速度更快;在大型數據集上,L-SBRA 算法收斂速度不僅更快,而且準確率也更高。由此可以得出結論,L-SBRA算法要優于SBRA算法。
本文分析了IIRA 算法的不足之處,對IIRA 算法進行改進,使用節點相似性指標替換掉原算法中的中心性指標作為算法的輸入,提出了SBRA算法。并且在SBRA算法的基礎上,引入了LeaderRank算法中背景節點的思想,提出了L-SBRA算法。這兩種改進算法考慮了非直接相連節點間的傳播情況,更加符合社交網絡的實際情況,也更加合理。通過設置以四種中心性指標為輸入的IIRA算法與SBRA算法的對比實驗,展示了在三個真實網絡中兩種算法的表現,并分析出現結果差異的原因,證明了相似性作為算法輸入的合理性。設置L-SBRA算法和SBRA算法的對比實驗,展示了在三個不同真實網絡中兩種算法的表現,并分析了兩種算法精度和收斂速度出現不同的原因,證明了L-SBRA算法的優越性。
本文網絡建模部分使用了Node2vec 模型,而該模型產生隨機游走序列時只考慮了連接關系,而在實際的社交網絡中,節點的屬性信息也應該對該隨機游走序列產生一定影響。另外,本文研究的對象為靜態無權無向網絡,而在真實的社交網絡中,還存在更為復雜的結構,并且網絡的拓撲結構也是變化的。因此在未來的研究中,可以考慮修改隨機游走序列的產生規則,讓生成的隨機游走序列包含節點的屬性信息,以及考慮到網絡結構的動態變化,使得算法更加適用于真實的社交網絡。