海量数据挖掘MMDS week3:社交网络之社区检测:基本技巧

http://blog.csdn.net/pipisorry/article/details/49052057

海量数据挖掘Mining Massive Datasets(MMDs) -Jure Leskovec courses学习笔记之社交网络之社区检测:基本技巧-生成模型及其参数的梯度上升方法求解

Communities in Social Networks:  Intuitively, "communities" are sets of individuals in a network like Facebook friends, that have an unusually high density of edges. 

{这篇博客的内容:社区检测的基本技巧部分,覆盖"overlapping communities"寻找最好集合的机器学习技术。直觉是"overlapping communities"就是人们通常属于多个社区,如高中朋友、同事等等}

how the class fits together

海量数据挖掘MMDS week3:社交网络之社区检测:基本技巧

图中社区检测

图中社区示例

通过蛋白质连接结构发现细胞中的功能模块                                                                社交网络(facebook)中的社区发现

海量数据挖掘MMDS week3:社交网络之社区检测:基本技巧        海量数据挖掘MMDS week3:社交网络之社区检测:基本技巧

社区类型

海量数据挖掘MMDS week3:社交网络之社区检测:基本技巧

社区表示

海量数据挖掘MMDS week3:社交网络之社区检测:基本技巧

我们可以将社交网络表示成一个graph adjacency matrix:we can think of a network network is a big matrix where an empty spot means that a given pair of nodes is not connected and a dot means that a given pair of nodes is connected.
从右图中也可以看出:we have two groups overlap, the set of nodes that belongs to both of the groups.They have more edges among themselves.Kind of the shade is darker than the nodes that belong to only one of the groups.So that's kind of the idea that what we want to exploit or how do we want to do this.
概括来说就是the thicker the tiles,the more edges are there in the network.我们要做的就是从networks中将这些tiles分离开来。

皮皮blog

网络生成模型Generative Model for Networks

网络模型

海量数据挖掘MMDS week3:社交网络之社区检测:基本技巧

然后我们就可以通过这个模型进行社区发现。再之后就是要确定什么样的模型是最好的了。

模型会有很多参数,通过估计这些参数,就可以隐含地检测出这些社区。

社区隶属关系图模型AGM(community-affiliation graph model)

海量数据挖掘MMDS week3:社交网络之社区检测:基本技巧

模型中的边M代表社区关系,并且模型也是通过这个4个不同集合的元组唯一确定。

AGM生成Networks过程

AGM如何生成networks的边

海量数据挖掘MMDS week3:社交网络之社区检测:基本技巧 海量数据挖掘MMDS week3:社交网络之社区检测:基本技巧

同一个社区C中的两个个体都有概率Pc生成一个link,而P(u,v)代表u,v两个个体至少有一个共同社区的概率,共同社区越多,其概率值越大。

注意AGM模型中假定个体属于社区是没有权重的,或者说权重都为1。

AGM模型就是以概率P(u,v)在两个点间创建一条边,概率P(u,v)越大越可能生成边。

AGM模型的优势

海量数据挖掘MMDS week3:社交网络之社区检测:基本技巧

Note: Nested: the hierarchy structure of the network.
皮皮blog

BIGCLAM(AGM的relaxed版本)

{简化AGM成BIGCLAM,这样就可以在large networks中检测社区}

带权值Memberships的AGM模型

对原始AGM模型进行relax,重新计算两个个体属于同一社区A的概率P C(u, v)。

海量数据挖掘MMDS week3:社交网络之社区检测:基本技巧

1. 原来u属于社区A是一个0-1的表示,现在表示成一个绳strands,值越高,说明这个个体在社区中越活跃。

2. u,v同时属于社区A的概率PA(u,v)计算公式的直觉知识是,如果两个都与社区A强关联,则两者间的关系就越强。PA(u,v)计算公式的一个重要性质是,如果某个Fu=0,就是u完全不属于社区A,则u,v也是没关联的。

使用因子矩阵Factor Matrix F重新构造P(U, V)

矩阵F就是BIGCLAM模型的表示。

海量数据挖掘MMDS week3:社交网络之社区检测:基本技巧

两个个体u,v生成links的概率表示

海量数据挖掘MMDS week3:社交网络之社区检测:基本技巧

从上式可知,只要估计出矩阵F就可以计算出P(u,v),就可以通过P(u,v)概率生成图中的边。而矩阵F就给出了社区,完成社区检测。

Note: 如果F仅仅是0-1矩阵,则上式P(u, v)计算就是原始AGM模型了。

皮皮blog

解BigCLAM

{给定一个网络G(V,E)我们知道节点和边,要找到这个模型BIGLAM的表示,也就是找到矩阵F}

模型的最大似然估计:使用network G(V, E)估计F矩阵

为了使networks图中存在边的两点其属于同一社区的概率P(u, v)较大,同时不存在边的两点其属于同一社区的概率P(u, v)较小。我们要做的就是最大化下式。

海量数据挖掘MMDS week3:社交网络之社区检测:基本技巧

Note:使用log-likelihood比原始raw函数好的原因:First, it's kind of analytically nice to work with log-likelihood, and second, multiplying small numbers the numerical errors start to add up and start to propagate.If we are summing together small numbers,the numerical errors are not so serious.并且log函数是单调的,所有东西保持不变。

BigCLAM解F版本一:梯度上升

通过邻居neibor来迭代求解F矩阵

海量数据挖掘MMDS week3:社交网络之社区检测:基本技巧

Note:

1. 使用梯度方法的一个假设:认为函数has some kind of convex, smooth shape.并且这里我们是要求最大值而不是最小值,所以会使用梯度上升而不是梯度下降。如果将p(u,v),1-p(u,v)互换应该就可以使用梯度下降了。
2. 这里求梯度是对给定的node进行的,对应F的一行向量Fu。为理解,可以将Fu设成一个标量(数),或者一个一个地看向量Fu的元素怎么求导的就得出了向量形式的求导结果。

3. 这个算法可能导致其中的strands FuC变成负值,每次迭代都要检测并修正。

算法的缺点

海量数据挖掘MMDS week3:社交网络之社区检测:基本技巧

导致这个的原因:由于计算和式(梯度式中第二部分)要遍历给定节点的所有非邻节点,要遍历整个数据。

BigCLAM解F版本二:cache缓存加速

缓存F中所有行的向量行和,就是将F所有行加起来。

海量数据挖掘MMDS week3:社交网络之社区检测:基本技巧

BigClam的伸缩性scalability

海量数据挖掘MMDS week3:社交网络之社区检测:基本技巧

更多关于求解F的细节的论文

Overlapping Community Detection at Scale: A Nonnegative Matrix Factorization Approach by J. Yang, J. Leskovec. ACM International Conference on Web Search and Data Mining (WSDM), 2013.
Detecting Cohesive and 2-mode Communities in Directed and Undirected Networks by J. Yang, J. McAuley, J. Leskovec. ACM International Conference on Web Search and Data Mining (WSDM),2014.
Community Detection in Networks with Node Attributes by J. Yang,J. McAuley, J. Leskovec. IEEE International Conference On Data Mining (ICDM), 2013.

from:http://blog.csdn.net/pipisorry/article/details/49052057

ref:

[Community Detection Algorithm Combining Stochastic Block Model and Attribute Data Clustering 2016]

论文:复杂网络重叠社区检测《Finding overlapping communities in multiplex networks》N Afsarmanesh, M Magnani [Uppsala University] (2016)

Community detection in networks: A user guide》S Fortunato, D Hric [ Indiana University & Aalto University School of Science] (2016)

论文:(社交)网络影响基准度量方法《Benchmarking Measures of Network Influence》A Bramson, B Vandermarliere (2016)

社交网络数据挖掘的前沿技术

上一篇:JavaScript设计模式-----命令模式的简单应用


下一篇:git clone 太慢怎么办?