1、社区及社区发现:
网络图内部连接比较紧密的节点子集合对应的子图叫做社区(community),各社区节点集合彼此没有交集的称为非重叠型(disjoint)社区,有交集的称为重叠型(overlapping)社区。对给定的网络图寻找其社区结构的过程称为“社区发现”。大体上看,社区发现的过程就是一种聚类的过程。

2、基本思想
标签传播算法是不重叠社区发现的经典算法,其基本思想是:将一个节点的邻居节点的标签中数量最多的标签作为该节点自身的标签。给每个节点添加标签(label)以代表它所属的社区,并通过标签的“传播”形成同一标签的“社区”结构。

给每个节点添加标签(label)以代表它所属的社区,并通过标签的“传播”形成同一标签的“社区”结构。一个节点的标签取决于它邻居节点的标签:假设节点z的邻居节点有z1至zk,那么哪个社区包含z的邻居节点最多z就属于那个社区(或者说z的邻居中包含哪个社区的标签最多,z就属于哪个社区)。优点是收敛周期短,无需任何先验参数(不需事先指定社区个数和大小),算法执行过程中不需要计算任何社区指标。

时间复杂度接近线性:对顶点分配标签的复杂度为O(n),每次迭代时间为O( m),找出所有社区的复杂度为O (n +m),但迭代次数难以估计

3、传播过程
1)初始时,给每个节点一个唯一的标签;
2)每个节点使用其邻居节点的标签中最多的标签来更新自身的标签。
3)反复执行步骤2),直到每个节点的标签都不再发生变化为止。
一次迭代过程中一个节点标签的更新可以分为同步和异步两种。所谓同步更新,即节点z在第t次迭代的label依据于它的邻居节点在第t-1次迭代时所得的label;异步更新,即节点z在第t次迭代的label依据于第t次迭代已经更新过label的节点和第t次迭代未更新过label的节点在第t-1次迭代时的label。

注:
1、迭代次数设定一个阈值,可以防止过度运算;
2、对于二分图等网络结构,同步更新会引起震荡;
//3、类似(“强”社区>)定义的结构(该社区>=);
4、每个顶点在初始的时候赋予唯一的标签,即“重要性”相同,而迭代过程又采用随机序列,会导致同一初始状态不同结果甚至巨型社区的出现;
5、如果能预测“社区中心”点,能有效提高社区发现的准确度,大幅提高效率;
6、同一节点的邻居节点的标签可能存在多种社区最大数目相同的情况,取“随机”一个作为其标签

4、算法改进思路:初始化或传播改进
1)给节点或边添加权重(势函数、模块密度优化、LeaderRank值、局部拓扑信息的相似度、标签从属系数等),信息熵等描述节点的传播优先度,进而初步确定社区中心点以提高社区划分的精度;
2)标签初始化改进,如提取一些较为紧密的子结构来作为标签传播的初始标签(非重叠最小极大团提取算法 orz。。。)或通过初始社区划分算法先确定社区的雏形再进行传播。
3)标签随机选择改进,将1)中的权值和节点邻接点的度数等作为参考因素,对标签更新过程进行修正。

1)在社区中寻找不重叠三角形作为起始簇的雏形,以提高算法结果的稳定性和运行效率;
2)添加标签熵属性,在迭代过程中不采用随机序列,而是根据每个节点的标签熵来排序序列;
3)在2)的基础上,为了不完全消除标签传播算法的随机性,将排序好的队列平均分成三个部分,在每个部分内,节点进行随机排列。
4)对于同一节点的邻居节点的标签可能存在多种社区最大数目相同的情况,不使用随机方法,而是分析该节点的邻节点的邻节点集标签分布情况来决定该节点的标签
5)在社区中寻找以度最大的若干节点为中心的“雪花型”结构作为起始簇的雏形
在实现的过程中,将上述方案进行组合衍生出更多的可行方案,初步试验结果表明算法的随机性与稳定性很难同时保证,设定起始簇的结构收敛速度快但有可能生成巨型社区;在节点较少的情况下,标签熵的方法准确率和稳定性最好;至于组合方案初步的试验验证发现效果反而下降了。

5、评价标准:社区发现的主要评价指标有Jaccard指数,fsame指数、NMI(规范化交互信息)以及Modularity(模块度)等,常用的训练集是一些真实基准网络,如:karate(空手道俱乐部,34个节点,78条边的无向图)、Football(美国大学橄榄球联盟、115个节点无向图)等
Modularity(模块度):网络中连接社区内部边所占的比例与另一网络中的内部边的期望值之间的差值

Jaccard指数:衡量社区分割正确性的指标,在已知正确划分的情况下通过正确分类的节点对的数量来计量
NMI:依然是已知划分情况下与真实结果差异度的比较指标,其标准差可以衡量算法的稳定性

6、伪代码

输入:无向图邻接矩阵AdjacentMatrix,节点个数VerticeNum
输出:存储节点标签的分类数组Community
//初始化每个节点的标签
For i <- 0 to VerticeNum DoCommunity[i] <- i//寻找i节点的所有邻居存入Neighbor[i]FindMaetexNonZero(i,AdjacentMatrix,NeighBor[i])
while 未达到分类标准 or 未超出迭代阈值 thenRandomSort(SS)//生成随机序数队列SSFor i <- 0 to VerticeNum Do//统计节点i邻居中数量最多的标签VectorFrequency(Neighbor[i], lable)//若只有一个数量最多则直接赋值if lable.size() = 1 thenCommunity[i] <- lable[0]//若有多个相同数量的标签则随机选择一个else thenCommunity[i] <- lable[random]
return Community

http://blog.csdn.net/cleverlzc/article/details/39494957

学习笔记(5)-标签传播(LPA)小结相关推荐

  1. Git学习笔记:标签管理以及GItHub

    前言 在补习python的时候主要参考的是廖雪峰的教程Python教程,在学习完后准备完成期末作业时,遇到了一个技术难题,需要初步掌握git,因此开始了git的学习. 本教程参考廖雪峰的Git教程 G ...

  2. 深度学习入门课程学习笔记06 反向传播

    本篇学习笔记对应深度学习入门课程 第七课 博客地址:http://blog.csdn.net/tangyudi 欢迎转载 反向传播: 咱们在之前的课程讲了一系列的前向传播的知识点,前向传播也就是从输入 ...

  3. 【Unity学习笔记】标签(Tag)和层(Layer)

    声明:此篇文章是个人学习笔记,并非教程,所以内容可能不够严谨.可作参考,但不保证绝对正确.如果你发现我的文章有什么错误,非常欢迎指正,谢谢哦. 此篇文章是根据官网手册总结:https://docs.u ...

  4. 视频编码帧间学习笔记(个人向初学小结)

    以下链接是视频编码的浅析,原理解释的很详细(像素计算过程错了,但原理没错),小白必看. 视频编码技术详解_tiankong19999的博客-CSDN博客_视频编码1.引言 如今我们所处的时代,是移动互 ...

  5. Struts2学习笔记——StrutsTags(标签)

    Struts2的标签使用起来很方便.一个网页来进行测试: <?xml version="1.0" encoding="GB18030" ?> < ...

  6. Pytorch学习笔记03----反向传播算法

      反向传播算法是训练神经网络的最常用且最有效的算法.本文将阐述反向传播算法的基本原理,并用 PyTorch 框架快速的实现该算法. 反向传播算法 一.正向传播算法 二.反向传播 一.正向传播算法   ...

  7. Python自然语言处理学习笔记(66):7.7 小结

    7.7   Summary 小结 Information extraction systems search large bodies of unrestricted text for specifi ...

  8. Bootstrap学习笔记--常用标签和类模板

    h标签:bootstrap中的h标签被改写了 比原标签字体要细 <h1>我是标题1 h1</h1> <h2>我是标题2 h2</h2> <h3&g ...

  9. 基本STRUTS标签-学习笔记-Bean标签

    <bean:include> 和标准的JSP标签<jsp:include>很相似,都可以用来包含其他Web资源的内容,区别在于<bean:include>标签把其它 ...

最新文章

  1. Python 数据分析三剑客之 NumPy(二):数组索引 / 切片 / 广播 / 拼接 / 分割
  2. Java分布式篇4——Redis
  3. lisp xy轴不等比缩放_解决高缩放等级下的抖动问题
  4. 面试要15K,HR说你只值10K,怎么斗得过?
  5. linux命令 选项,Linux常用命令及选项
  6. 多线程之-并发任务间交换数据
  7. python扫雷代码_Python+OpenCV实现自动扫雷,创造属于自己的世界记录!
  8. 计算机辅助个人当面访问,优课联盟——共建共享,学分互认
  9. masm编译.asm文件报错fatal errorA1000: cannot open file
  10. 怎么在windows系统中远程控制服务器
  11. 全面拆解携程云原生实践,打造智能弹性的云端酒店直连系统
  12. ubuntu服务器系统安装教程,Ubuntu--服务器版本系统安装图解教程
  13. 『ABP』ABP vNext中使用开源日志面板 LogDashboard
  14. .md文件转.pdf文件
  15. 怎样使用ApowerMirror实现将手机屏幕投屏到电脑
  16. pm2在服务器上部署express项目
  17. 项目实践——语音计算器
  18. BatchNorm、LayerNorm、InstanceNorm及GroupNorm
  19. Android中使用ToggleButton(开关按钮)按钮实现的灯泡开关效果
  20. IE11升级(不联网模式)之P处理

热门文章

  1. 【Qt】 Fractal Designer 5.1 - Help(中文版)
  2. 茶饮行业舆情管理方案
  3. 机器视觉技术的发展动态
  4. 卡巴斯基杀毒软件被曝出用户上网痕迹泄露漏洞
  5. 腾讯云CVM使用体验
  6. 画活动图教程_如何画一只漫画风的手,看着自己的俩只手,带你从零开始入门手绘——008...
  7. 打印机文件里没有服务器属性,win7没有打印机服务器属性设置
  8. 翻遍了整个知乎,终于找到了这套阿里Java面试指南,强烈建议社招程序员都看看
  9. 测试开发之Django实战示例 第十章 创建在线教育平台
  10. 盒子模型之京东快报页面