(模块化)Finding and evaluating community structure in net work

模块化:Finding and evaluating community structure in net work

文章发布时间:2004年 模块化的提出

1. 层次聚类技术

旨在发现社会的自然划分。根据顶点之间的相似性或连接强度的各种指标,将网络分组。

1.1 聚集型层次聚类

1.1.1 聚集型层次聚类算法概述

首先计算顶点对之间的相似性,然后将相似度最高的顶点对加入到初为空的网络中,接着逐步根据相似性将边添加到网络之中,这一添加流程可以在任意时刻停止,而且算法从空图到完整的图的整个过程可以用树状图来表示如下图所示,可以通过树的水平切割来表示适合于不同停顿点的社区

(模块化)Finding and evaluating community structure in net work_第1张图片

如图,最下方的叶子节点即社区中的个体(或网络中的节点),可以通过自上而下或自下而上的方式,构建如图的树状图,通过选择合适的切割点,水平切割这棵树,便可得到对应的子树(即:社区)

一个著名的聚集型层次聚类算法的例子是:《R. L. Breiger, S. A. Boorman, and P . Arabie, J. Math. Psychol.12, 328 ~1975!.》

1.1.2聚集型层次聚类算法的缺陷

  1. 常常无法在已知的社区结构的网络中找到正确的社区,这使得在其他情况下对这种算法很难产生足够的信任;
  2. 该算法倾向于寻找社区核心,而忽略了社区边缘。对于核心节点而言,他们具有很强的相似性,所以在算法之初便会链接聚集起来,而对于边缘节点,因为相似性较弱,所以往往会被忽视,导致最终形成的社区中边缘节点不能被放置在正确的位置。

1.2 分裂式层次聚类算法

1.2.1 分裂式层次聚类算法概述

与聚集型层次聚类算法相反,在整个网络中,我们可以从感兴趣的网络开始,找出其中相似性最低的节点对,然后删除该组节点队之间的边,重复此过程,网络便被划分为越来越小的组件,同样,我们可以在任一阶段停止此过程,同样,这一过程也可以使用树状图表示。

2. 算法相关概念

本文采取类似于分裂式层次聚集算法的大致路线,但是在本文所提出的算法中,寻找的并不是连接最弱的节点对,而是寻找网络中“最在”其他顶点之间的边,在某种意义上说,这条边负责连接其他许多的顶点对(因此,这条边不一定是弱的)。

2.1 基于最短路径的中间度量

计算出所有顶点对之间的最短路径,并计算沿着每条边的路径有多少条。

2.1.1 源顶点到其他顶点都只有一条最短路径

通过广度优先搜索,我们可以在时间O(m)内找到从单个顶点 s 到其他所有顶点的最短路径,在最简单的情下,即:从源顶点到到其他顶点之间只有一条最短路径时,所得到的路径集可以用一棵树来表示,如下图所示,我们可以使用这棵树来计算这组路径中的每条边对中间度量的贡献。

(模块化)Finding and evaluating community structure in net work_第2张图片

  1. 找到最短路径树的叶子节点,这些叶子节点表示那些没有其他节点的最短路径经过的顶点;
  2. 令与叶子节点相连的边赋权值:1;
  3. 从树上距离源点最远的边开始,向上计算每条边的权值,计算方法为:1 + 与节点相邻边的权值
  4. 对所有可能的源点 s 重复上述过程,并将每条边的权值相加,从而得到所有顶点对之间的完整最短路径度量值

2.1.2 源点到其他顶点的最短路径不唯一

通常情况下,在大多数网络中,至少有一些顶点对之间的最短路径是不唯一的,则由此构成的最短路径图表示如下:

(模块化)Finding and evaluating community structure in net work_第3张图片

  1. 初始化顶点 s 的距离为:d_s = 0,权值 w_s = 1;
  2. 每个与顶点 s 相邻的节点 i 都给定:d_i = d_s +1,w_i = w_s = 1
  3. 与节点 i 相邻得到节点 j 考虑以下情况:
    • 如果 j 节点还未分配,则 d_j = d_i +1 , w_j = w_i;
    • 如果 j 节点已经分配,且 d_j = d_i +1 ,则 w_j = w_j +w_i;
    • 如果 j 节点已经分配,且 d_j < d_i +1,则无操作
  4. 从最远叶节点 t 开始,与 t 相邻的节点 i 两者之间边的权值为 w_i / w_j
  5. 从顶点 i 到顶点 j 的边,当 j 比 i 离 s 更远时,权值为:(1 + j 的子边权值) · w_i/w_j
  6. 对所有的节点 s 重复上述步骤,并将每条边的权值相加。

2.2 基于随机漫步的中间度量

计算一个特定顶点对之间的随机游走将向下传递特定边的期望净次数,并对所有顶点对求和。

3. 模块化度量方法

3.1 模块化度量流程

  1. N*N 的网络划分为 k 个社区

  2. 定义一个 k * k 的对称矩阵 e,元素e_ij表示网络中连接社区 i 和社区 j 中的节点的所有便的比例(在计算比例的时候,考虑的所有边为原始网络中的所有边,即使在使用结构算法删除掉某些边,也仍使用初始的全局网络计算)

  3. 定义a_i = Σ_j e_ij ,a_i表示行向量(或列向量)第 i 行的和,表示连接到社区 i 中的顶点的边的比例

  4. 模块化的定义公式

    (模块化)Finding and evaluating community structure in net work_第4张图片

    其中II x II 表示矩阵 x 中元素的和

3.2 模块化的补充

  1. 通过模块化度量,计算取得的Q值,当Q -> 0 时,表示社区结构内的边数并不优于随即状态;当Q ->1 时,表示网络具有较强的社区结构;在实践中,Q值一般在0.3~0.7之间
  2. 通常,在沿着树状图往下移动的时候,我们计算网络中每一个社区的 Q 值,并寻找其局部峰值,进而得到预期结论。

你可能感兴趣的:(social,network,算法,聚类)