Affinity propagation 近邻传播算法

终日乾乾,与时偕行。 — 周易 文言

近邻传播算法是一种基于代表点的聚类方法,它会同时考虑所有数据点都是潜在的代表点,通过结点之间的信息传递,最后得到高质量的聚类。这个信息的传递,是基于sum-product或者说max-product的更新原则,在任意一个时刻,这个信息幅度都代表着近邻的程度,也就是一个数据点选择另一个数据点作为代表点有多靠谱。这也是近邻传播名字的由来。

近邻传播算法输入的信息是一个实值的集合, { s(i,k)} ,每个相似度 s(i,k) 都代表着一个数据k有多适合作为另一个数据i的代表点,可以看成是它们本身的相似度。每一个数据点都有一个对应的变量结点 ci ,其中,如果 ci=k ik 就代表着数据点i已经分配给了一个聚类, ck 是它的代表点。 ck=k 就是说数据点k本身就是一个聚类代表点。我们可以构造一张图,用带约束的网相似度(net similarity)来作为图的函数。
图的结构如下:
这里写图片描述

其中方格的代表函数结点,圆圈代表变量结点。我们定义网相似度如下:
网相似度
这是带有约束的,其中第一项是k-median 问题演化过来的(也比较好理解,每个点i都和它的代表点的相似度最高),只不过将它放在自然指数的位置,这是为了保证我们的 F(c,s) 总是正数。第二项添加了一致性约束,就是说如果有非k的结点选了k作为代表点,那么k必须同时是本身的代表点。否则就会有惩罚。
这里写图片描述
F(c,s) 的两项都各自通过一个函数结点来表示,而标签值(聚类类别值) ci 用一个变量结点来表示。 log F(c,s) 可以写成log函数的sum的形式。

1. Sum-Product Affinity Propagation

我们可以用sum-product 算法来得到变量的组合以完成对 F(c;s) 的最大化,同时这也是对 eS(c) 的最大化。 S(c) 这里是带有约束的。对于这种特殊的图拓扑,使用sum-product 是非常直接的,通过变量结点到函数结点的信息传递,以及函数结点到变量结点的信息传递可以实现。

O(NN) 向量信息更新

从变量结点 ci 到函数结点 fk(c) 包含了N个非负的实值——其中每一个的取值为j( ci 中的一个取值,也就是说是从1到N中的一个数),我们可以用下图中的 ρik 表示。

这里写图片描述

随后我们用技巧将它们简化为一个标量,使得算法的时间和空间和输入的相似对的数目成线性相关。
而从函数结点 fk(c) 到变量结点 ci 也包含了N个实值,可以表示为 αik(j) .在任意时刻,可以通过将所有的 ci 的输入信息求乘积得到 ci 的评估。
这里写图片描述

我们先用公式来描述前者,所有的 ρ 信息,也就是从变量到函数结点的信息,都是从变量结点出发的,它们可以所有输入信息逐个相乘:
这里写图片描述

从函数结点到变量结点可以通过对所有输入信息的乘积,随后summing over掉所有的变量(除去我们发送信息过去的那个变量)。因为所有的函数结点都与N的变量结点相连接,这意味着我们需要对N个函数结点中的每一个求N-1次加法。

O(N3) 向量信息更新

上面的时间复杂度明显是不适用的,所幸的是,所有的函数 { fk(c)Nk=1} 都是二值的约束,所以它们是可以因子分解的:
这里写图片描述
如果我们对 ck=k ckk 进行分开讨论,那么函数就可以写到加法里面去,输入信息就可以单独求加法(也就是说,把求和符号 和 乘号 的位置调换一下)。相应的,我们可以将从函数结点 fk 到变量结点 ci 的信息整理如下:
这里写图片描述

这个公式一眼看去非常让人头疼,为了容易理解,博主贡献一点个人的啃读领悟,在给定 ci 的情况下,比如说我们i=1, N=5,k=2,那么我们要求的从变量结点2到函数结点1的信息,而变量2其实不仅连接了函数结点1,还有函数结点2 3 4 5 ,要把从这些函数结点到它的信息乘起来。
1. 第一种情况,由于 ck=k=i
所以 fk(j1,...,ji1,ci,...,jN) ,所以可得原式第一个分式。
2. 第二种情况,由于 ckk=i
根据定义,k不选自己,说明也没有别的数据点选它,只有 j1,j2,...,ji1,jj+1,...,jN 都不等于k可以使得才能使得 fk 取值为1,否则为0求乘法后就是0这项可以忽略,所以可得原式第二个分式。注意乘法和加法交换了位置。
3. 第三种情况,由于有不是k的数据点选择了k作为代表点,所以应该k必须同时选择本身也作为代表点。所以写当 i==k ,对应那项因子写成 ρkk(k)
4. 第四种情况,由于 ik 并且 cik ,所以有两种情况,一种是 ck=k , 把这一项 ρkk(k) 单独写出来如同第三种情况,当 ckk 时,必须要求 j1,j2,..

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值