1. 算法作者的网站

http://www.ludowaltman.nl/slm/

黑色字体的第二段末尾说,三种 Louvain 实现都支持 分辨率 参数,用来决定检测到社区的粒度:
All algorithms implemented in the Modularity Optimizer support the use of a resolution parameter to determine the granularity level at which communities are detected.

手写 Louvain 算法时,这个 分辨率 参数怎么体现呢?

是 deltaQ 小于某个值时迭代终止?

该网页提供的代码是java版本的:
http://www.ludowaltman.nl/slm/modularity_optimizer_source.zip
有用硬着头皮看看吧。。。

(2) 分辨率参数的论文

通过其他地方的引用和介绍,多方证据印证,就是这篇论文引入的time 参数,后来被称为 resolution 参数了。

  • How to use “resolution” when applying louvaon algorithm for community detection?

  • Louvain clustering: resolution parameter #3184

  • 分辨率 paper: Laplacian Dynamics and Multiscale Modular Structure in Networks : https://arxiv.org/abs/0812.1770
    Another paper Laplacian Dynamics and Multiscale Modular Structure in Networks that is referenced by the implementation of the python-louvain library refers to this as time.

  • NextworkX has a resolution parameter:

>>> community.best_partition(graph, partition=None, weight=’weight’, resolution=1.0, randomize=None, random_state=None)resolution [double, optional] Will change the size of the communities, default to 1.
represents the time described in “Laplacian Dynamics and Multiscale Modular Structure in Networks”,
R. Lambiotte, J.-C. Delvenne, M. Barahona
  • 也有文章讨论 resolution 的局限性: Narrow scope for resolution-limit-free community detection | 2011 pdf | pdf2 | pubmed

(3) Rigraph 上的争论

https://github.com/igraph/rigraph/issues/239
观众: 原算法作者的java代码支持 分辨率,希望R版本的 igraph 也支持: http://www.ludowaltman.nl/slm/
igraph 作者: R包Seurat已经通过Rcpp支持了。

观众: 不行,我就要,防止代码扩散嘛
作者: Rigraph 打算在支持 Leiden 算法时添加分辨率参数。

最后,有人提交了一个C版本的PR: (commented on 2 Jun 2020)
https://github.com/jmonlong/Hippocamplus/blob/config/R/rigraph_gammalouvain/community.c


2. 其他短小的python 实现

(1) 实现1: 没有 resolution 参数

https://blog.csdn.net/qq_16543881/article/details/122825957
这个有问题,小数据集看着还行;
但是对于 3000 个顶点的 pbmc 3k 真实数据集,直接输出了和点数一样的社区数,肯定哪里不对。
修正版: Louvain_5.py


ref:

  • 介绍 Louvain 算法及其实现 https://zhuanlan.zhihu.com/p/522751212
  • 几篇 Louvain 的论文的区别: https://blog.csdn.net/qq_16543881/article/details/123575014
  • Louvain 2018: https://eecs.wsu.edu/~ananth/papers/Ghosh_IPDPS18.pdf
  • java 版的调试: https://blog.51cto.com/u_15693947/5409361

社区发现算法 | Louvain 算法 中的分辨率参数相关推荐

  1. 社区发现算法 python_社区发现(Community Detection)算法(转)

    作者: peghoty 社区发现(Community Detection)算法用来发现网络中的社区结构,也可以看做是一种聚类算法. 以下是我的一个 PPT 报告,分享给大家. 从上述定义可以看出:社区 ...

  2. 社区发现系列03-Louvain算法分辨率

    1.分辨率局限 louvain算法存在的问题:分辨率局限.就是说当通过优化模块度来发现社区结构时,网络在存在一个固有的分辨率局限,导致一些规模较小但是结构显著的社区淹没在大的社区中,无法被识别到. 造 ...

  3. 附源码|复杂网络社区发现——标签传播算法(LPA)

    本文通过Python 3.7实现了标签传播算法的两个代码(1.自己写的,2.调包实现),并通过空手道俱乐部的例子进行可视化显示. 标签传播是一种半监督机器学习算法,它将标签分配给以前未标记的数据点.在 ...

  4. 社区发现算法原理与louvain源码解析

    前言 社区发现(community detection),或者社区切分,是一类图聚类算法,它主要作用是将图数据划分为不同的社区,社区内的节点都是连接紧密或者相似的,而社区与社区之间的节点连接则是稀疏的 ...

  5. 社区发现算法-Community Detection-NormalizeCut/Louvain/NMF/LPA

    本文结构安排 图聚类简介 正则化割 Louvain 非负矩阵分解(NMF) 其他常见方法 图(graph):是一种由点和边集构成的结构 G = ( V , E ) G=(V,E) G=(V,E) 图聚 ...

  6. 标签传播算法_复杂网络社区发现算法汇总

    社区发现 这篇文章汇总了一些常见的社区发现概念和算法,包括 Modularity Q Fast Unfolding(Louvain Algorithm) LPA SLPA KL算法 GN算法 社区: ...

  7. 【机器学习】聚类算法、社区发现

    目录 前言 聚类和社区发现 社区发现 聚类算法 聚类-评估指标 社区发现-模块度 前言 最近方向是团案挖掘,关于聚类算法和社区发现,其实之前不怎么了解,最近得补补了. 聚类和社区发现 首先要先明白这两 ...

  8. 单细胞算法-聚类-louvain算法

    单细胞算法-聚类-louvain算法 什么是Louvain算法 Louvain算法是利用度量社区模块度进行聚类的一个算法. 关于模块度的介绍: link 关于louvain算法的介绍: https:/ ...

  9. 【深度学习】最新「深度学习社区发现」综述论文,174篇文献概述六大类方法(含Github资源)...

    | 作者:Xing Su | 单位:麦考瑞大学 | 研究方向:人工智能与数据科学 社区发现能够揭示各类网络中成员的特征与联系,在网络分析中具有重要意义.近年来,深度学习技术在发现社区结构时,以处理高维 ...

  10. 最新「深度学习社区发现」综述论文,174篇文献概述六大类方法(含Github资源)...

    嘿,记得给"机器学习与推荐算法"添加星标 | 作者:Xing Su | 单位:麦考瑞大学 | 研究方向:人工智能与数据科学 社区发现能够揭示各类网络中成员的特征与联系,在网络分析中 ...

最新文章

  1. 基于BootStrap,FortAweSome,Ajax的学生管理系统
  2. 安装Docker step by step
  3. 学习笔记-记ActiveMQ学习摘录与心得(二)
  4. pythonlistsort函数_python用List的内建函数list.sort进行排序
  5. 2020年度国家自然科学基金医学领域结果公布(9月27后可查)
  6. springboot添加webmagic_SpringBoot+Solr + webmagic JD商品爬取数据,放入solr中做搜索
  7. 雷军:小米开启“重新创业” ;Debian GNU/Linux诞生27周年|极客头条
  8. 关于java是最好的语言的段子_疯狂java——第一章 java语言概述与开发环境
  9. 计算机设备管理中的其他设备,解决方法:计算机设备管理器中的“其他设备”驱动程序问题!...
  10. 【f1c200s/f1c100s】不带中断引脚采用扫描的方式实现通用gpio-keys
  11. 有趣的代码,让生活更加愉快(抖音网红代码)
  12. 前端er应该掌握的数据可视化技术
  13. vue ES6 导入导出电话区号 export import
  14. PhoneGap 外掛程式開發指南
  15. 数据预处理(一):无量纲化
  16. 手机厂商要和年轻人交朋友,性价比日渐式微?
  17. cot函数 java_MySQL 数学函数
  18. 面试:Handler内存泄露的原因是什么?
  19. rt-link源码笔记,适用于自定义点对点的通信协议
  20. React路由跳转时通过传参进行动态渲染的方法

热门文章

  1. Dijkstra算法图解
  2. 赶在世界末日前完成的2012年全年总结
  3. JVisualVM的使用实录
  4. linux系统 qq安装教程,在Linux环境下安装QQ教程
  5. 三码合一方法 制作QQ、微信、支付宝收款码合一
  6. Android Studio中XML注释错误问题
  7. Wireshark数据抓包分析之FTP协议
  8. Linux下libiconv库的安装和使用
  9. 《深入理解Java虚拟机:JVM高级特性与最佳实践》 (第3版)周志明 著
  10. 读 Joseph J. Rotman 之《抽象代数基础教程》