Communities found that (a) - Survey of Algorithms

Introduction to basic concepts: https://baike.baidu.com/item/%E7%A4%BE%E5%8C%BA%E5%8F%91%E7%8E%B0%E7%AE%97%E6%B3 95% / 19,460,396

1. Introduction communities found

Community from Intuitively, refers to a dense network of some groups, each link between nodes in relatively close within the community, but the connection between the respective communities but relatively sparse (FIG. 1, of course, defined communities that there is more than one). Such a phenomenon is studied community for many years, even the earliest records from 80 years ago.

 

More classic case study communities include Karate Club (karate club), scientists cooperation network (Collaboration network) and zebra populations (zebras) social behavior studies (see Figure 2), where the famous karate club community has become usual test community found that the effect of one standard algorithms (benchmark).

With the rise of the Internet and online social networking sites, in Twitter, so users Facebook, Flickr generated content (UCG) using the technology community found on the site has become a craze. In these communities the mutual exchange and user feedback, can bring a wealth of information and new content for the traditional structure of the community, so that the community found a new development.

2. community discovery algorithm description (incomplete)

Since many, many community discovery algorithm, the core presents a comparison of FIG community discovery algorithm described (in slightly modified to reference a directory, including but not limited to):

The figure of the algorithm involved a brief introduction:

Figure 2.1 Segmentation

Community can be seen as a dense sub-graph structure, graph partitioning algorithm to solve. FIG target segmentation is to group of nodes in the graph is divided into a predetermined size, the minimum number of edges between these groups, this problem is NP-hard in.

2.1.1 bipartite graph

The early division are bipartite graph, also found that community-based dichotomy encountered pay would put the situation in which a sub-graph subdivision. There are more classic dichotomy spectrum, Laplace matrix of a second small eigenvalues ​​of the community dichotomous, this is actually a special case belongs to the spectral method.

2.1.2 KL algorithm

KL算法通过基于贪婪优化的启发式过程把网络分解为2个规模已知的社区。该算法为网络的划分引入一个增益函数,定义为两个社区内部的边数与两个社区边数之间的差,寻求Q的最大划分办法。

2.1.3 最大流算法

基于最大流的算法是G.W.Flake提出的。他给网络加了虚拟源节点 和终点节点 ,并证明了经过最大流算法之后,包含源点 的社区恰好满足社区内节点链接比与社区外的链接要多的性质。

2.2 聚类

社区发现也可以看做一组内容相似的物体集合,适用于聚类算法,只要定义了节点相似度。聚类算法和网络发现(聚类相关的)算法可以很容易地互相转化,所以两者之间的区别在理论上不是很重要。区别在于,社区发现可以是局部的,而聚类是全网络的。

2.2.1 层次聚类

层次聚类假设社区是存在层次结构的(其实不一定,可能是中心结构),计算网络中每一对节点的相似度。

然后分为凝聚法和分裂法两种:

凝聚法:根据相似度从强到弱连接相应节点对,形成树状图(Dendrogram),根据需求对树状图进行横切,获得社区结构。

分裂法:找出相互关联最弱的节点,并删除他们之间的边,通过这样的反复操作将网络划分为越来越小的组件,连通的网络构成社区。

2.2.2 划分聚类/扁平聚类

像k-means什么的就很好,但是需要注意一点,k-means需要欧氏空间,上面根据邻接关系定义的节点相似度并不适用。

2.2.3 谱聚类

图分割中的如 Ratio Cut和Normalized Cut其实和谱聚类是等价的(见参考3),所以谱聚类也能用在社区发现上。

2.3 分裂法

这里的分裂法和层次聚类中的类似,区别是前者不计算节点相似度,而是删除是两个社区之间的关联边,这些边上的两点的相似度不一定很低。其中最著名的算法就是Girvan-Newman算法,根据以下假设:社区之间所存在的少数几个连接应该是社区间通信的瓶颈,是社区间通信时通信流量的必经之路。如果我们考虑网络中某种形式的通信并且寻找到具有最高通信流量(比如最小路径条数)的边,该边就应该是连接不同社区的通道。Girvan-Newman算法就是这样,迭代删除边介数(Edge Betweenness)最大的边。

2.4 谱方法

基于谱分析的社区算法基于如下事实,在同一个社区内的节点,它在拉普拉斯矩阵中的特征向量近似。将节点对应的矩阵特征向量(与特征值和特征向量有关的都叫谱)看成空间坐标,将网络节点映射到多维向量空间去,然后就可以运用传统的聚类算法将它们聚集成社团。这种方法不可避免的要计算矩阵的特征值,开销很大,但是因为能直接使用很多传统的向量聚类的成果,灵活性很高。

2.5 基于模块度的方法

模块度不仅仅作为优化的目标函数提出,它也是目前是最流行的用来衡量社区结果好坏的标准之一(它的提出被称作社区发现研究历史上的里程碑)。我们知道,社区是节点有意识地紧密联系所造成的,它内部边的紧密程度总比一个随机的网络图来的紧密一些,模块度的定义就是基于此,它表示所有被划分到同一个社区的边所占的比例,再减除掉完全随机情况时被划分到同一个社区的边所占的比例,模块度的一个优点是好坏与社区中点的数目无关。模块度真是个好东西,第一次对社区这个模糊的概念提出了量化的衡量标准(不过据说对于小粒度的不太准)。所以对模块度的算法优化多种多样,从贪心到模拟退火等应有尽有。

2.6 动态算法

自旋模型和同步算法应该是物理学家提出来的算法,话说物理学家在社区发现领域十分活跃,发了不少论文。随机游走是基于以下思想:如果存在很强的社区结构,那么随机游走器(random walker)会在社区内部停留更长的时间,因为社区内部的边密度比较高。

2.7 基于统计推断的算法

基于统计推断的方法包括观察到的数据集和对模型的假设。如果数据集是图,模型假设对节点之间如何联系的描述就要符合真实的图结构。

2.8 其他

个人觉得重叠和动态社区都很难成为一个类别,因为具体算法各有不同,用共同点“重叠”或“动态”来作为一类又太广泛了,比较适合作为特征或维度来描述。而Web社区特指Web页面相互连接而成的集合,这又是一个大类,底下有不少算法。

Guess you like

Origin blog.csdn.net/App_12062011/article/details/91352358