图聚类算法总结

   论文: A new attributed graph clustering by using label propagation in complex  networks

分类

        现有的社区检测算法分为两类:1)非属性图主要关注基于节点的连通性结构,忽略节点的属性;2)属性图同时处理结构和属性信息。非属性图分为四大类:a)层次聚类,b)基于模块化的方法,c)基于随机游走的方法,d)基于标签传播的算法,属性图分为四大类:a)边缘加权,b)增广图,c)质量函数优化,d)统一距离。

非属性图

分层聚类

        任何分层聚类方法的出发点都是相似性度量的定义,层次聚类方法可以分为两类,即聚类算法和分裂算法。

基于随机游走的方法

        在随机行走方法中,每个节点最初包含一个行走器。然后每个步行者将随机选择它当前所在节点的邻居进行定位 。

基于模块化的方法

        尝试基于模块化度量来检测社区。这些方法假定对于分离良好的社区具有较高的模块化值。显然,将n个节点划分为k个非空群的方法个数由第二类斯特林数(k)给出;因此,不同的社区划分数是贝尔数。因此,证明了模块化优化是一个np完全问题。所有基于模块化的方法的目的都是发现网络的一个分区,从而使模块化值最大化。提出的模块化最大化方法可分为三大类:基于贪婪的方法、启发式方法和频谱优化方法

标签传播算法(Label propagation algorithm, LPA)

        是Raghavan等人(2007)提出的一种流行且快速的社区检测方法。最初,为网络中的每个节点分配一个唯一的标签。在下一步中,每个节点使用其邻居中出现频率最高的标签更新其标签。当邻居的一些标签出现频率相同时,算法随机选择出现频率最高的标签。这个标签传播重复这个过程,直到具有相同标签的节点被分组到一个社区中

属性图

        属性图聚类利用来自结构和属性的信息来查找图中的聚类。这些集群是一组密集连接的节点,它们的属性也非常相似

        其方法分为四类:(1)将属性图转换为加权图的方法;(2)基于距离的方法;(3)基于模型的方法;(4)基于子空间的方法。

将属性图转换为加权图

        如FocusCo (Perozzi et al., 2014)。通过将节点属性的信息存储在图的边缘内,从节点中删除节点属性,这是通过在节点边缘的两个节点之间赋予属性一个相似度值作为其权重来执行的。

属性的去除:一旦节点属性被编码为边权重,原始的节点属性就可以从图中移除,从而得到一个不再包含节点属性的新加权图。新图的分析和处理将完全基于这些边权重,即基于节点间属性的相似度。

基于距离的方法

        如SI-Cluster (Zhou and Liu, 2013)、SA-Clustering (Zhou et al., 2009)和CODICIL(阮等,2013)。结构信息存储在节点间的相似度(距离)函数中,并与属性相似度(距离)函数相结合。

基于模型的方法

        包括但不限于PCL-DC (Yang et al., 2009)、贝叶斯概率模型(Xu et al., 2012)和CESNA (Yang et al., 2013)。它们基于概率模型,避免了人为设计的距离测量。

子空间聚类方法

        在这一类别中,一组被提出的方法包括CoPaM (Moser等人,2009)、GAMer (Gunnemann等人,2010)、DB-CSC (g<s:1>内曼等人,2011)和SSCG (g<s:1>内曼等人,2013)。它们只在作为所有节点属性子集的相关特征的上下文,特别是对于高维数据。

      

  • 23
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
聚类算法是一种常用的无监督学习方法,可以将数据集分成若干个组,每个组内的数据具有相似性。下面是一些常用的聚类算法及对应实例代码。 1. K-Means算法 K-Means算法是一种基于距离的聚类算法,其核心思想是将数据集分成K个簇,使得每个数据点都属于离其最近的簇。K-Means算法的步骤如下: 1. 随机选择K个质心(簇中心)。 2. 将每个数据点分配到距离其最近的质心所在的簇中。 3. 重新计算每个簇的质心。 4. 重复步骤2和3,直到簇中心不再改变或达到最大迭代次数。 下面是K-Means算法的Python实现代码: ```python from sklearn.cluster import KMeans # 创建数据集 X = [[1, 2], [1, 4], [1, 0], [4, 2], [4, 4], [4, 0]] # 创建K-Means模型 kmeans = KMeans(n_clusters=2) # 训练模型 kmeans.fit(X) # 预测结果 y_pred = kmeans.predict(X) # 输出聚类结果 print(y_pred) ``` 2. 层次聚类算法 层次聚类算法是一种划分聚类算法,其核心思想是从单个数据点开始,将最相似的点组合成一个簇,逐步合并成更大的簇,直到所有数据点都被合并到同一个簇中。层次聚类算法有两种方式:自下而上的聚合和自上而下的分裂。下面是自下而上的聚合层次聚类算法的Python实现代码: ```python from scipy.cluster.hierarchy import dendrogram, linkage import matplotlib.pyplot as plt # 创建数据集 X = [[1, 2], [1, 4], [1, 0], [4, 2], [4, 4], [4, 0]] # 计算距离矩阵 Z = linkage(X, 'ward') # 绘制树状 plt.figure(figsize=(10, 5)) dendrogram(Z) plt.show() ``` 3. DBSCAN算法 DBSCAN算法是一种基于密度的聚类算法,其核心思想是将密度相连的数据点划分为同一个簇。DBSCAN算法的步骤如下: 1. 选择一个未访问的数据点。 2. 如果该点周围的密度达到预设的阈值,则将其作为一个新的簇的中心点,并将其密度可达的所有点加入该簇。 3. 重复步骤2,直到所有数据点都被访问。 下面是DBSCAN算法的Python实现代码: ```python from sklearn.cluster import DBSCAN # 创建数据集 X = [[1, 2], [1, 4], [1, 0], [4, 2], [4, 4], [4, 0]] # 创建DBSCAN模型 dbscan = DBSCAN(eps=1, min_samples=2) # 训练模型 dbscan.fit(X) # 预测结果 y_pred = dbscan.labels_ # 输出聚类结果 print(y_pred) ``` 以上就是几种常用的聚类算法及对应实例代码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值