1. 程式人生 > >[Network Analysis] 複雜網路分析總結

[Network Analysis] 複雜網路分析總結

  在我們的現實生活中,許多複雜系統都可以建模成一種複雜網路進行分析,比如常見的電力網路、航空網路、交通網路、計算機網路以及社交網路等等。複雜網路不僅是一種資料的表現形式,它同樣也是一種科學研究的手段。複雜網路方面的研究目前受到了廣泛的關注和研究,尤其是隨著各種線上社交平臺的蓬勃發展,各領域對於線上社交網路的研究也越來越火。研究生期間,本人的研究方向也是一直與複雜網路打交道,現在馬上就要畢業了,寫一篇博文簡單介紹一下複雜網路特點以及一些有關複雜網路研究內容的介紹,希望感興趣的博友可以一起討論,一起學習。

  下圖分別是一個航空網路(上圖)和Facebook網路全球友誼圖(下圖)。

1. 複雜網路的特點

  錢學森對於複雜網路給出了一種嚴格的定義:具有自組織、自相似、吸引子、小世界、無標度中部分或全部性質的網路稱之為複雜網路。言外之意,複雜網路就是指一種呈現高度複雜性的網路,其特點主要具體體現在如下幾個方面:

  1.1 小世界特性

  小世界特性(Small world theory)又被稱之為是六度空間理論或者是六度分割理論(Six degrees of separation)。小世界特性指出:社交網路中的任何一個成員和任何一個陌生人之間所間隔的人不會超過六個,如下圖所示:

  在考慮網路特徵的時候,通常使用兩個特徵來衡量網路:   特徵路徑長度(characteristic path length):
在網路中,任選兩個節點,連通這兩個節點的最少邊數,定義為這兩個節點的路徑長度,網路中所有節點對的路徑長度的平均值,定義為網路的特徵路徑長度。這是網路的全域性特徵。
  聚合係數(clustering coefficient):假設某個節點有$k$條邊,則這$k$條邊連線的節點($k$個)之間最多可能存在的邊的條數為$k(k-1)/2$,用實際存在的邊數除以最多可能存在的邊數得到的分數值,定義為這個節點的聚合係數。所有節點的聚合係數的均值定義為網路的聚合係數。聚合係數是網路的區域性特徵,反映了相鄰兩個人之間朋友圈子的重合度,即該節點的朋友之間也是朋友的程度。   對於規則網路,任意兩個點(個體)之間的特徵路徑長度長(通過多少個體聯絡在一起),但聚合係數高(你是朋友的朋友的朋友的機率高)。對於隨機網路,任意兩個點之間的特徵路徑長度短,但聚合係數低。而小世界網路,點之間特徵路徑長度小,接近隨機網路,而聚合係數依舊相當高,接近規則網路。
  複雜網路的小世界特性跟網路中的資訊傳播有著密切的聯絡。實際的社會、生態、等網路都是小世界網路,在這樣的系統裡,資訊傳遞速度快,並且少量改變幾個連線,就可以劇烈地改變網路的效能,如對已存在的網路進行調整,如蜂窩電話網,改動很少幾條線路,就可以顯著提高效能。

  1.2 無標度特性

  現實世界的網路大部分都不是隨機網路,少數的節點往往擁有大量的連線,而大部分節點卻很少,節點的度數分佈符合冪率分佈,而這就被稱為是網路的無標度特性(Scale-free)。將度分佈符合冪律分佈的複雜網路稱為無標度網路。

  下圖為一個具有10萬個節點的BA無標度網路的度數分佈示意圖:

  無標度特性反映了複雜網路具有嚴重的異質性,其各節點之間的連線狀況(度數)具有嚴重的不均勻分佈性:網路中少數稱之為Hub點的節點擁有極其多的連線,而大多數節點只有很少量的連線。少數Hub點對無標度網路的執行起著主導的作用。從廣義上說,無標度網路的無標度性是描述大量複雜系統整體上嚴重不均勻分佈的一種內在性質。

  其實複雜網路的無標度特性與網路的魯棒性分析具有密切的關係。無標度網路中冪律分佈特性的存在極大地提高了高度數節點存在的可能性,因此,無標度網路同時顯現出針對隨機故障的魯棒性和針對蓄意攻擊的脆弱性。這種魯棒且脆弱性對網路容錯和抗攻擊能力有很大影響。研究表明,無標度網路具有很強的容錯性,但是對基於節點度值的選擇性攻擊而言,其抗攻擊能力相當差,高度數節點的存在極大地削弱了網路的魯棒性,一個惡意攻擊者只需選擇攻擊網路很少的一部分高度數節點,就能使網路迅速癱瘓。

  1.3 社群結構特性

  人以類聚,物以群分。複雜網路中的節點往往也呈現出叢集特性。例如,社會網路中總是存在熟人圈或朋友圈,其中每個成員都認識其他成員。叢集程度的意義是網路集團化的程度;這是一種網路的內聚傾向。連通集團概念反映的是一個大網路中各集聚的小網路分佈和相互聯絡的狀況。例如,它可以反映這個朋友圈與另一個朋友圈的相互關係。

  下圖為網路聚集現象的一種描述:

2. 社群檢測

  社群檢測(community detection)又被稱為是社群發現,它是用來揭示網路聚集行為的一種技術。社群檢測實際就是一種網路聚類的方法,這裡的“社群”在文獻中並沒有一種嚴格的定義,我們可以將其理解為一類具有相同特性的節點的集合。近年來,社群檢測得到了快速的發展,這主要是由於複雜網路領域中的大牛Newman提出了一種模組度(modularity)的概念,從而使得網路社區劃分的優劣可以有一個明確的評價指標來衡量。一個網路不通情況下的社區劃分對應不同的模組度,模組度越大,對應的社區劃分也就越合理;如果模組度越小,則對應的網路社區劃分也就越模糊。

  下圖描述了網路中的社群結構:

  Newman提出的模組度計算公式如下:

$Q=1/(2m) \sum_{ij}(A_{ij}-k_{i}k_{j}/(2m)) \delta(C_{i},C_{j})$

其中$m$為網路中總的邊數,$A$是網路對應的鄰接矩陣,$A_{ij}=1$代表節點$i$和節點$j$之間存在連邊,否則不存在連邊。$k_{i}$為節點$i$的度數,$C_{i}$為節點$i$屬於某個社群的標號,而$\delta(C_{i},C_{j})=1$當且僅當$C_{i}=C_{j}$。

  上述的模組度定義其實很好理解,我們可以根據一個網路的空模型去進行理解。網路的空模型可以理解為只有節點的而沒有連邊,這時候一個節點可以和圖中的任意其他節點相連,並且節點$i$和$j$相連的概率可以通過計算得到。隨機選擇一個節點與節點$i$相連的概率為$k_{j}/2m$,隨機選擇一個節點與節點$j$相連的概率為$k_{j}/2m$,那麼節點$i$和節點$j$相連的概率為$p_{i}p_{j}=k_{i}k_{j}/(4m^{2})$,邊數的期望值$P_{ij}=2mp_{i}p_{j}=k_{i}k_{j}/(2m)$。所以模組度其實就是指一個網路在某種社區劃分下與隨機網路的差異,因為隨機網路並不具有社群結構,對應的差異越大說明該社區劃分越好。

  Newman提出的模組度具有兩方面的意義:

  (1)模組度的提出成為了社群檢測評價一種常用指標,它是度量網路社區劃分優劣的量化指標;

  (2)模組度的提出極大地促進了各種優化演算法應用於社群檢測領域的發展。在模組度的基礎之上,許多優化演算法以模組度為優化的目標方程進行優化,從而使得目標函式達到最大時得到不錯的社區劃分結果。

  當然,模組度的概念不是絕對合理的,它也有弊端,比如解析度限制問題等,後期國內學者在模組度的基礎上提出了模組度密度的概念,可以很好的解決模組度的弊端,這裡就不詳細介紹了。

  常用的社群檢測方法主要有如下幾種:

  (1)基於圖分割的方法,如Kernighan-Lin演算法,譜平分法等;

  (2)基於層次聚類的方法,如GN演算法、Newman快速演算法等;

  (3)基於模組度優化的方法,如貪婪演算法、模擬退火演算法、Memetic演算法、PSO演算法、進化多目標優化演算法等。

3. 結構平衡

  結構平衡(Structural Balance)主要是針對社交網路的研究而被提出的,它最早源於社會心理學家Heider提出的一個結構平衡理論。

3.1 網路平衡的發展

  網路平衡有時也稱社會平衡(Social Balance),就網路平衡的發展來說,我們可以將其分為三個發展階段。
  3.1.1 網路平衡理論的提出
  “網路平衡”一詞最早是由Heider基於對社會心理學的研究而提出的,Heider在1946年的文章Attitudes and cognitive organization[1]中針對網路平衡的概念提出了最早的平衡理論:
  (1)朋友的朋友是朋友;
  (2)朋友的敵人是敵人;
  (3)敵人的朋友是敵人;
  (4)敵人的敵人是朋友。
  用常見的三元組合來表示上述的Heider理論如下:

  上述的平衡理論是有關網路平衡提出的最早的理論,它後來也被稱為是強平衡理論。

  1956年,Cartwright和Harary對Heider的平衡理論進行了推廣,並將其用在了圖理論中(STRUCTURAL BALANCE: A GENERALIZATION OF HEIDER'S THEORY[2])。Cartwright和Harary指出對於一個符號網路而言,網路平衡的充要條件是網路中的所有三元組都是平衡的,該結論也可以陳述為一個符號網路平衡的充要條件是它所包含的所有迴路(cycles)都是平衡的(“-”號的個數為整數個)。而且,在這篇文章中,他們還提出了著名的結構平衡理論:如果一個符號網路是平衡的,那麼這個網路就可以分為兩部分子網路,其中每個子網路內部中節點的連線都是正連線,網路之間的連線均為負連線。

  在這各階段網路平衡的發展的重心主要在於構建網路平衡的心理學和社會學模型。

  3.1.2 網路平衡的數學模型

  在有了Heider等人的奠基工作後,有關網路平衡的發展主要是構建其數學模型,比如網路的動態表現,一個網路連線如何隨時間的變化而變化,網路中節點之間的朋友或者敵人的關係如何演化等等。

  3.1.3 網路平衡的應用

  最新關於網路平衡方面的研究大都是研究一些線上網路,比如對某個網站使用者屬性的分析等等。而且,目前我們身處大資料時代,我們所要研究的網路規模也變為了大型甚至可以說是超大型網路,這這個背景下,如何計算一個網路是否平衡便成為該領域的主要熱點問題。

  3.2 網路平衡的基本理論

  (1) Heider理論(強平衡理論SBT)。

  (2) 結構平衡理論(Structural Balance Theroem):在完全符號網路中,網路平衡的充要條件是其所有的三元組(迴路)都平衡。

  結構平衡的推論:一個完全符號網路平衡的充要條件是它可以被分為兩部分X和Y,X和Y內部的節點連線均為正連線,X和Y之間的連線均為負連線。

  (3) 弱平衡理論(A weaker form of structural balance,WSBT):如果完全符號網路中不存在這樣的三元組:兩個邊為正,一邊為負,則該網路稱為是弱平衡網路。

  對於弱平衡理論而言,上圖的三元組中,三邊均為負連線的三元組也屬於平衡三元組,也就是三元組的四種情況有三種屬於平衡狀態,一個屬於不平衡狀態(兩邊為正,一邊為負)。

  弱平衡網路推論:如果一個網路為弱平衡理論,那麼它可以分為多個部分,每部分內的連線為正,部分之間的連線為負。

  (4) 對任意網路平衡的定義.

  1) 對於一個任意網路而言,如果我們可以將它所缺失的邊填充使它成為一個平衡的完全符號網路,那麼原網路就是平衡網路;
  2) 對於一個任意網路而言,如果我們可以將它分為兩部分,使得每個部分內的連線均為實線,部分之間的連線均為虛線。
  以上的兩種定義是等價的。
  一個符號網路平衡的充要條件是它不包括含有奇數個負連線的迴路。

  (5) 近似平衡網路(略)。

  3.3 網路平衡的計算(A spectral algorithm for computing social balance)
  命題1:節點i參與的三元組數目

  A為鄰接矩陣,元素取值可能為:1,-1,0;
  G為鄰接矩陣,元素取值可能為:0,1.
  命題2:對於節點i而言,bi為其參與的平衡三元組數目,ui為其參與的不平衡三元組數目,則

  理論1:對於完全符號圖而言,

  平衡三元組所佔的比例為

  理論2:對於任意符號網路,平衡三元組所佔的比例為

  
  注:以上兩個計算網路平衡的公式中,特徵值可以隨大到小選擇前幾個比較大的,就像PCA那樣,這樣可以使得計算的複雜度大大減小。

4. 影響最大化

  隨著各種線上社交平臺的發展,社交平臺(比如QQ、微博、朋友圈等)已經不僅僅是一種使用者進行溝通的社交平臺,它們更是社會資訊產生和傳播的一種主要的媒介。影響最大化(Influence Maximization)同結構平衡一樣,也是針對社會網路的研究而被提出的,它來源於經濟學的市場營銷。2001年,影響最大化被Domins首次以一種演算法問題的形式被提出。而影響最大化受到廣泛的關注是在2003年Kempe等人在當年的KDD會議上發表的一篇有關影響最大化的論文之後,隨後各種影響最大化演算法被迅速提出,最近的十幾年裡,影響最大化的相關文章達到了上千篇,可見這個問題還是很值得關注的。

  影響最大化問題可以這樣來描述:一個商家或者企業利用一種社交平臺(比如為新浪微博)為自己的新產品或者新服務進行推廣,如何在資金有限的情況下僱傭微博達人來做推廣可以使得推廣範圍達到最大?

  我們再給出影響最大化的一般定義:

  給定一個網路$G$和一個整數$K$(一般小於50),如何在$G$中找出$K$個節點,使得這$K$的節點組成的節點集合$S$的影響傳播範圍$\sigma(S)$達到最大。

  根據上述影響最大化的定義我們很容易可以知道,影響最大化本身屬於一種組合優化問題。常用的影響最大化傳播模型有獨立級聯傳播模型(ICM)和線性閾值傳播模型(LTM)。

  影響最大化方面的主要演算法可以分為如下幾類:

  (1)基於網路中心性的啟發式方法:比如最大度方法、最短平均距離方法、PageRank方法等;

  (2)基於子模組性的貪婪方法:比如最經典的Greedy演算法,CELF演算法以及後來的NewGreedy和CELF++等;

  (3)基於社群結構的方法:比如CGA演算法、CIM演算法等;

  (4)基於目標函式優化的方法:比如模擬退火演算法等。

5. 網路傳播

   網路傳播領域涉及很多方面,比如網路節點重要性排序、網路魯棒性分析、網路資訊爆發閾值優化等。這些領域都很有意思,感興趣的博友可以好好深入研究一下。

6. 補充

  6.1 網路視覺化工具

  首先在這裡推薦兩款我常用的網路視覺化工具:Pajek (點選進入官方網站)、Gephi(點選進入官方網站)。

  下邊為pajek視覺化視窗下的一個網路拓撲結構圖:

  這是Gephi的一個視覺化效果:


  6.2 網路資料集

  常用的一些公開資料集整理:

  Pajek(視覺化工具)資料集:http://vladowiki.fmf.uni-lj.si/doku.php?id=pajek:data:index;

  Newman(複雜網路科學領域大牛)個人資料集:http://www-personal.umich.edu/~mejn/netdata/

  Stanford大學大規模網路資料集:http://snap.stanford.edu/data/

  復旦大學網路資料集整理:http://gdm.fudan.edu.cn/GDMWiki/Wiki.jsp?page=Network%20DataSet

  KONECT資料集整理:http://konect.uni-koblenz.de/

7. 參考文獻

  [8] 任曉龍,呂琳媛. 網路重要節點排序方法綜述. 2014.

相關推薦

[Network Analysis] 複雜網路分析總結

  在我們的現實生活中,許多複雜系統都可以建模成一種複雜網路進行分析,比如常見的電力網路、航空網路、交通網路、計算機網路以及社交網路等等。複雜網路不僅是一種資料的表現形式,它同樣也是一種科學研究的手段。複雜網路方面的研究目前受到了廣泛的關注和研究,尤其是隨著各種線上社交平臺的蓬勃發展,各領域對於線上社交網路的

開源複雜網路分析軟體中社團發現演算法總結

複雜網路研究中的一個重要部分就是社團發現(Community Detection)演算法的研究,密歇根大學物理學系教授Mark Newman就主要在社團發現方面做出了很多貢獻。今天簡單總結一下幾個開源複雜網路分析軟體中的社團發現演算法: 首先是NetworkX,這個軟體非常好用,功能強大,文件清晰。我

【ArcGIS|空間分析|網路分析】0 網路分析總結

文章目錄 網路分析一般步驟 1 配置Network Analyst環境 2 向ArcMap新增網路資料集 3 建立網路分析圖層和新增網路分析物件 網路分析圖層和網路分析物件的關係 網路分析物件屬性欄位

複雜網路複雜網路分析庫NetworkX學習筆記(4):統計指標計算

無論是實際網路還是對模型網路進行分析,都離不開對網路拓撲統計指標的計算。反映網路結構與動力學特性的統計指標有很多,Costa等的Characterization of Complex Networks: A Survey of measurements一文對此有全面的綜述,本文僅介紹一些常用的統計指

複雜網路分析工具及其比較(轉)

剛加入複雜網路圈子,暫時還沒有成熟的研究內容,先發個資料性的東西佔坑: 作複雜網路研究離不開對各種實際或模擬網路的統計、計算、繪圖等工作。對於一般性的工作,我們可以用Pajek、Netdraw和Ucinet等軟體完成。但對一些特殊應用(比如自己開發了一個新模型),現有的軟體不能提供相應的建模或計算功能,

複雜網路分析軟體NetworkX和UCINET資料關聯的方法

最近準備做一些關於ego network分析方面的實驗(也是參考別人論文想到的研究點),發現這方面的測量結果,大家都是用ucinet這個軟體做的,覺得其肯定集成了很多ego network測量的指標。其官網目前在google sites,訪問不了的朋友在這個網址上可以看到其

網路分析(Network Analysis)入門篇(四) 網路的演化——隨機圖模型

目錄 之前的內容,我們瞭解的都是一個靜態的網路,比如在某一個時刻中,網路節點之間的連線關係,而這裡我們要說的是一個動態的網路,即網路的結構隨著時間的變化而變化。這樣的例子在實際中相當的常見,比如分析隨著時間的推移,企業的層次結構是否變得合理了,還是說上半年

Social Network Analysis的Centrality總結,以及networkx實現EigenCentrality,PageRank和KatzCentrality的對比

節點 int nod pos rect arc 分享 http import 本文主要總結近期學習的Social Network Analysis(SNA)中的各種Centrality度量,我暫且翻譯為中心度。本文主要是實戰,理論方面幾乎沒有,因為對於龐大的SNA,我可能連

Relation-Network目標檢測演算法詳細總結分析(one/two-stage)(深度學習)(CVPR 2018)

論文名稱:《 Single-Shot Refinement Neural Network for Object Detection 》 論文下載:https://arxiv.org/abs/1711.06897 論文程式碼:https://github.com/sfzhang1

卷積神經網路時間和空間複雜分析

在深度學習的發展過程中,有意無意中,很多創新點都與改善模型計算複雜度密切相關。 因而,本文對CNN的時間和空間複雜度做以分析。 首先,明確下FLOPS和FLOPs的區別: FLOPS:注意全大寫,是floating point operations per second的縮寫,意指

研究複雜網路1年多,總結

    研究複雜網路1年多,學的不深入,勉強算了解,開門見山,開始內容。     複雜網路的2大特性:無標度和小世界。無標度指網路中少量節點擁有大量的節點好友,小世界指網路中任意2節點之間的距離比較小,滿足六度分離原則(不是真的只有6步,僅僅說明距離很短)。     陸陸

(Paper)Network in Network網路分析

《Network in Network》論文筆記 1.綜述 這篇文章有兩個很重要的觀點: 1×1卷積的使用 文中提出使用mlpconv網路層替代傳統的convolution層。mlp層實際上是卷積加傳統的mlp(多層感知器),因為convoluti

arcgis總結——網路分析服務的釋出以及路徑規劃

       說明:不方便截圖,釋出步驟全文字描述        這裡只說明通過圖層檔案shapefile如何生成network dataset從而釋出網路分析服務,對於通過資料庫的方式這裡不做說明        1、開啟arcCatalog        2、點選選單cu

經典內部排序演算法學習總結(演算法思想、視覺化、Java程式碼實現、改進、複雜分析、穩定性分析)

一、什麼是排序演算法? 排序,顧名思義,就是按照一定的規則排列事物,使之彼此間有序 而排序演算法所要做的工作,就是將資料按照人為制定的比較規則排列好,使資料處於彼此間有序的狀態。 二、為什麼要進行排序? 那為什麼要將資料排序呢?計算機處理速度這麼

【演算法】複雜網路之Networkx——手把手教你構建網路&分析資料

NetworkX是一款Python的開源軟體包,用於創造、操作複雜網路,內建了常用的圖與複雜網路分析演算法,可以方便的進行復雜網路資料分析、模擬建模等工作。功能豐富、簡單易用。一、安裝pip install networkx二、資料構造新建excel表格,輸入鄰接矩陣:第一行代表邊:a-b ,a-c, a-d

一個ArcGIS網路分析的最短路徑例子||A Network Analyst Shortest Route of ArcGIS

這是我前幾年利用ArcMap,ArcCatalog做的最短路徑查詢時候實現的步驟說明記錄,留作後用,時代久遠,很容易忘記,適當做個記錄算是個好習慣吧。 例子是以上海地鐵線路換乘的。 可以實現任意兩點之間的地鐵路線查詢。 主要內容:ArcMap,ArcCatalog,Netw

動態規劃分析總結——怎樣設計和實現動態規劃算法

基於 進一步 使用 sdn 能夠 疑惑 樓梯 -1 們的 進行算法設計的時候,時常有這種體會:假設已經知道一道題目能夠用動態規劃求解,那麽非常easy找到對應的動態規劃算法並實現;動態規劃算法的難度不在於實現,而在於分析和設計—— 首先你得知道這道題目須要用動態規劃來求

常用正則表達式爬取網頁信息及HTML分析總結

logfile mpi 開始 order 標題 ear 爬取網頁 常用 enter Python爬取網頁信息時,經常使用的正則表達式及方法。 1.獲取<tr></tr>標簽之間內容 2.獲取<a href..></a>超鏈接

loadrunner性能計數器分析總結

對象計數 高效 生成 觀察 use sna 實例 快的 結構 loadrunner性能計數器分析總結 Memory: 內存使用情況可能是系統性能中最重要的因素。如果系統“頁交換”頻繁,說明內存不足。“頁交換”是使用稱為“頁面”的單位,將固定大小的代碼和數據塊從 RAM 移動

並發編程(四):ThreadLocal從源碼分析總結到內存泄漏

ngs 一個 交互 而且 當前 logs 點雲 然而 垃圾 一、目錄 1、ThreadLocal是什麽?有什麽用? 2、ThreadLocal源碼簡要總結? 3、ThreadLocal為什麽會導致內存泄漏? 二、ThreadLocal是