海量数据挖掘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 ...
随机推荐
- VMware在宿主上没有VMnet0、VMnet8,解决方法
一开始,坐着上机实验,一直搞不通为什么虚拟机上的客户机可以ping通自己的ip也可以ping通自己本身的ip,但是主机ping不通虚拟机的客户机,也ping不通虚拟机的网关. 尝试了各种问题,也追出了 ...
- html学习中
Html常用标签一 <body style="background-color:red;"> Body 标签 Style 属性 background-color:red ...
- 关于java的Synchronized,你可能需要知道这些(下)
上一篇文章介绍了synchronized的基本使用方法和实现,在实现部分说明了synchronized的底层实现依赖系统互斥锁mutex,但是这个一个重型锁,竞争导致线程阻塞挂起,后续拿到锁后再恢复线 ...
- Docker常见仓库MySQL
MySQL 基本信息 MySQL 是开源的关系数据库实现. 该仓库提供了 MySQL 各个版本的镜像,包括 5.6 系列.5.7 系列等. 使用方法 默认会在 3306 端口启动数据库. $ sudo ...
- ionic3-ng4学习见闻--(多语言方案)
1.安装ng2-translate npm install ng2-translate --save 2.app.moudle.ts 引入模块,在下方新增方法 import { TranslateMo ...
- 炫酷:一句代码实现标题栏、导航栏滑动隐藏。ByeBurger库的使用和实现
本文已授权微信公众号:鸿洋(hongyangAndroid)原创首发. 其实上周五的时候已经发过一篇文章.基本实现了底部导航栏隐藏的效果.但是使用起来可能不是很实用.因为之前我实现的方式是继承了系统的 ...
- linux TCP头部的构造的简单分析
TCP的头部的构造是在函数tcp_transmit_skb()中进行的 函数片段如下: /* Build TCP header and checksum it. */ th = tcp_hdr(skb ...
- android混淆那些坑
ProGuard简介 在最新的Android Studio 2.2.2版本创建的Android工程中,module中的build.gradle有如下一段配置.这里的minifyEnabled即用来控制 ...
- springMVC源码分析--AbstractHandlerMethodMapping注册url和HandlerMethod对应关系(十一)
在上一篇博客springMVC源码分析--AbstractHandlerMethodMapping获取url和HandlerMethod对应关系(十)中我们简单地介绍了获取url和HandlerMet ...
- 代理IP爬取,计算,发放自动化系统
IoC Python端 MySQL端 PHP端 怎么使用 这学期有一门课叫<物联网与云计算>,于是我就做了一个大作业,实现的是对代理IP的爬取,计算推荐,发放给用户等任务的的自动化系统.由 ...