最近在学习AP聚类算法,网上找了好多资料(http://blog.youkuaiyun.com/dreamd1987/article/details/8923035, http://www.doc88.com/p-239796915955.html, http://www.doc88.com/p-886680412462.html),对于AP的迭代公式都不太相同,后经过验证找到了正确的迭代公式,总结一下,以后备用:
算法原理:
AP算法是一种根据数据对象之间的相似度自动进行聚类的方法,隶属于划分聚类方法的一种。数据对象之间的相似度根据不同的场景选择不同的衡量准则,如欧式距离,随相似准则的不同,数据对象之间的相似度可能是对称的,也可能是非对称的。这些相似度组成N*N(N为数据对象的数目)的相似矩阵S,利用该矩阵进行自动迭代计算。注:相似度矩阵应该是一个负值矩阵,即每个元素的值不能大于0,如果用欧式距离,那么取负值即可。
AP算法根据S对角线的数值最为某个点能否成为聚类中心的评判标准,该值越大,该点成为簇中心的可能性越大,对角线上的值称为参考度p。p的大小影响簇中心的数目,若认为每个数据对象都有可能作为簇中心,那么p就应该取相同的值(此时S对角线的值都为p),当然可以根据不同点成为簇中心的可能性大小,取不同的p值(此时S对角线上的值就会不同)。如果p等于S矩阵中所有元素的均值,那么得到的簇中心数目是中等的;如果取最小相似度,那么得到较少的聚类。
AP算法有两个重要的消息,Responsibility和Availability。R(i,k)描述了数据对象k适合作为数据对象i的聚类中心的程度,表示的是从i到k的消息;A(i,k)描述了数据对象i选择数据对象k作为其据聚类中心的适合程度,表示从k到i的消息。R(i,k)与A(i,k)越大,那么数据对象k就越有可能作为聚类的中心。AP算法就是不断迭代更新每一个数据对象的吸引度和归属度,直到迭代一定的次数,产生m个高质量的exemplar,同时将其余数据对象分配到相应的聚类中。
迭代公式:网上看到不同的版本,经过测试,公式如下:
(1)吸引度迭代公式