コミュニティた(2) - GN

転送:https://blog.csdn.net/aspirinvagrant/article/details/45599071

GNアルゴリズム

アルゴリズムの詳細は、を参照してください検索および評価は、ネットワーク(ニューマンとガーバン)における地域コミュニティの構造を示します

キーコンセプト

エッジ間隔度(間隔度):このエッジを通る最短経路のネットワーク数の任意の2つのノード。


GNアルゴリズムのアイデア:

ネットワークでは、側面の内部を通る最短経路は、比較的小さなコミュニティであり、コミュニティ間の最短経路の辺の数で比較的大きいです図は、辺の数の分布を示し、誘電強度は、実際のネットワークとなります。GNアルゴリズムは、エッジの類似法の数の尺度としてのメディアの使用原則的に、本質的に、クラスタ内のイデオロギーの分割に基づいて、エッジ削除に基づくアルゴリズムです。GNアルゴリズムでは、各削除する照会側縁の高い数を選択し、ランダムに削除さよりもはるかに高速ネットワークを分割する時期分割のネットワーク側。


次のようにステップGNアルゴリズムが動作する: 
(1)誘電体のそれぞれの側のエッジの数を計算する; 
(2)境界エッジの最大数を削除する; 
残りの側縁(3)ネットワーク再計算順序番号;
(4)を繰り返す(3コミュニティなどのネットワークまでの各頂点まで)及び(4)ステップ、。

GNアルゴリズム例:


GN算法计算边界数的时间复杂度为 O(m*n),总时间复杂度在m条边和n个节点的网络下为 O(m2*n)。
GN算法的缺陷:
(1)不知道最后会有多少个社区;
(2)在计算边介数的时候可能会有很对重复计算最短路径的情况,时间复杂度太高;
(3)GN算法不能判断算法终止位置。
为了解决这些问题,Newman引入了模块度Q的概念,它用来一个评价社区结构划分的质量。网络中的社区结构之间的边数并不是绝对数量上的少,而是应该比期望的边数要少。关于模块度的概念请参考
社区划分的标准--模块度

GN算法具体实现借助基于R的图挖掘库
igraph
数据集为Karate数据集:
Zachary空手道俱乐部成员关系网络是复杂网络、社会学分析等领域中最常用的一个小型检测网络之一。从1970到1972年,Zachary观察了美国一所大学空手道俱乐部成员间的社会关系,并构造出了34个成员,78条成员关系的社会关系网。两个成员经常一起出现在俱乐部活动之外的其他场合,就认为两个成员间有边。该俱乐部因为主管(节点34)与教练(节点1)之间的争执而分裂成2个各自为核心的小俱乐部。结构如下图所示。具体请参考
An information flow model for conflict and fission in small groups

GN算法的R分析代码

> library("igraph")
> karate  <-  graph.famous("Zachary")
> ebc <- edge.betweenness.community(karate)
> ebc
Graph community structure calculated with the edge betweenness algorithm
Number of communities (best split): 5 
Modularity (best split): 0.4012985 
Membership vector:
 [1] 1 1 2 1 3 3 3 1 4 5 3 1 1 1 4 4 3 1 4 1 4 1 4 4 2 2 4 2 2 4 4 2 4 4
> modularity(ebc)
[1] 0.4012985
> membership(ebc)
 [1] 1 1 2 1 3 3 3 1 4 5 3 1 1 1 4 4 3 1 4 1 4 1 4 4 2 2 4 2 2 4 4 2 4 4
> plot(ebc,karate)


Newman快速算法 

本算法的具体内容请参考
Fast algorithm for detecting community structure in networks(Newman)

GN算法通过模块度可以准确的划分网络,但它只适用于中小型规模的网络。Newman提出一种基于贪心的快速社区发现算法,算法的基本思想是:首先将网络中的每个顶点设为一个单独社区,然后选出使得模块度Q的增值最大的社区对进行合并;如果网络中的顶点属于同一个社区,则停止合并过程。整个过程是自底向上的过程,且这个过程最终得到一个树图,即树的叶子节点表示网络中的顶点,树的每一层切分对应着网络的某个具体划分,从树图的所有层次划分中选择模块度值最大的划分作为网络的有效划分。

设网络有n个节点,m条边,每一步合并对应的社区数目为r,组成一个r*r矩阵e,矩阵元素eij表示社区i中的节点与社区j中节点之间连边的数目在网络总变数的百分比。

主要步骤:

(1) 初始化网络,开始网络有n 个社区,初始化的eij和ai为:


(2)依次按照∆Q的最大或者最小的方向进行合并有边相连的社区对,并计算合并后的模块度增量∆Q:


(3)合并社区对以后修改对社区对称矩阵e 和社区i和j对应的行列;

(4)重复执行步骤(2)和(3),不断合并社区,直至整个网络合并成一个社区为止。

Newman快速算法的R分析代码

>  karate  <-  graph.famous("Zachary")
>  fc  <-  fastgreedy.community(karate)
>  dendPlot(fc)


参考资料:

Social and Information Network Analysis Jure Leskovec, Stanford University





おすすめ

転載: blog.csdn.net/App_12062011/article/details/91353346