社区发现的学习笔记

社区发现

社团结构与计算机中的图分割和社会学中的分级聚类有密切关系。

分级聚类是寻找网络中社团结构的一类传统算法,根据向网络中添加边还是从网络中移除边,该类算法可分为两类:凝聚方法、分裂方法。

一、基于模块度

**无向无权图:**

模块度(Modularity)是近年常用的一种衡量社团划分质量的标准。基本思想就是把社团划分后的网络与相应的零模型进行比较,来估量实际的网络和随机的网络的差别。

社团内部边的总和:Q(real)=1/2*Sigma(a(ij)*delta(C(i),C(j)))

零模型中社团内部的边的总和的期望值:Q(null)=1/2*Sigma(p(ij)*delta(C(i),C(j)))

模块度:该网络的社团内部边数与相应的零模型的社团内部边数之差占整个网络边数M的比例:

Q=(Q(real)-Q(null))/M

对于有向和有权重的网络,模块度中的边数用边权值代替,点度数用点的强度代替。

基于模块度的社团检测算法:CNM算法,复杂度O(nlog2n),[**算法代码**](http://www.cs.unm.edu/~aaron/research/fastmodularity.htm "CNM算法")

由于模块度的局限性:无法识别模块充分小的社团,而且模块度也无法直接比较两个网络的社团划分的优劣。

###二、派系过滤算法

**基本概念:** *k-clique(k-派系)、相邻、彼此连通、k-clique社团*

1. **k-clique(k-团、k-派系):** 包含k个节点的全耦合子图,即k个节点中的任意两个之间都有边相连。

2. **相邻的:**如果两个k-clique有k-1个公共节点,那么成两个k-clique是相邻的。

3. **彼此连通的:**利用若干**相邻的**K-clique达到另一个k-clique,称两个k-clique是彼此联通的。、

算法:

```

1.初始集合A={v},B={v的邻居};

2.从集合B中移动一个节点到集合A,同时删除集合B中不在与集合A中所有节点相连的节点;

3.如果在集合A的大小未达到s之前,结合B已经为空集,或者集合A和B为已有的一个加大的派系中的子集,则停止计算,返回上一步。否则当集

合A的大小达到s,就得到一个新的派系,记录该派系,然后返回上一步,继续寻找包含节点v的新的派系。

```

首先,找到大小为k的派系,然后利用派系,和以上定义的派系的相邻、连通等定义来寻找k-派系社团。

###三、连边社团算法

2010年,Ahn、Bagrow、Lehmann提出检测重叠性和层次性的新思路:一个社团是一组紧密相连的连边的集合,而不是通常定义的紧密连接的点的集合。

这样在社团划分的时候,划分到一个社团的是边的集合,而不是传统算法里的点的集合。

社团检测评价标准:

1、基准图(空手道网络、l-划分模型(Planted l-partition model))

让提出的社团划分算法,在这些基准图上进行,从而从真实、典型的数据样例角度来检测提出算法的优劣。

2、元数据

从其他指标来衡量社团检测算法,1、社团质量2、重叠质量3、社团覆盖4、重叠覆盖

###四、其他方法

快模型(Block models)

矩阵分解方法。

#####联合聚类[1]

1. 联合聚类又称为二部聚类(bi-clustering),是聚类方法的一种,最初用户基因表达(gene expression)、文本分析等领域,可以同时对基因和所处的表达环境或者文本以及单词进行聚类。

2. 对于使用矩阵方式表达的训练数据,当行和列同时具有相关性时,应当考虑使用联合聚类,因为无论从哪一个维度进行单独聚类,都会忽略另一维的相关信息。

3. 联合聚类的基本原理:通过行聚类和列聚类两个步骤进行循环迭代直至收敛。

###五、相关软件的试用:

1. Gephi

可视化效果较好

对于**社区划分**的算法:**Louvain算法**,此种方法基于模块度的,首先把每个节点认为是一个社区,然后通过把节点分配给它的邻居节点,计算分配个各个邻居后的模块度值,取模块度值最大的作为此步的划分,然后把划分好的社团抽象为“节点”,重复以上步骤,直到整个网络的模块度不再发生变化。

2. [graphChi](https://github.com/GraphChi/graphchi-cpp "graphChi-github")

卡内基梅隆大学的Aapo Kyrola 博士开发的一个项目,GraphLab的一个分支。能单机完成大数据的图计算。

3. [CFinder](http://www.cfinder.org/ "cfinder官网")

寻找和可视化重叠社区的开源软件。

[1] Co-clustering by Block Value Decomposition SIGKDD‘05

时间: 2024-09-30 05:23:42

社区发现的学习笔记的相关文章

Deep Learning(深度学习)学习笔记整理系列 | @Get社区

body { font-family: Microsoft YaHei UI,"Microsoft YaHei", Georgia,Helvetica,Arial,sans-serif,宋体, PMingLiU,serif; font-size: 10.5pt; line-height: 1.5; } html, body { } h1 { font-size:1.5em; font-weight:bold; } h2 { font-size:1.4em; font-weight:bo

Dynamic CRM 2015学习笔记(4)修改开发人员资源(发现服务、组织服务和组织数据服务)url地址及组织名

在azure vm上安装了CRM 2015后 Dynamic CRM 2015学习笔记(1)Azure 上安装 CRM 2015, 发现了一个问题,那就是在设置 ->自定义项 –> 开发人员资源 里面的几个ulr(发现服务.组织服务和组织数据服务)都不对,显示的都是http://机器名/XRMServices/2011/ -, 但这个url是访问不了的,正确的url应该是 http://xxx.cloudapp.net/XRMServices/2011/ - 下面介绍如何修改成正确的url.

OpenCV之Python学习笔记

OpenCV之Python学习笔记 直都在用Python+OpenCV做一些算法的原型.本来想留下发布一些文章的,可是整理一下就有点无奈了,都是写零散不成系统的小片段.现在看 到一本国外的新书<OpenCV Computer Vision with Python>,于是就看一遍,顺便把自己掌握的东西整合一下,写成学习笔记了.更需要的朋友参考. 阅读须知: 本文不是纯粹的译文,只是比较贴近原文的笔记:         请设法购买到出版社出版的书,支持正版. 从书名就能看出来本书是介绍在Pytho

sass个人学习笔记

Materliu 在慕课的视频: http://www.imooc.com/learn/364 . http://www.imooc.com/wiki/371 sass入门:http://www.w3cplus.com/sassguide/ 个人先看了 <Sass与Compass实战>(Materliu 是中文翻译之一)后看的视频,看书的时候不是很了解看了视频之后又看了一遍书终于少许了解sass了 下面是我个人对<Sass与Compass实战>这本书学习笔记总结,有些是个人极端自我

springMvc学习笔记01

此系列文章记录学习springMvc的过程: 第一想法是到spring官网下载相关jar, 查看了一下,点了目录链接,然而并没有jar的下载链接,还以为自己看错了,又特地准备了翻译工具,结果还是没有发现jar和源码的下载链接,我郁闷了,why, 网友们说spring的jar和示例在github上,看了官网的文档介绍,觉得不太好,下面会贴出我学习时用到的链接,ps:至今我还认为可能是我太笨了没找到~~~ 1.下载jar包 http://repo.spring.io/libs-release-loc

学习笔记之Java Annotation学习总结 [ 光影人像 东海陈光剑 的博客 ]

?? 按照自己定的学习计划,今天是该写点什么了. ? 在上篇文章里提到的是JUnit的学习,其中就涉及到了一些内置的annotation,如@Test.@Ignore等.现在我就结合个人的理解谈下如何自定义自己的annotation. ? annotation能被用来为某个程序元素(类.方法.成员变量等)关联任何的信息,但annotaion不能影响程序代码的执行,无论增加.删除annotation,代码都始终如一的执行.另外,尽管一些annotation通过java的反射api方法在运行时被访问

Cocos2dx 学习笔记整理----开发环境搭建

最近在学习cocos2dx,预备将学习过程整理成笔记. 需要的工具和环境整理一下: 使用的版本 cocos2dx目前已经出到了v3.1.1,学习和项目的话还是用2.2.3为宜,毕竟不大想做小白鼠,并且学习了几天之后才发出3.X版本的,版本内容变动比较大. 开发环境 1 jdk 1.6以上 2 python 2.7为宜(创建项目要用的) 3 NDT+Android SDK 4 Cygwin或者MinGW 开发工具 1 Eclipse + CDT + ADT 2 VS2010 3 Sublime T

Spark GraphX学习笔记

概述 GraphX是 Spark中用于图(如Web-Graphs and Social Networks)和图并行计算(如 PageRank and Collaborative Filtering)的API,可以认为是GraphLab(C++)和Pregel(C++)在Spark(Scala)上的重写及优化,跟其他分布式 图计算框架相比,GraphX最大的贡献是,在Spark之上提供一站式数据解决方案,可以方便且高效地完成图计算的一整套流水作业. Graphx是Spark生态中的非常重要的组件,

Nutch学习笔记——抓取过程简析

Nutch学习笔记二--抓取过程简析 学习环境: ubuntu 概要: Nutch 是一个开源Java 实现的搜索引擎.它提供了我们运行自己的搜索引擎所需的全部工具.包括全文搜索和Web爬虫. 通过nutch,诞生了hadoop.tika.gora. 先安装SVN和Ant环境.(通过编译源码方式来使用nutch) apt-get install ant apt-get install subversion [email protected]:~/data/nutch$ svn co https: