聚类算法总结

基于划分的聚类

k-means:

优点:1,简单,易于理解和实现;2,时间复杂度低

缺点:

1kmeans要手工输入类数目,对初始值的设置很敏感;所以有了k-means++intelligentk-meansgenetick-means

2k-means对噪声和离群值非常敏感,所以有了k-medoidsk-medians

3k-means只用于numerical类型数据,不适用于categorical类型数据,所以k-modes

4k-means不能解决非凸(non-convex)数据,所以有了kernelk-means

5k-means主要发现圆形或者球形簇,不能识别非球形的簇。


K-medroids算法选取中心点的方式不同。优点是相对K-means对噪声点和离群点不敏感,缺点是计算量增大。

K-means++算法:距离已有聚类中心较远的点有更大的概率被选为初始聚类中心。

ISADATA:不要求聚类数目,原理直观,但是需要制定多个参数。


基于层次的聚类

优点:1,距离和规则的相似度容易定义,限制少;2,不需要预先制定聚类数;3,可以发现类的层次关系;4,可以聚类成其它形状

缺点:1,计算复杂度太高;2,奇异值也能产生很大影响;3,算法很可能聚类成链状 4,合并和聚类是不可逆的

基于密度的聚类

DBSCAN的优缺点:

优点:

1.K-means方法相比,DBSCAN不需要事先知道要形成的簇类的数量。

2.K-means方法相比,DBSCAN可以发现任意形状的簇类。

3.同时,DBSCAN能够识别出噪声点。

4.DBSCAN对于数据库中样本的顺序不敏感,即Pattern的输入顺序对结果的影响不大。但是,对于处于簇类之间边界样本,可能会根据哪个簇类优先被探测到而其归属有所摆动。

缺点:

1.DBScan不能很好反映高尺寸数据。

2.DBScan不能很好反映数据集变化的密度。

3.对于高维数据,点之间极为稀疏,密度就很难定义了。


  如果簇的密度变化很大,例如ABCD四个簇,AB的密度大大大于CD,而且AB附近噪音的密度与簇CD的密度相当,这是当MinPs较大时,无法识别簇CD,簇CDAB附近的噪音都被认为是噪音;当MinPs较小时,能识别簇CD,但AB跟其周围的噪音被识别为一个簇。


基于网格的聚类

利用属性空间的多维网格数据结构,将空间划分为有限数目的单元以构成网格结构;

1)优点:处理时间与数据对象的数目无关,与数据的输入顺序无关,可以处理任意类型的数据

2)缺点:处理时间与每维空间所划分的单元数相关,一定程度上降低了聚类的质量和准确性


你可能感兴趣的:(聚类算法总结)