基于链接密度聚类的重叠社区发现算法

基于链接密度聚类的重叠社区发现算法

文章发表时间:2013年12月

1. 传统社区算法的局限性

传统社区算法是将网络划分为若干各互不相连的社区,每个节点都必须隶属与唯一的社区,然而,在实际的社交网络中,各个社区之间通常不是彼此孤立的,而是彼此重叠,互相交叉的,也就是说在社交网络中,有一些节点不仅仅只包含在一个社区内,他可以隶属于多个社区,例如每个人可以根据不同的分类方法可以属于多个不同社区(如:学校,家庭,地域等).因此,研究具有重叠性结构的社区具有更加实际的意义.

2. DBLINK 算法

2.1 算法思想

首先,以网络中的边集为主要对象,采用基于密度的聚类算法将网络边集划分为若干个互不相连的离散社区,其目的一方面是发现网络中高质量的链接社区,另一方面是识别网络中不属于任何链接社区的孤立边;其次,将链接社区转化为节点社区,若2条边共享同一个节点,且这2条边分别隶属于不同的链接社区,则该节点自然成为连接不同社区的重叠节点.

2.2 相关工作

  1. 社交网络的定义 节点的集合V、边的集合E、节点数 n、边数 m、边的表示e=(u,v)
  2. 基于链接的重叠社区发现算法LINK的核心步骤是对边集 E 进行聚类,将其划分为若干个子集,LCS={LC_i},其中,任意的i,j,LC_i∩LC_j=ф, ∑ LC_i =E,若两条边存在一个公共节点,则这两条便存在相似度,相似度的定义为:
    基于链接密度聚类的重叠社区发现算法_第1张图片
  3. LINK算法采用单链接凝聚层次聚类算法对边集 E 进行聚类,初始时,将各条边分别看作一个单独的链接社区,然后不断合并相似度最高的两个链接社区,直到满足下式的目标函数为止:
    基于链接密度聚类的重叠社区发现算法_第2张图片
  4. LINK算法的第二步是将链接聚类的结果转化为最终的节点社区集合,同意链接社区内的边所连接的节点都被分配到同一个社区之中,若存在2 条边分别属于不同的链接社区,且这2 条边拥有一个公共节点,则该公共节点为链接2 个社区 的重叠节点,如下图所示:
    基于链接密度聚类的重叠社区发现算法_第3张图片
    在图中,{0,1,2,3,4,5}{6,7,8,9}分别表示两个社区,其中节点5 为重叠节点,LINK 算法将边的集合划分为3 个链接社区,其中边(1,7)单独形成一个链接社区,从图中可以看出,节点5由于被两个社区重叠,所以该节点自然而然地成为这两个社区的重叠节点
  5. LINK 算法具有直观,易理解以及时间效率高等优点,但是,由于将所有的边都划分到特定的链接社区中,所以容易形成网络社区“过度重叠”的现象。

2.3 算法定义

**定义1. ** e = (u,v) 的邻居N(e)是指分别与节点 u 和节点 v 相连且不包括边 e 的边的集合;

定义2. 给定阈值ε,e的 ε 邻域 N_ε(e)是指在e的邻居中与e的相似度大于或等于ε的边的集合;

**定义3. **给定参数 ε 和 μ,e称为核心边当且仅当e的ε邻域中边的个数大于或等于 μ;

**定义4. **给定参数 ε 和 μ,当e为一个核心边且 l 属于e的 ε 邻域时,称l直接密度可达于e,直接密度可达是一种非对称的关系,只有当2条边都是核心边时才满足对称关系;

**定义5. **给定参数 ε 和 μ,若存在 一条边链e_i , e_i+1 , … , e_j,令e=e_i,l=e_j,且满足任意的e_i+1直接密度可达于e_i(i<j), 则称l密度可达于e,密度可达具有传递性,其本质上是直接密度可达的一个传递闭包,但对于两条不都是核心的边来说同样不具备对称性;

**定义6. **给定参数 ε 和 μ ,边e和l是密度相连的当且仅当存在边t,e和 l 都密度可达于t密度相连具有对称性,即若边e和 l 密度相连,则 l 和e也是密度相连的,密度相连具有对称性,即若边e和 l 密度相连,则 l 和e也是密度相连的.

**定义7. **给定参数 ε 和 μ ,链接社区 LC 是指一个非空的边子集,该子集满足如下条件:

基于链接密度聚类的重叠社区发现算法_第4张图片

**定义8. **节点社区 C是指对应的链接社区 LC 中所有的边连接的节点

**定义9.**若存在连接同一节点 v 的2条边分别隶属于不同的链接社区时,节点 v称为一个重叠节点。

基于链接密度聚类的重叠社区发现算法_第5张图片

2.4 算法流程

2.4.1 阶段一:对边集进行聚类,构造链接社区集合 LCS

  • 首先将所有的边都设置为未分类,
  • 然后遍历网络中所有未分类的边 e,
  • 判断 e 是否是一个核心边
    • e 为核心边,则找出所有e密度相连的边,构造链接社区 LC,并将其加入 LCS 中
    • e 不是核心边,则将 e 看作孤立边。

2.4.2 阶段二:将链接社区集合 LCS 转化为相应的节点社区 CS

遍历 LCS ,对其中每个链接社区 LC ,创建对应的节点社区 C,并将LC中任意的边所连接的 2 个节点均匀加入之社区 C 中,若某个节点分别被加入至多两个社区中,则该节点为重叠节点。

2.4.3 算法伪代码

算法1. 基于连接密度聚类的重叠社区发现算法DBLINK

基于链接密度聚类的重叠社区发现算法_第6张图片

基于链接密度聚类的重叠社区发现算法_第7张图片

算法2. 是算法1中函数FindLinkComm的伪代码,目的是找出所有与e密度相连的边集合,构造相应的LC

  • 首先将 C 添加到队列 Q 中;
  • 取出队列 Q 中的队首元素 x ;
  • 计算与 x 直接密度可达的边集 R;
  • 遍历 R 中所有的边
    • 若边 l 没有被分类,则将 l 同时添加到链接社区 LC 和队列 Q 中
    • 若边 l 未曾被访问过,且不是一个核心边,则仅将 l 添加到链接社区 LC 中
  • 将队首元素 x 从队列 Q 中删除

将上述步骤迭代运行,直到队列 Q 中的元素集合为空,此时所得的结果便是函数结果。

参数 ε 和 μ 可以取值0.5,4

基于链接密度聚类的重叠社区发现算法_第8张图片
基于链接密度聚类的重叠社区发现算法_第9张图片

可以取值0.5,4***

基于链接密度聚类的重叠社区发现算法_第10张图片
基于链接密度聚类的重叠社区发现算法_第11张图片

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