Affinity Propagation聚类算法详解

欢迎关注”生信修炼手册”!

Affinity Propagation简称AP, 称之为近邻传播算法, 是一种基于图论的聚类算法。将所有样本点看做是一个网络中的节点,图示如下

Affinity Propagation聚类算法详解_第1张图片

在样本点构成的网络中,每个样本点都是潜在的聚类中心,同时也归属于某个聚类中心点,对应这样的两面性,提出了以下两个概念

Affinity Propagation聚类算法详解_第2张图片

1. responsibility, 吸引度,对于(i, k)而言,定量描述样本k作为样本i的聚类中心的程度

2. availability,归属度,对于(i, k)而言,定量描述样本i支持样本k作为其聚类中心的程度

具体的定义方式如下

1. Similarity

相似度,这里的定量方式是欧氏距离的负数,公式如下

之所以如此定义,是为了对称性的考量,图这个数据结构的最常见表示方式就是邻接矩阵了,图示如下

Affinity Propagation聚类算法详解_第3张图片

基于相似度,我们可以得到样本点之间的相似度矩阵。在该相似度矩阵中,对角线的值为样本自身的距离,理论上是0,但是为了后续更好的应用相似度来更新吸引度和归属度,引入了preference参数。

这个参数就是定义相似度矩阵中对角线上的值,是认为设定的,比如可以取相似度的均值或者中位数。在scikit-learn中,默认用的就是中位数。

这个参数会影响聚类的类别数目,该值越大,聚类的类别数越多。

2. Responsibility

吸引度,公式如下

3. Availability

归属度,公式如下

Affinity Propagation聚类算法详解_第4张图片

对于网络中的所有节点,借助邻接矩阵的思想,我们可以计算得到吸引度矩阵R和归属度矩阵A。

AP算法通过迭代的方式来达到聚类效果,每次迭代其实就是更新上述两个矩阵的值, 在更新的时候,引入了一个叫做dumping  factor的参数来控制更新的幅度,公式如下

r(i,k)new = λ*r(i,k)old + (1-λ)*r(i,k)
a(i,k)new = λ*a(i,k)old + (1-λ)*a(i,k)

这个系数的值是需要人为指定的, 建议设置范围为0.5到1。迭代收敛之后,需要挑选作为聚类中心的样本点,选取的标准是样本点的R+A>0, 确定了聚类中心之后,在确定对应的归属点即可。

在scikit-learn中,进行AP聚类的代码如下

>>> from sklearn.cluster import AffinityPropagation
>>> import numpy as np
>>> X = np.array([[1, 2], [1, 4], [1, 0],[4, 2], [4, 4], [4, 0]])
>>> clustering = AffinityPropagation(random_state=5).fit(X)
>>> clustering
AffinityPropagation(random_state=5)
>>> clustering.labels_
array([0, 0, 0, 1, 1, 1], dtype=int32)
>>> clustering.predict([[0, 0], [4, 4]])
array([0, 1], dtype=int32)
>>> clustering.cluster_centers_
array([[1, 2],
       [4, 2]])

作为一种基于图论的聚类算法,该算法适用范围广,不需要事先指定聚类的类别数目K, 而且聚类效果稳定,多次运行的结果一致,但是,该算法也需要人为指定preference和dump factor两个参数,而且算法复杂度比较高,运算时间比较久。

·end·

—如果喜欢,快分享给你的朋友们吧—

原创不易,欢迎收藏,点赞,转发!生信知识浩瀚如海,在生信学习的道路上,让我们一起并肩作战!

本公众号深耕耘生信领域多年,具有丰富的数据分析经验,致力于提供真正有价值的数据分析服务,擅长个性化分析,欢迎有需要的老师和同学前来咨询。

  更多精彩

  • KEGG数据库,除了pathway你还知道哪些

  • 全网最完整的circos中文教程

  • DNA甲基化数据分析专题

  • 突变检测数据分析专题

  • mRNA数据分析专题

  • lncRNA数据分析专题

  • circRNA数据分析专题

  • miRNA数据分析专题

  • 单细胞转录组数据分析专题

  • chip_seq数据分析专题

  • Hi-C数据分析专题

  • HLA数据分析专题

  • TCGA肿瘤数据分析专题

  • 基因组组装数据分析专题

  • CNV数据分析专题

  • GWAS数据分析专题

  • 2018年推文合集

  • 2019年推文合集

  • 2020推文合集

  写在最后

转发本文至朋友圈,后台私信截图即可加入生信交流群,和小伙伴一起学习交流。

扫描下方二维码,关注我们,解锁更多精彩内容!

Affinity Propagation聚类算法详解_第5张图片

一个只分享干货的

生信公众号

你可能感兴趣的:(聚类,人工智能,聚类算法,无监督学习,数据分析)