读《Finding and evaluating community structure in networks》Newman&Girvan

本文解决的问题是社团的发现,模型是传统的图模型,图中节点代表实体,边代表实体之间的联系。社团community没有一个确切的定义,一般认为社团应具有的特征为社团内部联系紧密,反映到图中是一个边稠密图,社团之间联系松散,如果把一个社团当做一个节点的话,重新形成的图是边稀疏图。

本文首先介绍了社团发现问题的2种基本思想,一是agglomerative methods,凝聚算法,这类方法从一个个孤立的节点开始,计算每两个节点的相似度(按照一定的算法,本文没有介绍),相似度高则这两个节点在同一个社团。这种方法的问题在与社团中核心节点往往具有很高的相似度,但是边缘节点则容易被忽略。另一种社团发现的思想是divisive methods,分裂算法,原始的输入是一个完整的network,我们要做的是一步步删除掉图中的一些边。这里有两个问题要解释清楚:

Q1:为什么要删除边?

A1:删除边并不是要在真实的网络中切断节点之间的已存在的联系,而是为了便于我们寻找图中的社团,也就是属于算法的一部分。

Q2:删除哪些边?

A2:不同的算法会有不同的方式,基于社团的重要特征(社团内部联系紧密,社团之间联系松散),Newman提出删除具有最大"betweenness"的边。

Newman将‘betweenness’解释为连接社团之间(而不是社团内部)节点的度量。我们要做的是找到betweenness最大的边,删除它,直到找出所有community,这是一个循环迭代的过程。Newman提出3种计算betweenness的方法:1.找出网络中每两个节点之间的最短路径,最短路径会有重合的边,那么经过某条边的最短路径重合次数就代表它的betweenness,这种方法在直观上是很容易理解的,比如2个相邻的城市代表2个社团,城市之间有一条主干道,那A城的节点(比如汽车)和B城的节点联系必然要经过这条道路。2和3方法一种是randomwalk betweenness,一种是current-flow betweenness,本质上是一样的,相较于第一种方法,2,3复杂度大而且精确度低,Newman强烈建议使用第一种方法,如果对2,3方法有兴趣的可以去阅读这篇论文,在此不作详细解释。

这篇论文提出的基于删除betweenness最大的边的方法最重要的也是最关键的一点在于“recalculation step”,即每删除一天betweenness最大的边后,要重新计算剩下的图的所有边的betweenness,这确实是一个很需要计算量的过程,但也是该算法的精髓所在:能很大的提高结果的准确性。

接下来介绍计算between的算法,设某一节点为s,计算s到其他所有节点的最短路径,在一个节点之间最短路径唯一的图中,可以由路径与节点形成一棵树,与叶子节点相连的边的betweenness为1,其他的边的betweenness等于所有与之直接相邻的子边的betweenness之和加1.结合betweenness的定义不难理解这一规则。更为复杂的是节点之间最短路径不唯一的情况,首先要计算节点的权重w。节点权重表示从s到该节点最短路径的数目。

1.将起始节点s的w置为1.

2.每个与s相邻的节点的权重w也置为1.

3.对于每一个与2中节点i相邻的节点j,a)若j的权重未被设置,另w(j)=w(i)。b)若w(j)已经存在,另w(j)=w(i)+w(j) 。原算法中还加入距离d的判断更加严谨。

计算得到每个节点的权重之后,计算每条边的betweenness,自底向上,对最底层的节点:只有一条边相连的点,该边betweenness为1,对于一个节点有多条边相连,边的betweenness置为w(i)/w(j),其中i是上方的节点。对上层节点:其与更高一层节点连接的边的betweenness等于所有与之直接相邻的子边的betweenness之和加1(如果该节点只有1个直接与之相连的上层节点),或等于所有与之直接相邻的子边的betweenness之和加1乘1/n(如果该节点有n个直接与之相连的上层节点),见下图:


计算完所有边的betweenness后删除值最大的边,之后需要重新计算剩下的图中所有边的betweenness。重复同样的过程,接下里一个重要的问题是应该循环迭代多少次?或者说应该删除多少条边才能得到我们想要的社团集合?算法的每一次迭代都会产生一些划分,如何评价这样的划分就是我们想要得到的社团呢?Newman接下来介绍社团评价的算法。第一种方法:设想一种划分将原网络划分才成k个社团,构造一个k*k的对称矩阵e,e(ij)代表从i社团的节点到j社团的节点的所有边数。这样e(ii)就代表i社团的所有内部边数。我们希望这个矩阵的迹(即e(11)+e(22)+....)最大,代表了社团的内部联系最大,这是符合社团特征的结果,可以作为社团的评价条件。这种方法有缺陷,比如将整个网络作为一个社团,那自然e是最大的,但这显然不代表整个网络是一个社团。另一个方法是计算下图中的Q,其中a(i)代表i行的所有值的和。注意,矩阵e的每一项值代表的是边数占所有边数的比例。Q的值最终落在0到1之间,并且Q的值越大越好,越能代表真实的社团情况,至于原理,我也没有弄懂这一部分。


最后,给出一个实验验证该算法的准确性。如下图


可以看到,在Q最大的时候最能反映真实的社团情况。


  • 5
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值