基于划分的聚类
k-means:
优点:1,简单,易于理解和实现;2,时间复杂度低
缺点:
1)kmeans要手工输入类数目,对初始值的设置很敏感;所以有了k-means++、intelligentk-means、genetick-means;
2)k-means对噪声和离群值非常敏感,所以有了k-medoids和k-medians;
3)k-means只用于numerical类型数据,不适用于categorical类型数据,所以k-modes;
4)k-means不能解决非凸(non-convex)数据,所以有了kernelk-means。
5)k-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,簇CD和AB附近的噪音都被认为是噪音;当MinPs较小时,能识别簇CD,但AB跟其周围的噪音被识别为一个簇。
基于网格的聚类
利用属性空间的多维网格数据结构,将空间划分为有限数目的单元以构成网格结构;
1)优点:处理时间与数据对象的数目无关,与数据的输入顺序无关,可以处理任意类型的数据
2)缺点:处理时间与每维空间所划分的单元数相关,一定程度上降低了聚类的质量和准确性