1. 程式人生 > >聚類演算法實踐(四)——演算法總結

聚類演算法實踐(四)——演算法總結

  前面的文章裡總共提到了7種聚類演算法,我們就會情不自禁地想知道,哪一種是“最好”的聚類演算法?

  正如我在一開始就提到,聚類實際上是由使用者來給定規則,從而實現分類的。所以所謂“最好”的聚類演算法,就應該是那個聚類規則“最能反映系統特徵”的演算法(當然,在同樣能反映系統特徵的情況下,效率越高自然越好,比如AP演算法就要優於K-centers演算法)。

  在聚類演算法中,最為關鍵的規則是什麼呢?我個人認為,應該就是對樣品相似性的描述。這不僅僅是指兩兩樣品之間的直接相似度(也就是相似矩陣),還有如“A與B接近,B與C接近,那麼A與C是否接近”這樣的傳遞性問題。比如在K-means裡面,這個問題就是否定的,K-means只認樣品兩兩間的直接相似性(歐氏距離),而在Chameleon演算法和譜聚類裡,這種相似性就可以通過網路進行傳遞。因此K-means得到的就只能是凸型的聚類,而後兩者則可以得到形狀各異的聚類。但是,這樣的相似性真的是我們需要的麼?這就要根據實際的問題來判斷了。所以演算法的優劣歸根到底要根據問題本身來判斷。

最後比較一下之前提到的所以演算法的特點

演算法 計算效率 cluster形狀 cluster數目選取 模型引數
average-linkage 中等 凸型 一般
K-means K-means 接近大小的凸型 敏感
譜聚類 任意形狀 不敏感 本徵矢數目,不敏感
Chameleon 中等 任意形狀 不敏感 RI和RC的相對權重,敏感
PCCA 任意形狀 自動判斷
SOM 中上 接近大小的凸型 一般 沒有測試,估計不太敏感
Affinity Propagation 任意形狀 敏感 敏感