Affinity Propagation (AP)近邻传播聚类
近邻传播聚类:根据 N 个数据点之间的相似度聚类,相似度可以是对称的,即两个数据点互相之间的相似度一样(如欧氏距离);也可以是不对称的,即两个数据点互相之间的相似度不等。这些相似度组成 N×N 的相似度矩阵 S (N代表N个数据点)。
不需要事先指定聚类数目,将所有的数据点都作为潜在的聚类中心,称为 exemplar。
以 S 矩阵的对角线上的数值s (k, k)作为 k 点能否成为聚类中心的评判标准,该值越大,这个点成为聚类中心的可能性越大,称为参考度 p ( preference) 。聚类的数量受到参考度 p 的影响,如果每个数据点都有可能作为聚类中心,则 p 取相同的值。如果取输入的相似度的均值作为 p 的值,聚类数量是中等的;如果取最小值,得到较少的聚类。
AP算法传递的两种消息类型,responsibility 和 availability;r(i,k) 表示从点 i 发送到候选聚类中心 k的数值消息,反映 k 点是否适合作为 i 点的聚类中心。a(i,k) 则从候选聚类中心 k 发送到 i 的数值消息,代表 i 点是否选择 k 作聚类中心。
r (i, k)与a (i, k)越强,则 k 点作为聚类中心的可能性就越大,且 i 点属于 k 点的可能性也越大。
AP算法不断更新每个点的吸引度和归属度,直到产生m个高质量的exemplar,同时将其余的数据点分配到相应的聚类中。
优点有:
不需要制定最终聚类族的个数
已有的数据点作为最终的聚类中心,而不是新生成一个族中心。
模型对数据的初始值不敏感。
对初始相似度矩阵数据的对称性没有要求。
相比k-centers,其结果的平方差误差较小。
在聚类的过程中有两种不同的信息进行交换,每一种信息代表一种竞争。
名词解释:
exemplar:聚类中心。
similarity:点 i 和 j 的相似度,记为S(i,j)。j 为 i 的聚类中心的相似度。
preference:点 i 的参考度称为 P(i) 或 S(i,i)。点 i 作为聚类中心的参考度。可取S相似度中值。
responsibility:r(i,k) 代表点 k 适合作为点 i 的聚类中心的程度。
availability:a(i,k) 描述点 i 选择点 k 作为其聚类中心的适合程度。
damping factor:阻尼系数,主要是起收敛作用的。防止数据震荡,引入地衰减系数,每个信息值等于前一次迭代更新的信息值的λ倍加上此轮更新值得1-λ倍,其中λ在0-1之间,默认为0.5。
s(i,k):点i和点k之间的相似性,表示点k适合作为点i的聚类中心的程度,越大表示越适合。
s(k,k):参考度(Preference),是相似度矩阵中横轴和纵轴坐标相同的点,如:s(k,k),表示的是点k作为聚类中心的可能程度。最终的类别数目受初始参考度影响,参考度越大聚类中心的数目越多。
如果迭代开始之前所有点成为聚类中心的可能性相同,参考度设定为一个公共值:相似度矩阵的平均值或者相似度矩阵的最小值。
r(i,k):吸引度,点i发送至候选聚类中心点k。点k适合作为点 i 的聚类中心的程度。
a(i,k):归属度,从候选聚类中心点 k 发送至点 i, 点 i 选择点 k 作为聚类中心的合适程度。
算法流程
1.在给定归属度的条件下,更新相似度矩阵中的每个点的吸引度信息
2.在给定吸引度的条件下,更新每个点的归属度信息
3.对每个点的吸引度信息和归属度信息进行求和,进行决策;判断迭代是否停止
AP聚类算法将每个数据看成图中的一个节点,迭代的过程是在图中通过传播信息找到聚类集合。计算两个数据点的相似度采用距离的负数,距离越近,相似度越大。
相似矩阵S中 i 到 j 的相似度就是距离的负数。但是主对角线上的那些数表示的是某个点和自身的相似度,根据算法要求,主对角线上的值s(k,k)一般称为偏向参数,通常对所有 k,s(k,k) 都是相等(是其自身),取非主对角线上的所有数的中位数(其大小与最后得到的类的数目有关,通常这个数越大,得到的类的数目就越多)。
如此设定可能是因为AP聚类算法是要用图论理解,把所有的点都看成一个图中的节点,通过节点之间的信息传递来达到聚类的效果。
聚类就是个不断迭代的过程,迭代的过程主要更新两个矩阵,
代表(Responsibility)矩阵R = [r(i,k)]N×N 和适选 (Availabilities)矩阵A=[a(i,k)]N×N。
这两个矩阵初始化为0,N是所有样本的数目。
r(i,k)表示第k个样本适合作为第i个样本的类代表点的代表程度,
a(i,k)表示第i个样本选择第k个样本作为类代表样本的适合程度。
每次更新后就可以确定当前样本 i 的代表样本(exemplar)点k,k 是使 {a(i,k)+r(i,k)} 取得最大值的那个 k 点,如果 i=k,代表样本 i 就是这个簇的类代表点。
迭代停止的条件就是所有的样本的所属都不在变化为止,或者迭代了n次没有变化(n 自定义)。
还有一种判断点属于哪一类的方法,找出所有决策矩阵主对角线元素 {a(k,k)+r(k,k)} 大于 0 的所有点,这些点全部都是类代表点,之后在决定其余的点属于这里面的一类。
AP聚类算法迭代过程很容易产生震荡,因此每次迭代都加上一个阻尼系数 λ。
公式解释:
a(i,k’) 表示除 k外,其他点对 i 点的归属度值,初始为0;
s(i,k’) 表示除 k 外,其他点对 i 的吸引度,即 i 外其他点都在争夺 i 点的 所有权;
r(i,k)表示点 k 成为点 i 的聚类中心的累积证明,r(i,k)值大于0 表示点 k 成为聚类中心的能力强。
此时只考虑哪个点 k 成为点 i 的聚类中心的可能性最大,但是没考虑这个吸引度最大的 k 是否也经常成为其他点的聚类中心(即归属度),若点 k 只是点 i 的聚类中心,不是其他任何点的聚类中心,则会造成最终聚类中心个数大于实际的中心个数。
a(i,k):归属度信息,表示点 i 选择点 k 为其聚类中心的合适程度;
r(i’,k) 表示点 k 作为除 i 外其他点的聚类中心的相似度值,取所有大于等于0的吸引度值,加上k作为聚类中心的可能程。即点 k 在这些吸引度值大于 0 的点的支持下,点 i 选 k 为中心的累积证明。
注:算法复杂度较高,为O(N*N*logN),而K-Means只是O(N*K)的复杂度。当N较大时(N>3000),
AP聚类算法往往需要算很久。
若以误差平方和衡量优劣,AP聚类比其他方法的误差平方和都低。
AP通过输入相似度矩阵来启动算法,允许数据呈非欧拉分布,及非常规的点-点度量方法。
参考:
AP近邻传播聚类算法(Affinity Propagation)_船长工作室的博客-CSDN博客
Affinity Propagation: AP聚类算法_winkake的博客-CSDN博客
AP聚类算法(Affinity propagation) - 知乎
迭代更新说明:近邻传播 Affinity Propagation(AP) 聚类算法原理及实现_scott198510的博客-CSDN博客_ap近邻传播聚类算法
Affinity Propagation (AP)近邻传播聚类相关推荐
- AP近邻传播聚类算法原理及Matlab实现
AP近邻传播聚类算法原理及Matlab实现 Affinity Propagation (AP)聚类是2007年在Science杂志上提出的一种新的聚类算法.它根据N个数据点之间的相似度进行聚类, ...
- AP近邻传播聚类算法(Affinity Propagation)
Affinity Propagation (AP) 聚类是2007年在Science杂志上提出的一种新的聚类算法.它根据N个数据点之间的相似度进行聚类,这些相似度可以是对称的,即两个数据点互相之间的相 ...
- 【老生谈算法】matlabAP近邻传播聚类算法源码——聚类算法
AP近邻传播聚类算法原理及Matlab实现 1.文档下载: 本算法已经整理成文档如下,有需要的朋友可以点击进行下载 序号 文档(点击下载) 本项目文档 [老生谈算法]AP近邻传播聚类算法原理及Matl ...
- R语言Affinity Propagation+AP聚类实战
R语言Affinity Propagation+AP聚类实战 目录
- 基于DTW相似度的Affinity Propagation(AP)聚类
基于DTW相似度的Affinity Propagation(AP)聚类 完整代码:https://github.com/SongDark/DTW_AP 数据 时序序列数据集 CharacterTraj ...
- java实现近邻聚类算法,近邻传播聚类算法 - osc_t74tdxrl的个人空间 - OSCHINA - 中文开源技术交流社区...
近邻传播聚类算法 1.算法简介 AP(Affinity Propagation)通常被翻译为近邻传播算法或者仿射传播算法,是在2007年的Science杂志上提出的一种新的聚类算法.AP算法的基本思想 ...
- 近邻传播 Affinity Propagation(AP) 聚类算法原理及实现
1.概述 机器学习中 AP(Affinity Propagation)通常被称为近邻传播算法或者密切度传播或类同传播算法,由 Frey 与Dueck于2007年在Science首次提出.AP算法的基本 ...
- AP(Affinity Propagation)亲和力传播算法
原文链接 https://www.cnblogs.com/lc1217/p/6908031.html 1.算法简介 AP(Affinity Propagation)通常被翻译为近邻传播算法或者亲和力传 ...
- Affinity propagation 近邻传播算法
终日乾乾,与时偕行. - 周易⋅\cdot乾⋅\cdot文言 近邻传播算法是一种基于代表点的聚类方法,它会同时考虑所有数据点都是潜在的代表点,通过结点之间的信息传递,最后得到高质量的聚类.这个信息的传 ...
最新文章
- php五只猴子分椰子_PHP实现的猴王算法(猴子选大王)示例
- 理解与理论:人工智能基础问题的悲观与乐观
- java ui调试_如何使用 IBM i System Debugger 调试 Java 程序
- 每周学算法/读英文/知识点心得分享 2.25 - 3.1
- 成功解决AttributeError: ‘int‘ object has no attribute ‘encode‘
- 【学术相关】谈谈国自然申请中标的经验
- servlet多重映射_关于多重映射问题,很奇怪
- 大话synchronize底层原理
- Redsi和Memcached区别总结
- JMeter正则表达式-学习(3)
- centos8.2安装ovirt
- 使用priority_queue实现Dijkstra
- 内燃机设计课设 过量空气系数与温度表对应关系自动查询
- 2010年下半年11月份系统架构设计师上午试题以及参考答案之六
- 音频合并的步骤有哪些
- 降低OLED屏幕功耗的方法
- 如何利用ps去除图片水印和绘制图案
- 软件架构师的培养与认证
- Chrome清除某一个网站的Cookie
- 生日祝福html_说祝福 | 祝4月的你生日快乐
热门文章
- 【RTT实现printf重定向——Keil5】
- rpm强行安装rpm包
- 假如遇到一个注入点如何利用sqlmap这款工具如何去写webshell
- 【愚公系列】2021年11月 攻防世界-简单题-MISC-008(掀桌子)
- 如何快速从零开始学习建模?
- 并发编程(叁):synchronize
- springboot中使用mybatis只打印sql和总条数不打印查询结果的yml配置
- ainol 6000hda avi不能挂载srt字幕问题的解决
- 《go语言圣经》之程序结构
- 增加按键功能(Camera按键)。确认OK键和挂断ENDCALL能在工模按键测试时正常使用。挂断键日常是电源键,监听power键