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

图中社区检测

图中社区示例

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

        

社区类型

社区表示

我们可以将社交网络表示成一个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

网络模型

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

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

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

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

AGM生成Networks过程

AGM如何生成networks的边

 

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

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

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

AGM模型的优势

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)。

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模型的表示。

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

从上式可知,只要估计出矩阵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)较小。我们要做的就是最大化下式。

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矩阵

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变成负值,每次迭代都要检测并修正。

算法的缺点

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

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

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

BigClam的伸缩性scalability

更多关于求解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)

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

海量数据挖掘MMDS week3:社交网络之社区检测:基本技巧的更多相关文章

  1. 海量数据挖掘MMDS week3:社交网络之社区检测:高级技巧

    http://blog.csdn.net/pipisorry/article/details/49052255 海量数据挖掘Mining Massive Datasets(MMDs) -Jure Le ...

  2. 海量数据挖掘MMDS week3:流算法Stream Algorithms

    http://blog.csdn.net/pipisorry/article/details/49183379 海量数据挖掘Mining Massive Datasets(MMDs) -Jure Le ...

  3. 海量数据挖掘MMDS week2: 局部敏感哈希Locality-Sensitive Hashing, LSH

    http://blog.csdn.net/pipisorry/article/details/48858661 海量数据挖掘Mining Massive Datasets(MMDs) -Jure Le ...

  4. 海量数据挖掘MMDS week7: 局部敏感哈希LSH(进阶)

    http://blog.csdn.net/pipisorry/article/details/49686913 海量数据挖掘Mining Massive Datasets(MMDs) -Jure Le ...

  5. 海量数据挖掘MMDS week1: Link Analysis - PageRank

    http://blog.csdn.net/pipisorry/article/details/48579435 海量数据挖掘Mining Massive Datasets(MMDs) -Jure Le ...

  6. 海量数据挖掘MMDS week2: Association Rules关联规则与频繁项集挖掘

    http://blog.csdn.net/pipisorry/article/details/48894977 海量数据挖掘Mining Massive Datasets(MMDs) -Jure Le ...

  7. 海量数据挖掘MMDS week7: 相似项的发现:面向高相似度的方法

    http://blog.csdn.net/pipisorry/article/details/49742907 海量数据挖掘Mining Massive Datasets(MMDs) -Jure Le ...

  8. 海量数据挖掘MMDS week6: MapReduce算法(进阶)

    http://blog.csdn.net/pipisorry/article/details/49445519 海量数据挖掘Mining Massive Datasets(MMDs) -Jure Le ...

  9. 海量数据挖掘MMDS week6: 决策树Decision Trees

    http://blog.csdn.net/pipisorry/article/details/49445465 海量数据挖掘Mining Massive Datasets(MMDs) -Jure Le ...

随机推荐

  1. Docker学习系列(一)Docker简介

    简介 Docker是一个在全球范围领先的软件容器平台.开发人员可以使用容器来在协作过程中遇到的解决"不同环境配置"的问题.(例如,在传统的开发环境下,开发人员编写代码,然后交由测试 ...

  2. 字符流之FileReader&FileWriter

    package zhang; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; pub ...

  3. python学习之路网络编程篇(第五篇)

    paramiko简介 paramiko 是基于Python实现的SSH2远程安装连接,支持认证及秘钥方式.可以实现远程命令执行.文件传输.中间SSH代理等功能. paramiko安装 #!/bin/b ...

  4. Oracle知识梳理(一)理论篇:基本概念和术语整理

    理论篇:基本概念和术语整理 一.关系数据库           关系数据库是目前应用最为广泛的数据库系统,它采用关系数据模型作为数据的组织方式,关系数据模型由关系的数据结构,关系的操作集合和关系的完整 ...

  5. 百度地图JS 搜索悬浮窗功能

    这个需求的效果类似下面的截图,主要还是利用百度地图中自定义控件的功能,挺简单的.文档地址在这 http://lbsyun.baidu.com/index.php?title=jspopular 效果图 ...

  6. android自定义View之3D索引效果

    效果图: 我的小霸王太卡了. 最近工作比较忙,今天搞了一下午才搞出来这个效果,这种效果有很多种实现方式,最常见的应该是用贝塞尔曲线实现的.今天我们来看另一种不同的实现方式,只需要用到 canvas.s ...

  7. sublime text 2 解决错误 [Decode error - output not utf-8]

    以win 10 为例, 找到文件C:\Users\xxzx\AppData\Roaming\Sublime Text 2\Packages\Python\Python.sublime-build 添加 ...

  8. JDK、JRE和JVM的关系

    JDK中包含了JRE,JRE中包含了JVM. 详解: JDK是JAVA的核心,包括JRE(JAVA 虚拟环境).编译器等,JDK的主流产品是由SUN公司开发的,JDK本身是用JAVA编写的,安装包的S ...

  9. 剑指Offer——网易笔试题+知识点总结

    剑指Offer--网易笔试题+知识点总结 Fibonacci package cn.edu.ujn.nk; import java.util.ArrayList; import java.util.S ...

  10. Android app内存管理的16点建议

    转载请把头部出处链接和尾部二维码一起转载,本文出自逆流的鱼yuiopshared memory(共享内存) Android通过下面几个方式在不同的Process中来共享RAM: 每一个app的proc ...