Affinity Propagation (AP) 聚類是2007年在Science雜志上提出的一種新的聚類算法。它根據N個數據點之間的相似度進行聚類,這些相似度可以是對稱的,即兩個數據點互相之間的相似度一樣(如歐氏距離);也可以是不對稱的,即兩個數據點互相之間的相似度不等。這些相似度組成N×N的相似度矩陣S(其中N為有N個數據點)。
AP算法不需要事先指定聚類數目,相反它將所有的數據點都作為潛在的聚類中心,稱之為exemplar。以S矩陣的對角線上的數值s (k, k)作為k點能否成為聚類中心的評判標准,這意味着該值越大,這個點成為聚類中心的可能性也就越大,這個值又稱作參考度p ( preference) 。聚類的數量受到參考度p的影響,如果認為每個數據點都有可能作為聚類中心,那么p就應取相同的值。如果取輸入的相似度的均值作為p的值,得到聚類數量是中等的。如果取最小值,得到類數較少的聚類。
AP算法中傳遞兩種類型的消息, (responsiility)和(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,同時將其余的數據點分配到相應的聚類中。
在這里介紹幾個文中常出現的名詞: 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] 與眾多聚類算法不同,AP聚類不需要指定K(經典的K-Means)或者是其他描述聚類個數(SOM中的網絡結構和規模)的參數。
[2] 一個聚類中最具代表性的點在AP算法中叫做Examplar,與其他算法中的聚類中心不同,examplar是原始數據中確切存在的一個數據點,而不是由多個數據點求平均而得到的聚類中心(K-Means)。
[3] 多次執行AP聚類算法,得到的結果是完全一樣的,即不需要進行隨機選取初值步驟。
[4] 算法復雜度較高,為O(N*N*logN),而K-Means只是O(N*K)的復雜度。因此當N比較大時(N>3000),AP聚類算法往往需要算很久。。
[*5] 若以誤差平方和來衡量算法間的優劣,AP聚類比其他方法的誤差平方和都要低。(無論k-center clustering重復多少次,都達不到AP那么低的誤差平方和)
[*6] AP通過輸入相似度矩陣來啟動算法,因此允許數據呈非歐拉分布,也允許非常規的點-點度量方法。