像上一篇文章 《聚類思想分析》 所述, 聚類算法無所謂好壞,重點在於合理使用各類算法達到最優效果。
--------------------------------------------------------------------------------------------------------
下面所述算法都是各類算法原型,不含變形。
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也是參數敏感的。
最后,靈活運用各種聚類算法應對場景問題才是關鍵。
未經博主允許,不得轉載任何文章。
