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

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

博客内容:社区检测的基本技巧部分,覆盖"overlapping communities"寻找最好集合的机器学习技术。

Communities in Social Networks:  直觉上, 社区communities就是网络中个体的集合,集合中通常有高密度的边。而overlapping communities就是人们通常属于多个社区,如高中朋友、同事等等。

Note: lz这里这种方法是要自己指定社区个数的,有点类似软分类,通过MLE求解。

How the class fits together

图中社区检测

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

        

社区类型

社区表示

我们可以将社交网络表示成一个graph adjacency matrix:有联系就有值,没有联系就没有值。矩阵中the thicker the tiles,the more edges are there in the network.我们要做的就是从networks中将这些tiles分离开来。

皮皮blog

网络生成模型Generative Model for Networks

网络模型

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

皮皮blog

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

模型表示 B(V, C, M, {Pc})

模型中的边M代表成员-社区隶属关系。

AGM模型假定指定社区中的每个成员V(圆点)属于其对应社区C(方块)的概率是一样的,即Pc。

AGM生成Networks边的过程

 

用户u,v在网络中有边的概率P(u,v)就是其至少同属于一个社区的概率,共同社区越多,其概率值越大,概率越大越可能生成边。

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

AGM模型的优势


皮皮blog

BIGCLAM模型

{AGM的relaxed版本。简化AGM成BIGCLAM,可以在large networks中检测社区}

带权值Memberships的AGM模型

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

1. 原来成员u属于社区A是01表示,现在表示成一个绳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模型的表示。

概率 P(u,v)的计算

两个个体u,v生成links的概率表示,即在网络中有边的概率或者是至少同时属于一个社区的概率 P(u,v)的计算:

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

[参数估计:最大似然估计MLE]

BigCLAM解F版本一:梯度上升

1. 使用梯度方法的一个假设:认为函数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缓存加速

通过邻居neibor来迭代求解F矩阵。缓存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. 复杂网络;社交网络;社区检测;节点重要性(重要节点识别);舆论动力学模型; 传染病模型 ;蓄意攻击 、随机攻击;网络鲁棒性、脆弱性、稳定性

    复杂网络 社交网络 社区检测 节点重要性(重要节点识别) 舆论动力学模型 传染病模型 蓄意攻击 随机攻击 网络鲁棒性.脆弱性.稳定性 Python 基本的网络分析 详细私聊 网络拓扑图 连通性 网络效 ...

  2. bgll算法 matlab,一种复杂网络社区检测的方法与流程

    本发明涉及一种社区检测方法,具体说是一种复杂网络社区检测的方法. 背景技术: 过去几年中已有许多社区检测方法相继提出,其中应用最广泛的是基于模块度的最优化方法.然而,模块度最优化本质上是一个典型的NP ...

  3. 如何计算图论中的模块化modularity指标,图论中的社区检测算法——Louvain community

    图论中的社区检测算法--Louvain community 前言 模块化指标介绍 数学定义 Matlab代码实现 使用实例 community_louvain函数 参考文献 前言 在过去的十年中,人们 ...

  4. 带有社区检测算法的多标签学习方法预测药物靶点相互作用(DTI-MLCD)

    1. 摘要     确定药物-靶标相互作用(DTIs)是药物发现和药物重新定位的重要步骤.为了大大降低实验成本,蓬勃发展的机器学习被应用到这个领域,并发展了许多计算方法,特别是二分类方法.然而,目前的 ...

  5. 基于云计算的海量数据挖掘

    一 基于云计算的海量数据挖掘 2008年7 月,<Communications of the ACM>杂志发表了关于云计算的专辑,云计算因其清晰的商业模式而受到广泛关注,并得到工业和学术界 ...

  6. “黑产“识别算法(社区检测,相似度,关联关系)

    "黑产"识别算法 前言 黑产的特性 通过业务特性识别 通过关联关系识别(非监督学习) 通过行为相似度识别(非监督学习) 通过用户画像识别(分类.预测) 前言 我们讨论的黑产识别,实 ...

  7. 重叠社区检测基础算法

    1.思维导图 2.算法详解 1)CPM算法 (1)算法思想 假设社区由完全连接的子图的重叠集(团)构成,并通过搜索相邻的团来检测社区. 首先识别网络中所有大小为K的团,一旦这些被识别出来,就会构建一个 ...

  8. python画聚类图、并且把聚类图保存起来_Python利用igraph绘制复杂网络聚类(社区检测)结果图-Go语言中文社区...

    前言:研究生期间主要做复杂网络聚类,也称为社区检测.临毕业前,老师让之前发表的论文里的算法代码C化,并写出界面进行可视化.由于之前虽然做过可视化,但基本上都是将聚类结果导入到pajek或者gephi这 ...

  9. 基于GN算法(Girvan-Newman)实现社交网络中社区划分

    1 背景 网络中社区结构的研究是了解整个网络结构和功能的重要途经.对于网络中社区结构的研究是了解整个网络结构和功能的重要途经.一般来说,社区结构是大规模网络中普遍存在的基本结构.网络中的顶点可以进行分 ...

最新文章

  1. .net lucene 实战搜索(二)----- 基本之索引
  2. Gartner:2017年应用和基础设施中间件软件市场收入将突破270亿美元
  3. [新产品发布|推广] 赠书活动来了,参与有机会得《产品经理那些事儿》图书!...
  4. 视频预测领域有哪些最新研究进展?不妨看看这几篇顶会论文
  5. 线程和进程的对比之优缺点
  6. Spring 事务提交回滚源码解析
  7. gamma校正_Log与Gamma校正视频
  8. 大连市打造数字人民币应用示范村
  9. com.haodf.android,有坑!Android新版QQ获取packageInfo引发异常崩溃
  10. Web网站压力测试工具
  11. zend framework 重定向方法(render, forward, redirect)总结
  12. 软件基本功:没有人比我更重视测试
  13. 【阅读笔记】BI系统介绍及建设思路
  14. PHP168整站系统0DAY漏洞预警
  15. mysql field in set_MySQL中的find_in_set()函数使用技巧心得与应用场景总结
  16. python youtube视频_Python3 使用you-get,youtube-dl,ffmpeg 下载全网视频并剪切视频
  17. C++ primer plus 第六版 第二章 编程练习答案
  18. google cloud api 安装
  19. MDaemon功能篇之优先级邮件
  20. OpenOCD+GDB学习记录(1)

热门文章

  1. pinpoint监控学习笔记
  2. 修改迅雷下载链接的方法。
  3. 时间序列分析复习 01 引论
  4. c++ set使用(增删查遍历)
  5. Spring事务实现的方式及底层原理
  6. 模拟电子技术(八)功率放大电路
  7. 模型量化(6):Yolov5 QAT量化训练
  8. android 图片内存缓存文件在哪个文件夹,别再用手机管家清理内存了!1分钟删掉这些文件夹,内存多出几个G...
  9. 数学:分数的加减乘除模板
  10. 信息系统项目管理之10大管理的过程解释