海量数据挖掘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
图中社区检测
图中社区示例
通过蛋白质连接结构发现细胞中的功能模块 社交网络(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分离开来。
网络生成模型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模型了。
解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]
《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:社交网络之社区检测:基本技巧的更多相关文章
- 海量数据挖掘MMDS week3:社交网络之社区检测:高级技巧
http://blog.csdn.net/pipisorry/article/details/49052255 海量数据挖掘Mining Massive Datasets(MMDs) -Jure Le ...
- 海量数据挖掘MMDS week3:流算法Stream Algorithms
http://blog.csdn.net/pipisorry/article/details/49183379 海量数据挖掘Mining Massive Datasets(MMDs) -Jure Le ...
- 海量数据挖掘MMDS week2: 局部敏感哈希Locality-Sensitive Hashing, LSH
http://blog.csdn.net/pipisorry/article/details/48858661 海量数据挖掘Mining Massive Datasets(MMDs) -Jure Le ...
- 海量数据挖掘MMDS week7: 局部敏感哈希LSH(进阶)
http://blog.csdn.net/pipisorry/article/details/49686913 海量数据挖掘Mining Massive Datasets(MMDs) -Jure Le ...
- 海量数据挖掘MMDS week1: Link Analysis - PageRank
http://blog.csdn.net/pipisorry/article/details/48579435 海量数据挖掘Mining Massive Datasets(MMDs) -Jure Le ...
- 海量数据挖掘MMDS week2: Association Rules关联规则与频繁项集挖掘
http://blog.csdn.net/pipisorry/article/details/48894977 海量数据挖掘Mining Massive Datasets(MMDs) -Jure Le ...
- 海量数据挖掘MMDS week7: 相似项的发现:面向高相似度的方法
http://blog.csdn.net/pipisorry/article/details/49742907 海量数据挖掘Mining Massive Datasets(MMDs) -Jure Le ...
- 海量数据挖掘MMDS week6: MapReduce算法(进阶)
http://blog.csdn.net/pipisorry/article/details/49445519 海量数据挖掘Mining Massive Datasets(MMDs) -Jure Le ...
- 海量数据挖掘MMDS week6: 决策树Decision Trees
http://blog.csdn.net/pipisorry/article/details/49445465 海量数据挖掘Mining Massive Datasets(MMDs) -Jure Le ...
随机推荐
- 转:Socket原理与编程基础
from: http://acm.tzc.edu.cn/acmhome/projectList.do?method=projectNewsDetail&nid=2 一.Socket简介 Soc ...
- PHP 实例 AJAX RSS 阅读器
RSS 是一种描述和同步网站内容的格式,是目前使用最广泛的XML应用. RSS 搭建了信息迅速传播的一个技术平台,使得每个人都成为潜在的信息提供者. RSS 阅读器用于阅读 RSS Feed. AJA ...
- Docker服务端防护
运行一个容器或应用程序的核心是通过 Docker 服务端.Docker 服务的运行目前需要 root 权限,因此其安全性十分关键. 首先,确保只有可信的用户才可以访问 Docker 服务.Docker ...
- Java第5次实验提纲(Java图形界面编程)
1. Swing与NetBeans 使用NetBeans编写简单界面.见GUI实验参考文件中的0.第06次实验(图形程序设计.事件处理与Swing).doc 题目1: Swing用户界面组件与事件处理 ...
- git 覆盖本地变化
git fetch && git reset --hard origin/master
- ThreadLocal深入剖析
JDK 1.2的版本中就提供java.lang.ThreadLocal,ThreadLocal为解决多线程程序的并发问题提供了一种新的思路.使用这个工具类可以很简洁地编写出优美的多线程程序,Threa ...
- Objective-C构造方法
Objective-C构造方法 构造方法:用来初始化的方法 创建对象的原理 之前我们创建对象的方式一直是使用[Xxx new] 但是使用 new 创建的对象,都是给我们默认做了初始化的. 有的时候,我 ...
- 大数据基础知识问答----hadoop篇
handoop相关知识点 1.Hadoop是什么? Hadoop是一个由Apache基金会所开发的分布式系统基础架构.用户可以在不了解分布式底层细节的情况下,开发分布式程序.充分利用集群的威力进行高速 ...
- SpriteKit中节点的z-position
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 免责申明:本博客提供的所有翻译文章原稿均来自互联网,仅供学习交 ...
- [Django]bulk_create 探究
使用django orm大批量插入的时候我们可以不使用for循环对一个一个的save而是使用 bulk_create来批量插入,可是使用了这个方法还需要在自己添加一个事务吗? 还是django本身对这 ...