無向網絡節點重要性指標
度中心性(Degrree centrality)
房地產行業有一個眾所周知的黃金法則:地段、地段、還是地段。也就是說,一套房子的價值首先要看這套房子所在的地段。
把這一黃金法則搬到復雜網絡上就成為:位置、位置、還是位置。也就是說,網絡中一個節點的價值首先取決於這個節點在網絡中所處的位置,位置越中心的節點其價值也越大。
這就是關於節點中心性指標的研究,它在不同的領域都具有重要意義。
例如:
- 在各種社會關系網絡(如你的朋友圈子、BBS 和微博等在線社區)中,哪些是最活躍、最具影響力的人?
- 在艾滋病等疾病傳播網絡中,哪些人是最危險的?
- 在通信網絡和交通網絡中,哪些節點承受的流量最大?
- 當你在搜索引擎中輸人一個關鍵詞后,搜索引擎是如何知道哪些頁面對你是最重要的,從而應該排在最前面顯示給你?
諸如此類的問題都與如何刻畫節點在網絡中所處的位置有關。
在社會網絡分析中,常用“中心性(Centrality)"來判斷網絡中節點重要性或影響力。最直接的度量是度中心性(Degrree centrality),即一個節點的度越大就意味着這個節點越重要。
這一指標背后的假設是:重要的節點就是擁有許多連接的節點。你的社會關系越多,你的影響力就越強。
度一個包含N個節點的網絡中,節點最大可能的度值為N–1
在大多數社會網絡中,結點的度遵守冪律分布——度很大的結點的數量只占一個網絡中結點總數量的少部分,而度較小的結點的數量卻占大多數。這些度較大的結點自然比同一網絡中的其他結點發揮着更大的作用。因此,可以認為它們是更重要的節點。
節點的度中心性可以定義為:
當需要比較不同網絡中的結點的重要性時,可對度中心性的值實施規范化:
度為\(d_i\)的節點的歸一化的度中心性值定義為:
其中,N表示節點\(v_i\)所屬網絡中節點的總數量。
介數中心性(Betweeness centrality)
從每塊中的任一節點到其他某塊中的任一節點的最短路徑必然要經過節點H。
這種以經過某個節點的最短路徑的數目來刻畫節點重要性的指標就稱為介數中心性(Betweeness centrality),簡稱介數(BC)。
也就是說,計算網絡中任意兩個節點的所有最短路徑,如果這些最短路徑中很多條都經過了某個節點,那么就認為這個節點的介中心性高。
節點的介數(betweenness)表示一個網絡中經過該結點的最短路徑的數量
在一個網絡中,節點的介數越大,那么它在結點間的通信中所起的作用也越大
具體地,節點i的介數定義為:
其中,
\(σ_{st}\)表示為從節點 s 到節點 t 的最短路徑的總數量,
\(σ_{st}(v_i)\)表示這些最短路徑中經過結點\(v_i\)的路徑的數量。
介數的定義最早由Freeman於1977年給出",它刻畫了節點i對於網絡中節點對之間沿着最短路徑傳輸信息的控制能力。
從控制信息傳輸的角度而言,介數越高的節點其重要性也越大,去除這些節點后對網絡傳輸的影響也越大。盡管在實際網絡中,節點對之間的傳輸頻率並不都一樣,而且也並非所有的傳輸都是基於最短路徑的,介數仍然近似刻畫了節點對網絡上信息流動的影響力。
舉例:
一個包含9個用戶和14個聯系的社會網絡。
在圖中所示的網絡中有 \(σ_{19}\)=2。
這是因為在 節點1 和 節點9 之間有兩條最短路徑:1-4-5-7-9 和 1-4-6-7-9。
因此有 \(σ_{19}(4)\)=2 和 \(σ_{19}(5)\)=1,從而可以得到\(BC(4)\) = 1,\(BC(5)\) = 0.5。
這在圖中體現為:從結點集合{1,2,3}到結點集合{5,6,7, 8}的所有最短路徑都需要經過結點4。
緊密中心性(Closeness centrality)
點度中心性僅僅利用了網絡的局部特征,即節點的連接數有多少,但一個人連接數多,並不代表他/她處於網絡的核心位置。
緊密中心性和中介中心性一樣,都利用了整個網絡的特征,即一個節點在整個結構中所處的位置。
緊密中心性(Closeness centrality)也稱接近中心性
緊密度中心性與非中心結點相比,一個中心結點應該能更快地到達網絡內的其他結點。
即:如果節點到圖中其他節點的最短距離都很小,那么它的接近中心性就很高。相比中介中心性,接近中心性更接近幾何上的中心位置。
緊密度中心性用於評價一個結點到其他所有結點的緊密程度。
緊密度中心性需要計算一個結點到網絡內其他所有結點的平均距離:
其中,N 表示結點\(v_i\)所屬網絡中的結點的總數量,\(g(v_i,v_j)\)表示結點\(v_i\)和\(v_j\)的最短距離(geodesic distance)。
這個平均距離可以理解為信息從結點\(v_i\)出發到達整個網絡中所有結點所需要的時間。
通常,一個具有較高中心性的結點比其他結點更重要,因此,緊密度中心性的值定義為這個平均距離的倒數:
舉例:
一個包含9個用戶和14個聯系的社會網絡。
結點對之間的距離(pairwise distance)可用下表表示:
因此節點3和節點4的緊密度中心性的計算如下:
由於\(C_c(4)>C_c(3)\),所以認為節點4比節點3更中心。
特征向量中心性( Eigenvector centrality)
特征向量中心性(Eigenvector centrality)的基本想法是:
一個節點的重要性既取決於其鄰居節點的數量(即該節點的度),也取決於其鄰居節點的重要性。
換句話說,在一個網絡中,如果一個人擁有很多重要的朋友,那么他也將是非常重要的。
特征向量中心性和度中心性不同,一個度中心性高即擁有很多連接的節點,特征向量中心性不一定高,因為所有的連接者有可能特征向量中心性很低。同理,特征向量中心性高並不意味着它的點度中心性高,它擁有很少但很重要的連接者也可以擁有高特征向量中心性。
記 \(x_i\) 為節點i的重要性度量值,那么,應該有
其中c為一比列常數,A=\((a_{ij})\) 是網絡的鄰接矩陣。記 \(x = [x_1 ~ x_2 ~ ... ~ x_N]^T\)
舉例:
【1】
假設一個這樣的圖:
其對對應的鄰接矩陣為:(鄰接矩陣的含義是,如果兩個節點沒有直接連接,記為0,否則記為1)
現在考慮 \(x\) ,一個 5x1 的向量,向量的值對應圖中的每個點。在這種情況下,我們計算的是每個點的點度中心性(degree centrality),即以點的連接數來衡量中心性的高低。
矩陣A乘以這個向量\(x\)的結果是一個 5x1 的向量:
結果向量,可以理解為向量的第一個元素是用矩陣A的第一行去“獲取”每一個與第一個點有連接的點的值(連接數,點度中心性),也就是第2個、第3個和第4個點的值,然后將它們加起來。
換句話說,鄰接矩陣做的事情是將相鄰節點的求和值重新分配給每個點。這樣做的結果就是“擴散了”點度中心性。你的朋友的朋友越多,你的特征向量中心性就越高。
我們繼續用矩陣A乘以結果向量。如何理解呢?
實際上,我們允許這一中心性數值再次沿着圖的邊界“擴散”。我們會觀察到兩個方向上的擴散(點既給予也收獲相鄰節點)。我們猜測,這一過程最后會達到一個平衡,特定點收獲的數量會和它給予相鄰節點的數量取得平衡。既然我們僅僅是累加,數值會越來越大,但我們最終會到達一個點,各個節點在整體中的比例會保持穩定。
現在把所有點的數值構成的向量用更一般的形式表示:
我們認為,圖中的點存在一個數值集合,對於它,用矩陣A去乘不會改變向量各個數值的相對大小。也就是說,它的數值會變大,但乘以的是同一個因子。用數學符號表示就是:
滿足這一屬性的向量就是矩陣M的特征向量。特征向量的元素就是圖中每個點的特征向量中心性。
【2】
一個包含9個用戶和14個聯系的社會網絡。
根據特征向量中心性的定義,就可以知道集合{4,5,6,7}中的結點的重要性在該網絡中為最大。
k-殼與k-核
一種粗粒化的節點重要性分類方法,即k-殼分解方法(K-shelldecomposition method )。
不妨假設網絡中不存在度值為0的孤立節點。這樣從度中心性的角度看,度為1的節點就是網絡中最不重要的節點。
如果我們把所有度值為Ⅰ的節點以及與這些節點相連的邊都去掉會怎么樣?
這時網絡中可能又會出現一些新的度值為1的節點,我們就再把這些節點及其相連的邊去掉,重復這種操作,直至網絡中不再有度值為1的節點為止。
這種操作形象上相當於剝去了網絡的最外面一層殼,
我們就把所有這些被去除的節點以及它們之間的連邊稱為網絡的1-殼(1-shell)。
有時,網絡中度為 0 的孤立節點也稱為 0-殼(0-shell)。
在剝去了 1-殼 后的新網絡中的每個節點的度值至少為2。
接下來我們可以繼續剝殼操作,即重復把網絡中度值為2的節點及其相連的邊去掉直至不再有度值為2的節點為止。
我們把這一輪所有被去除的節點及它們之間的連邊稱為網絡的2-殼(2-shell)。
依次類推,可以進一步得到指標更高的殼,直至網絡中的每一個節點最后都被划分到相應的k-殼中,就得到了網絡的k-殼分解。
網絡中的每一個節點對應於唯一的 k-殼 指標\(K_s\),並且 \(K_s\)-殼 中所包含的節點的度值必然滿足 k≥\(K_s\)。
上圖顯示的是一個可分解為三層殼的簡單網絡。
圖(b)—(d)分別顯示了 1-殼 ,2-殼 和 3-殼 所包含的節點和邊。
該網絡中有兩個度值最大的節點,即圖中的黑色節點和白色節點,它們的度值都是 k =8,但是具有不同的\(K_s\)值:
黑色節點位於最里層,\(K_s\) =3;白色節點位於最外層\(K_s\) =1。
實際網絡也會出現類似的情形:
度大的節點既可能具有較大的\(K_s\)值從而位於 k-殼分解 的核心內層,也有可能具有較小的\(K_s\)值而位於k-殼分解的外層,從而使得對於某些問題而言,度大的節點未必是重要的節點。
在得到一個網絡的 k-殼 分解之后,我們
把所有\(K_s\)≥K 的 K-殼 的並集稱為網絡的k-核(K-core)
把指標\(K_s\)≤K 的 K-殼 的並集稱為網絡的k-皮(K-crust)
k-核的一個等價定義是:
它是一個網絡中所有度值不小於 K 的節點組成的連通片。
基於這一定義,我們可以按照如下方法得到k-核:
首先去除網絡中度值小於K的所有節點及其連邊;如果在剩下的節點中仍然有度值小於K的節點,那么就繼續去除這些節點,直至網絡中剩下的節點的度值都不小於K。依次取K = 1,2,3,...,對原始網絡重復這種去除操作,就得到了該網絡的 k-核分解(k-core decomposition)。
對於一個連通網絡,1-核實際上就是整個網絡,(k + 1)-核一定是K-核的子集。
參考:
[1] 汪小帆,李翔,陳關榮.網絡科學導論[M].北京:高等教育出版社,2012
[2] (美)唐磊( Lei Tang)等著;文益民,閉應洲譯.社會計算:社區發現和社會媒體挖掘[M].機械工業出版社:北京,2012
[3] https://blog.csdn.net/yyl424525/article/details/103108506