Zhangmaoli / CommunityDetection

Web mining experiment.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

实现了5种社区发现算法


:

**1. girvannewman算法**

gn算法是一种分裂型的社区发现算法,在本实验中的实现如下:



`1. 计算各边的betweenness

`2. 去除betweenness值最高的边

`3. 计算该图的连通片

`4. 判断连通片的数目length(compsize),若小于k,转到`1.


**2. alinkjaccard算法**

alinkjaccard是一种层次聚类方法,它使用jaccard相似度作为节点间的"距离",再使用聚类算法,初始时每个节点为一个cluster,每次迭代将cluster间节点距离平均值最小的两个cluster合并,直到剩下k个cluster为止。


Basic algorithm is straightforward

1. Compute the distance matrix

2. Let each data point be a cluster

3. Repeat

4.   Merge the two closest clusters

5.   Update the distance matrix

6. Until only a single cluster remains




**3. rario_cut算法**

rcut是基于谱聚类的一种方法,可以把社区发现的问题转换成求矩阵特征向量,再在特征向量上使用kmeans算法。

定义矩阵D为图的度矩阵,W为图的邻接矩阵,则拉普拉斯矩阵L = D - W ,求这个矩阵的特征向量,把它按从小到大的顺序排列,取前k个特征向量,在上面使用kmeans算法得到聚类结果。



**4. ncut算法**

实现方法基本同rcut,只是这里定义的拉普拉斯矩阵为D^{-1/2}(D-W)D^{-1/2}

**5. modularity算法**

modularity算法在这里的实现方法类似谱聚类的方法,这里定义B = A - d*d'/(2*m);,A为图的邻接矩阵,d为顶点度数向量,m是图的边数。

该算法求B矩阵的特征向量,选择其中最大的k个向量来做kmeans算法。

About

Web mining experiment.


Languages

Language:MATLAB 91.3%Language:M 8.7%