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

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

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

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

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

具体的定义方式如下

1. Similarity

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

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

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

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

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

2. Responsibility

吸引度,公式如下

3. Availability

归属度,公式如下

对于网络中的所有节点,借助邻接矩阵的思想,我们可以计算得到吸引度矩阵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聚类算法详解相关推荐

  1. 聚类 python_python中实现k-means聚类算法详解

    算法优缺点: 优点:容易实现 缺点:可能收敛到局部最小值,在大规模数据集上收敛较慢 使用数据类型:数值型数据 算法思想 k-means算法实际上就是通过计算不同样本间的距离来判断他们的相近关系的,相近 ...

  2. 图解机器学习算法(13) | 聚类算法详解(机器学习通关指南·完结)

    作者:韩信子@ShowMeAI 教程地址:https://www.showmeai.tech/tutorials/34 本文地址:https://www.showmeai.tech/article-d ...

  3. 谱聚类算法详解及代码实现

    谱聚类算法详解及代码实现 文章目录 谱聚类算法详解及代码实现 参考 关于谱聚类介绍 谱聚类概述 谱聚类前置知识 无向权重图 邻接矩阵 度矩阵 拉普拉斯矩阵 相似度矩阵 确定目标函数 初始化目标函数(最 ...

  4. kmeans聚类算法matlab_KMeans聚类算法详解

    "如果把人工智能比作一块大蛋糕,监督学习只是上面的一层奶油". 日常生活中,从人脸识别.语音识别到搜索引擎,我们看到越来越多人工智能领域的算法逐渐走向落地.尽管全球每日新增数据量以 ...

  5. FCM聚类算法详解(Python实现iris数据集)

    参考:https://blog.csdn.net/on2way/article/details/47087201 模糊C均值(Fuzzy C-means)算法简称FCM算法,是一种基于目标函数的模糊聚 ...

  6. Kmeans聚类算法详解

    1. 前言 作为无监督聚类算法中的代表--K均值聚类(Kmeans)算法,该算法的主要作用是将相似的样本自动归到一个类别中.所谓的监督算法,就是输入样本没有对应的输出或标签.聚类(clustering ...

  7. K-means聚类算法详解

    K-means也是聚类算法中最简单的一种了,但是里面包含的思想却是不一般.最早我使用并实现这个算法是在学习韩爷爷那本数据挖掘的书中,那本书比较注重应用.看了Andrew Ng的这个讲义后才有些明白K- ...

  8. 聚类算法详解——深度AI科普团队

    聚类是一种无监督的学习,它将相似的对象归到同一个簇中.它有点像全自动分类.聚类方法几乎可以应用于所有对象,簇内的对象越相似,聚类的效果越好. K-均值聚类算法 基本概念: 簇:假定有一些数据,现在将相 ...

  9. spectral-cluster聚类算法详解

    欢迎关注"生信修炼手册"! spectral clustering,称之为谱聚类算法,和近邻传播AP算法一样,也是基于图论的算法,都是将样本点两两相连,构成图这一数据结构,不同的是 ...

最新文章

  1. Mac OS X的快捷键
  2. WIN10 关闭驱动签名
  3. RecyclerView局部刷新机制——payload
  4. Android Studio --- [学习笔记]RadioButton、CheckBox、ImageView、ListView、TCP的三次握手
  5. electron 读取文件夹内容_如何使用Electron Framework选择,读取,保存,删除或创建文件...
  6. 大型情感剧集Selenium:8_selenium网页截图的四种方法
  7. [转]OC与JS的交互详解
  8. mysql编译安装原理_MySQL编译安装全过程
  9. Oracle单组函数
  10. 利用输入输出流及文件类编写一个程序,可以实现在屏幕显示文本文件的功能,类似DOS命令中的type命令
  11. [线筛五连]线筛欧拉函数
  12. FinalData 数据恢复工具[绿色版]
  13. Unity粒子特效的缩放与加(减)速
  14. json数据循环左侧三级导航菜单
  15. 判断单双周java_单双周计算
  16. 技术书籍也香艳——《Head Fisrt 设计模式》
  17. C语言和win32绿色鼠标连点器,带代码(Windows)
  18. Boosting 介绍和 Python 实现
  19. 【LeetCode刷题】重叠区间问题
  20. JavaScript核心知识总结(下)

热门文章

  1. html卡片ui,炫酷网站带缩略图的文章卡片UI界面设计
  2. 任务一(创新小组19届安卓方向)
  3. 力扣851.喧闹和富有(DFS)
  4. 时间序列分析:ts/mts基础数据类型
  5. 索尼相机A卡格式化MP4视频的数据恢复案例
  6. C++ ostream源码
  7. 初识jsp之登录—登录成功—登录失败页面
  8. SpringSecurity最全实战讲解
  9. 手机qq 聊天记录 同步到电脑qq上
  10. Python读写word文档