天天看點

拓端tecdat|R語言網絡社群檢測(社群發現)分析女性參加社交活動和社群節點着色可視化

在網絡上進行社群檢測時,有時我們不僅擁有實體之間的聯系。這些實體代表了我們可能也想在網絡可視化中代表的現實事物。

1.   
2.  plot(g)
3.      
拓端tecdat|R語言網絡社群檢測(社群發現)分析女性參加社交活動和社群節點着色可視化

我使用資料集,代表了觀察到的 18 位女性參加 14 場社交活動的情況。

不考慮這個圖是二向圖,讓我們嘗試将圖劃分為社群。有自然的分界線嗎?讓我們根據節點所屬的社群為節點着色:

1.  community(g)
2.  col <- membership + 1
3.  plot      
拓端tecdat|R語言網絡社群檢測(社群發現)分析女性參加社交活動和社群節點着色可視化

正如我們所看到的,該算法找到了2個社群,乍一看,這種劃分似乎是合理的。無論如何,還有一種自然的劃分是算法無法找到的:事件/女性的二進制關系。每個節點都有這樣的屬性:"是女性 "或 "是事件"。讓我們用不同的方式來描述這個圖的特征。我們有14個事件。對于這些,我們改變它們的形狀。 

1.  shape <- "squa"
2.  shape <- "cice"
3.  plot(g)      
拓端tecdat|R語言網絡社群檢測(社群發現)分析女性參加社交活動和社群節點着色可視化

如何從給定的網絡中提取社群?

在網絡中尋找社群是複雜系統範式下的一項常見任務。有幾種方法可以使用非常不同的包對圖進行社群分區。

網絡社群檢測算法

walktrap.community

該算法通過執行随機遊走找到密集連接配接的子圖。這個想法是随機遊走将傾向于留在社群内,而不是跳到其他社群。

邊緣.中間.社群

這個算法就是Girvan-Newman算法。它是一種分割算法,在每一步中,具有最高間性的邊被從圖中移除。對于每一次劃分,你都可以計算出圖的子產品化程度。最後,在這個過程給你帶來最高子產品化值的地方選擇切割樹狀圖。

Newman快速算法(fast greedy)

該算法是紐曼算法。在這種情況下,算法是凝聚的。在每一步,兩組合并。合并是通過優化子產品化決定的。這是一種快速算法,但有一個貪婪算法的缺點。是以,雖然我發現它有用且準确,但它可能不會産生最佳的整體社群劃分。

自旋玻璃社群發現

該算法使用自旋玻璃模型和模拟退火來查找網絡内的社群。

1.   
2.  # 首先我們加載ipgrah軟體包
3.   
4.   
5.  # 讓我們生成兩個網絡并将其合并為一個圖。
6.  graph.union
7.   
8.  # 讓我們删除多線和循環
9.  simplify
10.   
11.  # 讓我們用Grivan-Newman算法看看這裡是否有社群。
12.  # Grivan-Newman算法
13.  # 首先,我們計算邊緣間性、合并等。
14.  edge.betweenness.community
15.   
16.  # 現在我們有了合并/拆分,我們需要計算子產品化。
17.  # 對于每個合并,我們将使用一個函數,對于每個邊被删除,将建立第二個圖,檢查其成員資格并使用該成員資格來計算子產品化程度
18.  membership
19.  # -在原圖g上計算子產品化
20.  modularit
21.   
22.  # 我們現在可以繪制所有子產品化的圖
23.  plot
24.   
25.  # 現在,讓我們根據節點的成員資格為其着色
26.  removed.edges
27.  color=membership
28.   
29.  # 讓我們為圖選擇一個布局
30.  layout
31.   
32.  # 繪制
33.  plot
34.   
35.  # 使用 fastgreedy.community算法
36.   
37.  plot
38.      
拓端tecdat|R語言網絡社群檢測(社群發現)分析女性參加社交活動和社群節點着色可視化