社区检测算法(Community Detection)总结

news2025/1/22 20:45:44

社区检测(Community Detection)

社区检测(Community Detection)又被称为是社区发现。它是用来揭示网络聚集行为的一种技术。

社区检测算法用于评估节点组如何聚类或分区,以及它们增强或分离的趋势。

社区


社区是许多网络的属性,其中一个特定的网络可能有多个社区,因此社区内的节点是密集连接的。 多个社区中的节点可以重叠。例如日常中的微信、QQ、抖音,我们每天可能会与自己的朋友、同事、家人和生活中其他一些重要的人进行大量互动。它们在我们的社交网络中形成了一个非常密集的社区。

就图而言,社区可以定义为节点的子集,这些节点彼此紧密连接,而与同一图中其他社区中的节点松散连接。(网络节点在社区内紧密连接成紧密的组,而社区之间则松散连接。)

对于日常微信、QQ或 抖音 等社交媒体平台,我们试图在这些平台上与其他人联系。最终,一段时间后,我们最终与属于不同社交圈的人建立了联系。这些社交圈可以是一群亲戚、同学、同事等。这些社交圈也就是社区!

每个社区是一个子图,包含顶点和边。

社区检测

社区检测(community detection)又被称为是社区发现,它是用来揭示网络聚集行为的一种技术。社区检测实际就是一种网络聚类的方法,这里的“社区”,我们可以将其理解为一类具有相同特性的节点的集合。

社区检测算法的一个关键作用在于可用于从网络中提取有用的信息。 社区检测面临的最大挑战是社区结构没有普遍定义(与和聚类类似,没标签,无法直接评价效果的好坏)。

为什么要社区检测?

  1. 在分析不同的网络时,发现其中的社区可能很重要。
  2. 社区检测技术对于社交媒体算法很有用,可以发现具有共同兴趣的人并保持他们紧密联系。
  3. 社区检测可用于机器学习中,以检测具有相似属性的组并出于各种原因提取组。例如,该技术可用于发现社交网络或股票市场中的操纵群体。

社区检测与聚类的对比分析

  1. 聚类是一种机器学习技术,其中相似的数据点根据它们的属性被分组到同一个簇中。尽管聚类可以应用于网络,但它是无监督机器学习中一个更广泛的领域,可以处理多种属性类型。聚类算法倾向于将单个外围节点与其应属于的社区分开。
  2. 社区检测是专门为网络分析量身定制的,网络分析依赖于称为边的单一属性类型。

社区检测类似于聚类,但是,聚类和社区检测技术都可以应用于许多网络分析问题,并且可能会根据领域产生不同的优缺点。

 

 
鲁汶算法(Louvain )

鲁汶方法是一种检测大型网络中社区的算法。它最大化了每个社区的模块化分数,其中模块化量化了分配给社区的节点的质量。这意味着评估社区中节点的密集程度,以及它们在随机网络中的连接程度。

Louvain 算法是一种分层聚类算法,它以递归方式将社区合并到单个节点中,并在压缩图上执行模块化聚类。(这意味着在每个群集步骤之后,属于同一群集的所有节点都将减少到单个节点。同一集群节点之间的关系成为自有关系,与其他集群节点的关系连接到集群代表。然后,此精简图用于运行下一级别的聚类分析。重复该过程,直到群集稳定。)

在社区检测的Louvain方法中,首先通过在所有节点上局部优化模块化来找到小社区,然后将每个小社区分组为一个节点,并重复第一步。即为迭代重复两个阶段:

  1. 节点的局部移动
  2. 网络聚合

该算法从 N 个节点的加权网络开始。在第一阶段,算法为网络的每个节点分配一个不同的社区。然后对于每个节点,它考虑邻居并评估模块化增益通过从当前社区中删除特定节点并放置在邻居的社区中。如果增益为正且最大化,则该节点将被放置在邻居的社区中。如果没有正收益,该节点将留在同一个社区中。这个过程被重复应用到所有节点,直到没有进一步的改进。当获得局部最大值时,Louvain 算法的第一阶段停止。在第二阶段,该算法将在第一阶段找到的社区作为节点来构建一个新的网络。一旦第二阶段完成,算法会将第一阶段重新应用于生成的网络。重复这些步骤,直到网络没有变化并且获得最大的模块化。

莱顿社区检测(Leiden)

莱顿算法是一种用于检测大型网络中的社区的算法。该算法将节点分离成不相交的社区,从而最大化每个社区的模块化得分。模块化量化了将节点分配给社区的质量,即社区中节点的密集连接程度,与它们在随机网络中的连接程度相比。

Leiden算法是一种分层聚类算法,它通过贪婪地优化模块化和在压缩图中重复的过程,递归地将社区合并到单个节点中。它修改了鲁汶算法以解决其一些缺点,即鲁汶发现的一些社区联系不紧密的情况。这是通过定期将社区随机分解为较小的连接良好的社区来实现的。

莱顿算法的三个阶段是:

  1. 节点的局部移动
  2. 分区的细化
  3. 基于细化分区的网络聚合

在细化阶段,算法试图从第一阶段提出的分区中识别出细化的分区。第一阶段提出的社区可能在第二阶段进一步分裂成多个分区。细化阶段不遵循贪心方法,并且可能将节点与随机选择的社区合并,从而增加质量函数。这种随机性允许更广泛地发现分区空间。同样在第一阶段,莱顿对鲁汶采取了不同的方法。与第一次访问所有节点完成后访问网络中的所有节点不同,Leiden 只访问那些邻域发生变化的节点。

louvain的缺点:

1、社区划分的精度有局限性

2、分组内细胞分布密度的大小会影响亚群的鉴定

3、被鉴定为同一个分群的细胞群内,存在两个没有连线的小分群

Leiden算法主要针对上述的第3个缺点,对louvain算法进行优化。Leiden算法的命名来源于荷兰莱顿大学(Leiden University)。该算法由莱顿大学的三位研究员开发,结果于2020年3月份发表在Scientific Reports上。

Leiden和louvain算法的调整策略不同:

1、Louvain:让每个同学去另外两个队伍,每次换队伍都让体育老师评价一下;

2、Leiden:只让每个同学去有连线的其他队伍,节省时间。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1978264.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

运维团队可视化大屏定制指南

在运维工作中,可视化大屏作为实时监控和数据分析的重要工具,其直观性和灵活性对于提高运维效率和决策质量至关重要。本文将结合运维行业的特点,为运维团队提供可视化大屏定制化的参考指南。 一、可视化大屏的默认配置与定制化需求 可视化大屏…

java 如何查看jar版本冲突,如何查看哪个模块依赖冲突,idea查看jar包冲突

1. idea 下载插件: 2. 如上图所示,下载Maven Helper, 注意是maven helper 不是别的 3.重启idea 4.点击pom文件,然后点击如图所示: 5. 如此即可查到,某个jar包 都有哪个模块依赖,使用的什么版本&#xff0…

由浅入深的了解进程(6)---地址空间

地址空间 进程的地址空间1、直接代码展示的现象2、基本理解3、细节问题3、1、独立性细节3、2、地址空间细节 4、问题回溯5、Linux2.6内核进程调度队列 进程的地址空间 1、直接代码展示的现象 其中当父子进程之间的g_val改变之后,为什么即使是不同的值了之后&#x…

网络通信模型

网络IO的通信原理 首先,对于TCP通信来说,每个TCP Socket的内核中都有一个发送缓冲区和一个接收缓冲区 接收缓冲区把数据缓存到内核,若应用进程一直没有调用Socket的read方法进行读取,那么该数据会一 直被缓存在接收缓冲区内。不管…

防火墙基础配置

需求: AR1可ping防火墙FW1的G0/0/0口 AR1、AR2、AR3在不同区域 AR1可访问AR2 实现: 配置各路由器的IP地址、静态路由 FW配置策略并将端口加入相关区域 防火墙代码如下: interface GigabitEthernet0/0/0undo shutdownip address 1.1.1.…

通俗易懂!495页看漫画学Python入门教程(全彩版)Git首发破万Star

前言 在编程的世界里,Python无疑是一颗璀璨的明星。从最初作为打发圣诞节闲暇时间的项目,到如今成为最受欢迎的程序设计语言之一,Python以其简洁、易学、强大的特点吸引了无数编程爱好者。然而,对于初学者来说,编程的…

高效转换,尽在掌握 —— 介绍这款免费的PDF转Word在线工具

引言 在日常工作中,我们经常会遇到需要将PDF文件转换成Word文档的情况。无论是为了编辑文档内容还是进行格式调整,一款好用的转换工具都是必不可少的。今天,我们将为大家推荐一款简单易用、功能强大的在线PDF转Word工具——AI智慧引擎&#…

浅谈KMP算法(c++)

目录 前缀函数应用【模板】KMP题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 提示样例 1 解释数据规模与约定 思路AC代码 本质不同子串数 例题讲解[NOI2014] 动物园题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 提示思路AC代码 [POI2006] OKR-Periods of …

使用 vLLM 为多个 LoRA 适配器提供服务

欢迎来到雲闪世界。使用 LoRA 适配器,我们可以针对某项任务或领域专门设计大型语言模型 (LLM)。适配器必须加载到 LLM 之上才能用于推理。对于某些应用,为用户提供多个适配器可能会很有用。例如,一个适配器可以执行函数调用,另一个…

【Android Studio】 创建第一个Android应用HelloWorld

文章目录 创建项目查看AndroidManifest.xml(清单)查看MainActivity.java(Activity)查看activity_main.xml(布局) 创建项目 查看AndroidManifest.xml(清单) 查看MainActivity.java(Activity&…

HarmonyOS NEXT Developer Beta2 端云一体化 运行报错

HarmonyOS NEXT Developer Beta2 端云一体化 运行报错 1 错误提示:Before launch task execute failed! details: npm install failed! 如上图所示: 错误原因: 右击“cloudfunctions”目录,选择“Debug Cloud Functions” 或 “…

锂离子电池健康状态预测(Part1,Python)

所用数据集:Oxford dataset:https://ora.ox.ac.uk/objects/uuid:03ba4b01-cfed-46d3-9b1a-7d4a7bdf6fac/files/m5ac36a1e2073852e4f1f7dee647909a7 # importing libraries import matplotlib.pyplot as plt import pandas as pd import scipy.io import math impor…

TypeScript 类型断言、类型推论

类型断言 类型断言是一种 TypeScript 特性,用于告诉编译器将一个值视为特定的类型,即使编译器本身的类型推断可能不同。 类型断言并不会改变变量的实际运行时类型,而是在编译阶段告知TypeScript编译器开发者期望该表达式具有某种类型。 注…

RAG:如何与您的数据对话

ChatGPT 进行主题建模,我们的任务是分析客户对不同连锁酒店的评论,并确定每家酒店提到的主要主题。通过这种主题建模,我们知道每个客户评论的主题,并且可以轻松地过滤它们并进行更深入的研究。然而,在现实生活中&#…

PMP--冲刺--敏捷中的角色职责与3个工件--题干关键词

文章目录 敏 捷 中 的 角 色 职 责 与 3 个 工 件--题干关键词说明题目 敏 捷 中 的 角 色 职 责 与 3 个 工 件–题干关键词 角色职责 1、产品负责人:题干关键词 “优先级排序、与客户沟通、下次迭代做什么、接受或拒绝用户故事”。 2、Scrum Master:题…

AI测试入门:认识RAG(检索增强生成)

AI测试入门:认识RAG(检索增强生成) 前言1. RAG概述1.1 RAG的优势 2. RAG的工作原理2.1 信息检索2.2 上下文构建2.3 生成回答 3. RAG的应用场景4. 实现一个简单的RAG系统4.1 环境准备4.2 代码实现4.3 进一步优化 5. RAG的挑战与未来发展6. RAG…

[论文精读] StyleGAN2 论文代码理解 (上)

文章目录 一、前言二、简要介绍三、详细解析1、归一化的修改1.1生成器结构的修改1.2重新审视实例归一化(Instance normalization) 2、图像质量和生成器平滑(PPL相关内容)3、关于渐进式增长Progressive growing3.1采用替换结构(Alternative network)3.2不同分辨率的使用 4、图像…

未授权访问漏洞

一. Redis Redis 默认情况下,会绑定在 0.0.0.0:6379 ,如果没有进⾏采⽤相关的策略,⽐如添加防 ⽕墙规则避免其他⾮信任来源 ip 访问等,这样将会将 Redis 服务暴露到公⽹上,如果在没有设 置密码认证(⼀般为…

学习分享电商 API 接口接入指南:关键技术要点与实践

在当今数字化的商业环境中,电商 API 接口的接入对于企业拓展业务、提升运营效率以及优化用户体验具有重要意义。本文将详细探讨电商 API 接口接入的关键技术要点,并结合实践经验为您提供一份实用的接入指南。 一、电商 API 接口概述 电商 API 接口是电商…

【文献阅读】Accou2vec: A Social Bot Detection Model Based on Community Walk

Abstract Accou2vec。首先,为了切断人类账户和机器人账户之间的攻击边,利用类似深度自动编码器的非负矩阵分解社区检测算法将社交图划分为多个子图。然后设计了社区漫游规则,分别控制社区内部和社区间的漫游,同时考虑社区中的节点…