聚类算法实践(三)——PCCA、SOM、Affinity Propagation

 这篇日志是这个系列里算法部分的最后一篇,关注的是几个相对另类一点的聚类算法:PCCA、SOM和Affinity Propagation。PCCA是设计来专门用于马尔科夫模型的一种聚类算法;SOM是基于神经网络模型的自组织聚类;最后的Affinity Propagation则是在07年才在Science发表的一种较新颖的算法。

6、PCCA

  PCCA算法的全称是Perron Cluster Cluster Analysis,名称里有两个cluster是因为这样简写就可以和PCA区分开来(无语……)。PCCA并不是设计来处理传统的聚类问题的,而是专门用于得到马尔科夫链中的cluster。当然,对于一般的聚类问题,只要根据系统特点构造出一个概率转移矩阵,也可以使用PCCA算法。

  要解释马尔科夫模型中的cluster,让我们想象有一只跳蚤在了数据点间跳跃转移。它下一个时刻跳到特定数据点上的概率,只跟它当前落在哪个数据点上有关,这显然是一个经典的马尔可夫过程。再让我们假定,跳蚤在点与点之间的跃迁概率跟数据点的“距离”成反比。如果数据点可以分成几个分界明显的cluster,跳蚤大多数时间就只会在某个cluster内部的数据点间转移,在cluster之间的跳跃则相对罕见。

  先解释一下马尔科夫模型的一些性质。马尔科夫模型需要的是一个转移矩阵A,元素A(i,j)表示系统从状态i转移到状态j的概率。矩阵的每一列元素之和必须为1,这是因为转移概率总和必须为1。转移矩阵有一个本征值为1的本征矢量,对应着系统的稳态,亦即系统到达这个状态后,它在各个状态的概率分布就不会再发生变化。

  为了说明PCCA的原理,我们直接来考虑最为极端的情况,也就是系统由几个完全分离的cluster所构成。对于最为极端的情况,如果系统只能在cluster内部转移,而完全不会在cluster之间转移,那么转移矩阵A就会是分块矩阵的形式,比如下面的系统就可以分为两个完全不连通的cluster,如下面的矩阵。

A=01
  • 2
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: Affinity Propagation是一种聚类算法,其基本思想是通过数据点之间的相似度或“亲和力”,自动发现数据点的聚类结构。与一些传统聚类算法不同,Affinity Propagation不需要预先设定聚类数量,因此适用于在没有先验知识的情况下进行聚类。 ### 回答2: Affinity Propagation是一种聚类算法,它是基于信息传播的想法而设计出来的。它通过信息传播的过程来寻找相似性较高的数据点,并把它们聚到一起。跟其他聚类算法不同的是, Affinity Propagation没有预先设定簇的数量。在归纳出每个点与其他点的相似性分数以后,它会自动收敛。 Affinity Propagation的核心是“相似性矩阵”,相似性矩阵包含了每个数据点与其他点的相似性分数。这个相似性分数可以定义为如何衡量两个数据点相似或不相似的度量方法,例如欧几里得距离、余弦相似度、相关系数等。算法从中随机地选择了一个样本点,然后开始将每个点与这个样本点进行比较。将样本点作为聚类中心,并构建一些信息传递的规则(kernels),通过不断更新候选聚类中心,最终选出一些合适的聚类中心,在每个聚类中心下进行更细致的分组。 与k-means相比,Affinity Propagation算法具有以下优点: 首先,Affinity Propagation算法不需要预先指定聚类的数量,而是根据数据自身的相似性来确定聚类数量,减轻了人为干预的工作量。 其次,相对于k-means来说,Affinity Propagation算法的计算效率要低一些,但在多数情况下更加准确,且可以保证收敛性。 最后,Affinity Propagation算法对数据的分布不必要求是凸集, 比如聚类后产生的簇是非线性的,效果也会很好。 总结一下,Affinity Propagation算法是一种新兴的聚类算法,在处理一些复杂数据集上获得了不错的表现,然而相对过程比其他聚类算法稍微繁琐一些。因此,合适的算法要根据实际情况和实际需求进行选择。 ### 回答3: Affinity propagation是一种聚类算法,它是基于消息传递的方法来实现的,与传统的聚类算法如K-means等不同,它不需要事先定义聚类簇的个数,而是对数据点之间的相似度进行计算,从而确定簇心,最终将数据点分配到簇中。该算法适用于数据点数量较多时,特别是当数据点之间具有高度相关性时效果非常好。 Affinity propagation聚类在处理数据方面具有很强的优势,其主要优点包括以下个方面: 1. 不需要预先设定聚类中心的个数,而且能够自动判断聚类中心的个数。在传统的聚类算法中,需要先设定聚类簇的个数,但是这样的设定往往需要先验知识或者是通过试错法来完成,对于数据结构未知或者是簇的个数会随着数据变化而变化的数据集来说,这种预先设定簇个数的聚类算法,显然无法很好地适应。 2. 能够处理非线性可分问题。对于传统的线性聚类算法,数据点的分类往往是在经过了线性变化之后才能很好地进行分类,这样的分类能力还是存在一些缺陷的,尤其是对于非线性可分问题来说,就需要通过更加高级的聚类算法来进行分析。 3. 能够自适应地调整聚类中心和簇的分配。在Affinity propagation聚类过程中,会同时计算出每个点作为聚类中心的概率和每个点与聚类中心之间的相似度值,然后根据这两者之和来确定真正的聚类中心,并分配数据点到相应的簇中。因此,该算法在对于簇的分配方面较为灵活,能够快速适应数据的变化。 总之,Affinity propagation聚类是一种基于消息传递的聚类算法,具有自动确定聚类中心的能力,并且能够很好地处理非线性可分问题,因此在处理大规模数据时,该算法更加适合进行数据分析和聚类

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值