【原创】各种聚类算法对比

像上一篇文章  《聚类思想分析》  所述, 聚类算法无所谓好坏,重点在于合理使用各类算法达到最优效果。

 

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

 

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

 

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也是参数敏感的。

 

 

最后,灵活运用各种聚类算法应对场景问题才是关键。

 

 

未经博主允许,不得转载任何文章。

posted @ 2015-07-23 17:32  Roly-Poly  阅读(5562)  评论(0编辑  收藏  举报