【原創】各種聚類算法對比


像上一篇文章  《聚類思想分析》  所述, 聚類算法無所謂好壞,重點在於合理使用各類算法達到最優效果。

 

--------------------------------------------------------------------------------------------------------

 

下面所述算法都是各類算法原型,不含變形。

 

1. 划分聚類 VS  模糊聚類

 

以Kmeans和FCM算法為例:

 

FCM是Kmeans的改進,由硬性隸屬關系提升為軟性隸屬。

 

FCM的優勢:

軟性隸屬后,由於每個值對各類中心點都有貢獻,因此中心點的迭代更易達到全局最優。

 

依據:

 

Kmeans的優化目標:     中心迭代公式:

 

FCM的優化目標:      中心迭代公式:

 

 

FCM相對Kmeans的優點: 1) 中心迭代更合理。  2) 魯棒離群點

FCM相對Kmeans的缺點: 計算復雜度更高

 

同樣,FCM和Kmeans有同樣的缺點

 

2. 層次聚類  VS  密度聚類

 

以底上的層次聚類和DBSCAN算法為例:

 

DBSCAN的優勢:

1. 速度快 kN  vs log(N)*N^2   

2. 基於事件密度更優於基於距離的自發現

 

DBSCAN的劣勢:

參數難以控制,對聚類效果影響大。也可以說是參數敏感。

即:

因為DBSCAN使用簇的基於密度的定義,因此它是相對抗噪音的,並且能處理任意形狀和大小的簇。但是如果簇的密度變化很大,例如ABCD四個簇,AB的密度大大大於CD,而且AB附近噪音的密度與簇CD的密度相當,這是當MinPs較大時,無法識別簇CD,簇CD和AB附近的噪音都被認為是噪音;當MinPs較小時,能識別簇CD,但AB跟其周圍的噪音被識別為一個簇。

 

同樣,兩者最大的共同的缺點是:

 

 

3. 先驗聚類 VS 自發聚類

 

這里的定義如下:

 

先驗聚類的優點:

1) 精確度高   2)有明確優化目標

先驗的缺點:

1) 速度慢   2)噪音敏感   3)難以確定K值

 

同樣,自發聚類和先驗聚類正好相異,這里不再贅述。

 

4. DBSCAN算法 VS 共享近鄰SNN算法

 

對於DBSCAN上述的問題,SNN可以一定程度的緩解。

 

 

 

 

由於SNN沒有采用一般的密度定義,而是通過與其它點的關系來描述自己,所以SNN一定程度解決了疏松密度難以調衡的問題。

 

但是SNN速度較慢,是 kN^2 的算法。同樣,SNN也是參數敏感的。

 

 

最后,靈活運用各種聚類算法應對場景問題才是關鍵。

 

 

未經博主允許,不得轉載任何文章。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM