【从零开始】CS224W-图机器学习 学习笔记4.2:Community Structure in Networks(2)——BigCLAM算法

课程主页:CS224W | Home
课程视频链接:【斯坦福】CS224W:图机器学习( 中英字幕 | 2019秋)

文章目录

1  前言

2  重叠社团发现算法——BigCLAM算法

2.1 算法主要步骤

2.2 AGM模型(Community-Affiliation Graph Model)

2.3  算法思路:通过拟合图来发现社团

2.4  BigCLAM算法

3  总结

4  参考资料


1  前言

上一节介绍了模块度Q和Louvain算法,Louvain算法适用于不重叠的(Non-overlapping)社团发现,但是我们现实生活中很多社团其实是存在重叠的(Overlapping),反映在邻接矩阵上如下图:

【从零开始】CS224W-图机器学习 学习笔记4.2:Community Structure in Networks(2)——BigCLAM算法_第1张图片

 下面就介绍另一种重叠的社团发现算法——BigCLAM算法。

2  重叠社团发现算法——BigCLAM算法

2.1 算法主要步骤

  • 第一步:定义一个基于节点-社团隶属关系的生成图的模型(Community Affiliation Graph Model (AGM))
  • 第二步:给定一个图G,假设其由AGM模型生成,迭代找到能生成最接近图G的AGM模型
  • 通过这种方式,我们就能发现图中的社团。

2.2 AGM模型(Community-Affiliation Graph Model)

通过节点-社区隶属关系(左图)生成相应的网络(右图)。

参数:节点V,社区C ,成员关系M,每个社区C有个概率p_{c}表示社区c内的节点之间生成边的概率

【从零开始】CS224W-图机器学习 学习笔记4.2:Community Structure in Networks(2)——BigCLAM算法_第2张图片

这样,对与属于多个社团的节点对,其相连概率就是:

p\left ( u,v \right )=1-\prod_{c\epsilon M_{u}\bigcap M_{v}}^{}(1-p_{c})

对于该公式进行分类讨论,可得到:

  • 当两个节点在同一个社区c时,即只有一种成员关系M_{u}时,节点之间以p_{c}的概率进行相连:

 p\left ( u,v \right )=1-\prod_{c\epsilon M_{u}}^{}(1-p_{c})=1-\left ( 1-p_{c} \right )=p_{c}

  • 当两个节点不属于同一个社区时,节点之间没有边进行相连:

p\left ( u,v \right )=1-(1-0)=0

注:这看起来并不合理,所以会假设有一个“epsilon”社区,所有节点都属于它,但是epsilon会很小。这样,任意两个节点之间都会有一个很小的概率能建立连接,即p\left ( u,v \right )=\varepsilon

  • 当两个节点属于两个社区时,即存在两种不同成员关系M_{u}M_{v}时:

【从零开始】CS224W-图机器学习 学习笔记4.2:Community Structure in Networks(2)——BigCLAM算法_第3张图片

注:因为p_{c1}p_{c2}都小于1,所以p\left ( u,v \right )一定大于p_{c1}p_{c2}。从社交网络上理解,就是两个人所处的共同圈子越多,他们认识的可能性就越大。

AMG模型是在重叠社区挖掘的时候引入的,但并不意味着AMG模型只能生成有重叠社区的网络。事实上,其非常灵活,可以生成不同类型的社团结构:

【从零开始】CS224W-图机器学习 学习笔记4.2:Community Structure in Networks(2)——BigCLAM算法_第4张图片

2.3  算法思路:通过拟合图来发现社团

社团发现的过程其实正是构建上述节点-社团隶属关系的二分图模型的过程,即上文“用AMG模型生成图”过程的逆过程。也就是说,给定一个图G,我们需要找到一个二分图模型F,且得到相关的参数。

【从零开始】CS224W-图机器学习 学习笔记4.2:Community Structure in Networks(2)——BigCLAM算法_第5张图片

解决这个问题的思路关键在于:已知真实图G,找到模型F,使得由F生成的图和真实的图G尽量接近,也就是使得G关于F的条件概率最大,也就是极大似然估计(Maximum Likelihood Estimation,MLE)。

【从零开始】CS224W-图机器学习 学习笔记4.2:Community Structure in Networks(2)——BigCLAM算法_第6张图片

那么,我们就需要找到一个计算条件概率P\left ( G\mid F \right )的高效的方法,并遍历模型F,其中条件概率 P\left ( G\mid F \right )最大的模型F就是我们需要的社团结构。

【从零开始】CS224W-图机器学习 学习笔记4.2:Community Structure in Networks(2)——BigCLAM算法_第7张图片

在AGM算法中,p\left ( u,v \right )表示的是两个结点之间产生连边的概率。在真实网络G中,两点相连的时候p\left ( u,v \right )=1,两点不相连的时候 p\left ( u,v \right )=0。在模型F中,为了让它更贴合真实网络G,我们希望相连的两点之间的概率尽可能大,不相连的两点之间的概率尽可能小。这样就得到我们的目标函数:

【从零开始】CS224W-图机器学习 学习笔记4.2:Community Structure in Networks(2)——BigCLAM算法_第8张图片

有边就乘以产生连边的概率p\left ( u,v \right ),没有边乘以不产生连边的概率,即1-p\left ( u,v \right ),不断更新F的参数,就使得P\left ( G\mid F \right )的增大,使F模型生成的G越来越接近给定的真实的G。

而BigCLAM算法的思想也是一样的,但是在概率p\left ( u,v \right )和目标函数的形式上做了改进,增加了成员关系M上的权重。

2.4  BigCLAM算法

和AGM模型相比,BigCLAM模型在AGM的基础上进行了松弛(Relax),即增添了成员关系强度。

定义一个参量F{_{uA}},表示节点u属于社团A的成员关系的强度。对于AGM的二部图,每个节点u和社团之间的成员关系M转变成一个向量F{_{uA}}。向量的维度是社团的数量,比如有3个社团就是3维。 u属于的社团对应的位置就是1,不属于的社团就是0。

【从零开始】CS224W-图机器学习 学习笔记4.2:Community Structure in Networks(2)——BigCLAM算法_第9张图片

由此,我们就可以重新定义社团c内节点间的连接概率p_{c}

P_{c}\left ( u,v \right )=1-exp\left ( -F_{uC}\cdot F_{vC}\right )

在这个式子中,因为F_{uC}\cdot F_{vC}\geq 0,所以有exp\left ( -F_{uC}\cdot F_{vC}\right )\leq 1,使得0\leq P_{c}\left ( u,v \right )\leq 1,另外,在这个式子中可能出现的两种特殊情况:

【从零开始】CS224W-图机器学习 学习笔记4.2:Community Structure in Networks(2)——BigCLAM算法_第10张图片

​​​​​​​得到新的P_{c}\left ( u,v \right )​​​​​​​后,我们就可以进一步扩展P\left ( u,v \right ):(连乘放到幂里变成连加)

【从零开始】CS224W-图机器学习 学习笔记4.2:Community Structure in Networks(2)——BigCLAM算法_第11张图片

 注:因为社团的数量可能会很多,所以这里用\Gamma表示所有社团的集合。

再把得到的P\left ( u,v \right )带入到P\left ( G\mid F \right )公式中,得到:

【从零开始】CS224W-图机器学习 学习笔记4.2:Community Structure in Networks(2)——BigCLAM算法_第12张图片

再将此结果取对数,得到我们的目标函数l \left ( F \right )

【从零开始】CS224W-图机器学习 学习笔记4.2:Community Structure in Networks(2)——BigCLAM算法_第13张图片

 使用梯度上升的方法来优化目标函数的参数,使log-likelihood提升:​​​​​​​(下面这个公式的推导太复杂了,我也没推出来,先放一个Jure的推导结果)

【从零开始】CS224W-图机器学习 学习笔记4.2:Community Structure in Networks(2)——BigCLAM算法_第14张图片

注: 在Jure的课件里,F还可以通过训练一个GNN模型来获得,这就是Neural Overlapping Community Detection (NOCD)的key idea,但是因为时间关系,Jure没有继续介绍。先Mark一下,等学完GNN再回来补充吧!

当我们找到了F,就可以生成想要的重叠社团,进而完成了我们的社区发现任务。

3  总结

BigCLAM定义了一个模型,可生成重叠社团结构的网络。给定一个图,BigCLAM的参数(每个节点的成员关系强度)可以通过最大化对数似然估计得到。

4  参考资料

http://snap.stanford.edu/class/cs224w-2019/slides/04-communities.pdf

​​​​​​​社区发现算法——BigCLAM 算法_东方小虾米的博客-CSDN博客_bigclam

cs224w 图神经网络 学习笔记(五)Community Structure in Networks_喵木木的博客-CSDN博客

你可能感兴趣的:(CS224W,图机器学习,笔记,机器学习,人工智能,算法)