社会网络挖掘

本文深入探讨了社会网络中的社区探测,重点介绍了Girvan-Newman算法,包括边介数计算和模块度的概念。同时,讨论了谱聚类方法,如拉普拉斯矩阵在图分割中的应用,以及重叠社区的处理。这些理论和方法在电话网络、邮件网络和合作网络等社会网络分析中具有重要意义。
摘要由CSDN通过智能技术生成

大规模图的分析–社区探测

社区网络存在于现实世界中的各行各业,例如:

  1. 电话网络 。结点代表电话,边的权重由两个结点间的电话数量决定。社区可以是朋友之间形成的,也可以是在同一个公司;
  2. 邮件网络。结点代表邮件地址,双向均有邮件沟通,可以看作是存在边,社区可以按照前面提及的电话网络来看;
  3. 合作网络。结点代表作者,边表示作者之间有合作发表过论文。社区是专注于某一特定课题的作者的集合。社区是专注于某一特定课题的作者的集合。也可以将结点看作文章,边看作是文章之间有共同作者。
    下图,给出了某社交网络,可以看出有不同的圈子(此处也可以叫做社区):高中同学、大学同学、家庭成员等等某社交网络图

Girvan-Newman

在提出Girvan-Newman算法之前,先引入边阶数(Edge betweenness:Number of shortest paths passing over the edge):通过该边的所有路径中,并且该路径是点与点之间的最短路径,最短路径的数量。下图给出了中间边的介数是16,因为 4 ∗ 4 = 16 4*4=16 44=16,左边4个结点和右边4个结点两两之间可以形成一条边。边介数

算法流程

  1. 计算每条边的边介数;
  2. 移除所有边中介数最大的边;
  3. 重新计算每条边的介数;
  4. 重复2-3,直到没有边剩下。

下图给出了某个样例的大致分割流程。
在这里插入图片描述
在这里插入图片描述Girvan-Newman算法的流程和聚类算法中的层次聚类比较类似,现在的问题有两个

  1. 计算每条边的边介数;
  2. 如何选择分割的社区数量;

边介数(betweenness)的计算

边介数的计算过程
  1. 对该图的每一个结点采取BFS搜索策略
  2. 自顶向下,计算该节点到其他结点的最短路径的数量
  3. 自下而上,计算每条边的介数
  4. 重复2-3,直到所有结点均已被作为起始结点
  5. 将最后所求得的每条边的介数除以2
    对A结点进行深度优先遍历
    在这里插入图片描述
    此图中,从A结点到B结点的最短路径只有1条,同理A结点到C结点的最短路径也是1条,F结点从B、C结点均可到达,故从A结点到F结点的最短路径的数量是2条。
    在这里插入图片描述
    计算每条边的介数,从下而上进行,计算的规则为: 当 前 结 点 的 v a l u e = 1 + c h i l d e d g e 的 值 当前结点的value=1+child_edge的值 value=1+childedge
    某个结点往上走有多条边,其边的value分配的比例于其所要达到的顶点的值成比例。例如,对于K结点,其value为1,根据I、J值均为3,故将1等分为2份,均为0.5

模块度(Modularity)

为了衡量社区划分的好坏,引入模块度这个概念来评估,具体可以参见维基百科链接Modularity.
Q ( G , S ) = 1 2 m ∑ s ∈ S ∑ i ∈ s ∑ j ∈ s ( A i j − k i k j 2 m ) Q\left(G,S\right)=\frac{1}{2m}\sum_{s\in S}\sum_{i\in s}\sum_{j\in s}\left(A_{ij}-\frac{k_ik_j}{2m}\right) Q(G,S)=2m1sSisjs(Aij2mkikj)
其中, S S S是将图 G G G分割后形成的社区的集合;
A i j A_{ij} Aij表示结点 i i i与结点 j j j是否相连,若相连,则 A i j = 1 A_{ij}=1 Aij=1,否则 A i j = 0 A_{ij}=0 Aij=0;
k i k_i ki表示结点 i i i的度;
k i k j 2 m \frac{k_ik_j}{2m} 2mkikj表示结点 i i i与结点 j j j随机随机连接产生的边的数目;
( A i j − k i k j 2 m ) \left(A_{ij}-\frac{k_ik_j}{2m}\right) (Aij2mkikj):(# edges within group s) – (expected # edges within group s)

谱聚类(Spectral Clustering)

图的划分(Graph Partitioning)

对图进行划分应该达到以下两个效果。

  1. 子图之间边的数目尽可能少(Minimize the number of between-group connections);
  2. 子图内部边的数目尽可能多(Maximize the number of within-group connections);

n c u t ( A , B ) = c u t ( A , B ) v o l ( A ) + c u t ( A , B ) v o l ( B ) ncut\left(A,B\right)=\frac{cut\left(A,B\right)}{vol\left(A\right)}+\frac{cut\left(A,B\right)}{vol\left(B\right)} ncut(A,B)=vol(A)cut(A,B)+vol(B)cut(A,B)
其中, c u t ( A , B ) cut\left(A,B\right) cut(A,B)表示子图 A A A与子图 B B B之间的割边的数目;
Cut: Set of edges with only one vertex in a group;
v o l ( A ) vol\left(A\right) vol(A):total weight of the edges with at least one endpoint in A A A
v o l ( A ) = ∑ i ∈ A k i vol\left(A\right)=\sum_{i \in A}k_i vol(A)=iAki

谱图分割(Spectral Graph Partitioning)

A x = λ x Ax=\lambda x Ax=λx
其中, A A A为图 G G G的邻接矩阵
注意:上述表达式可以理解为对图 G G G中的 n n n个点进行数据降维,用一个特征向量 x x x来描述这张图。
在特征向量 x x x及其相对应的特征值 λ \lambda λ中,令特征向量 x x x的所有子项中,绝对值最大的项为第 t t t项,并且假设第 t t t项为正数(若第 t t t项不是正数,就将特征向量 x x x变为 − x -x x来处理)。
Proof:
λ x t = ( A x ) t = ∑ y = 1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值