1.思维导图

2.算法详解

1)CPM算法

(1)算法思想

假设社区由完全连接的子图的重叠集(团)构成,并通过搜索相邻的团来检测社区。

首先识别网络中所有大小为K的团,一旦这些被识别出来,就会构建一个新的图,将每个团看成一个节点。

如果两个代表K-团的节点共享K-1个成员,则连接两个节点。

新图中的连接组件确定了哪些派系组成了社区。由于一个节点可以同时在多个K-团中,社区可能是重叠的。

CPM适用于具有密集连接部分的网络。且K的取值一般在[3,6]时效果最好。

这里要推荐一下大佬整理的,清晰易懂。

【社区发现】重叠社区发现CPM算法 (qq.com)

(2)优缺点

优点:简单易于理解

缺点:CPM算法更像是模式匹配,不是寻找社区,因为他们旨在找到网络中特定的、本地化的结构。

2)LINK算法

(1)相关概念

a.层次的聚类方法(Hierarchical Clustering),从字面上理解,其是层次化的聚类,最终得出来的是树形结构。专业一点来说,层次聚类通过 计算不同类别数据点间的相似度 来创建一棵有层次的嵌套聚类树。

层次聚类的好处是不需要指定具体类别数目的,其得到的是一颗树,聚类完成之后,可在任意层次横切一刀,得到指定数目的簇。

b.单链接层次聚类

根据聚类簇之间距离的计算方法的不同,层次聚类算法可以大致分为:单链接(Single-link)算法,全链接算法(complete-link)或均链接算法(average-link)。单链接算法用两个聚类簇中最近的样本距离作为两个簇之间的距离;而全链接使用计算两个聚类簇中最远的样本距离;均链接算法中两个聚类之间的距离由两个簇中所有的样本共同决定。

(2)算法思想

通过划分链接而不是节点来发现社区结构。如果链接到他的链接放在多个集群中,则原始图中的节点称为重叠。

链接是通过边缘相似度的层次聚类来划分的。给定节点k上的一对链接,可以通过定义为的Jaccard索引计算相似度。

其中 Ni 是节点 i 的邻域,包括 i。 然后使用单链接层次聚类来构建链接树状图。 在某个阈值处切割此树状图会产生链接社区。

(3)优缺点

优点:看起来清晰

缺点:不能保证该算法比基于节点的检测有更高质量的检测,因为该算法的一些定义还比较模糊。

3)LFM算法

算法思想

LFM算法是将社区从随机种子节点扩展为自然社区,直到适应度函数局部最大,分别是社区c的内部和外部的总度数,是控制社区大小的分辨率参数。

在找到一个社区后。LFM会随机选择另一个尚未分配到任何社区的节点来发展一个新社区。LFM很大程度上取决于分辨率参数

4)FCM算法

模糊社区检测算法量化了所有节点对和社区之间的关联强度。在这些算法中,每个接待你计算一个软成员向量或归属因子。

缺点:需要确定成员向量的维数k。该值可以作为算法的参数提供,也可以从数据中计算出来。

5)COPRA算法

算法思想

COPRA算法在执行之初会为网络中每一个节点设置一个唯一的社区编号,一般这个社区编号就是节点的自身的ID;

之后,节点会根据自己的邻居节点的社区分布决定自己的社区,简单的来说就是自己的邻居节点倾向于选择哪个社区,自己就选择哪个社区。

算法在执行时会使用隶属度(Belonging Coefficient)来帮助节点决定选择哪一个社区。如果节点对于邻居节点所在社区的隶属度都低于阈值,那么节点就随机选择一个社区;

最后,算法会根据一些条件来决定是否停止算法。

停止条件一般分为两种:第一种是连续两次迭代社区标签数量相同;第二种是连续两次迭代社区内节点数目不变
原文链接:https://blog.csdn.net/u010658028/article/details/80352437

3.算法比较

1)评价标准

NMI:NMI(Normalized Mutual Information)标准化互信息,常用在聚类中,度量两个聚类结果的相近程度。是社区发现(community detection)的重要衡量指标,基本可以比较客观地评价出一个社区划分与标准划分之间相比的准确度。NMI的值域是0到1,越高代表划分得越准。

2)相关算法时间度

3)不同参数下社区检测排名

参考文献:Overlapping Community Detection in Networks: The State-of-the-Art
and Comparative Study

重叠社区检测基础算法相关推荐

  1. 重叠社区发现-LFM算法

    #coding=utf-8 from numpy import * #文件读取 def LoadAdjacentMatrixData(filename,vertices):Adjmartrix = [ ...

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

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

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

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

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

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

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

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

  6. 基于链接密度聚类的重叠社区发现算法

    基于链接密度聚类的重叠社区发现算法 文章发表时间:2013年12月 1. 传统社区算法的局限性 传统社区算法是将网络划分为若干各互不相连的社区,每个节点都必须隶属与唯一的社区,然而,在实际的社交网络中 ...

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

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

  8. 计算机视觉多目标检测整合算法

    计算机视觉多目标检测整合算法 输入输出接口 Input:image/video Output:(1)BandingBox左上右下的坐标位置 (2)Type类型:人,车,-,-(3) 执行度:是指判别目 ...

  9. 分布式入门:常用的分布式基础算法

    摘要: 研究生期间分布式课程的小结吧.... 中间件在分布式系统中的地位和角色 为了使种类各异的计算机和网络都呈现为单个的系统,分布式系统常常通过一个"软件层"组织起来,该层在逻辑 ...

最新文章

  1. Python学习day13-函数进阶(1)
  2. 关于How to do/What to do
  3. 不同地图坐标系的坐标转换
  4. hibernate mysql id 自增长 注解_hibernate Mysql 自增长 注解配置,表无关联的注解方式关联查询...
  5. 设计模式--行为型模式
  6. bzoj2127: happiness
  7. 亿贝html5,亿贝CALL
  8. jq+layui之保存修改的表状态
  9. STM32串口接收以及发送大全
  10. 人人商城 / 数据库
  11. 巧妙设置excel透明字体
  12. Request Headers请求头和Response Headers响应头,有啥区别呢?
  13. python预测你的小孩身高_儿童身高预测方法
  14. 谷歌浏览器插入百度翻译插件
  15. linux线程篇,linux线程篇 (二) 线程的基本操作
  16. [图文讲解]强大的谷歌搜索技巧,百度360搜狗什么的就是渣渣
  17. 郑清 - 日常作息表 - December - 2019
  18. TreeSize Free (硬盘空间显示工具) V3.
  19. 如何理解电容的充放电过程?
  20. window及谷歌浏览器常用快捷键

热门文章

  1. Discuz!uc.key泄露导致代码注入漏洞uc.php的解决方法
  2. Java实现打印日历
  3. 11 计算机组成原理第七章 输入/输出系统 I/O系统基本概念 外部设备
  4. win10 telnet不是内部或外部命令(已解决)
  5. C# 使用 Direct2D 实现斜角效果
  6. Node-Sass报错,安装失败等问题
  7. halcon measure_pos和measure_pairs详解
  8. chai断言库学习3-Core Plugin Concepts
  9. UI自动化测试工具Airtest
  10. HCIA(HCNA):AAA原理与配置