聚类算法优缺点对比

一、机器学习

k-means

  • 优点:
    1,简单,易于理解和实现;
    2,时间复杂度低
    3,当簇是密集的、球状或团状的,而簇与簇之间区别明显时,它的聚类效果很好。

  • 缺点:
    1,需要对均值给出定义;
    2,需要指定要聚类的数目,对 K 值敏感。也就是说,K 的选择会较大程度上影响分类效果;
    3,对离群点和噪声点敏感,一些过大的异常值会带来很大影响;
    4,算法对初始聚类中心选择敏感;

  • 改进:
    1,针对离群点和噪声点,我们可以使用一些算法,比如 RANSAC 、LOF 等剔除离群点。此外,基于 K-means 的改进算法有 k-medoids 和 k-medians
    2,K-means 是使用欧式距离来测量,显然,这种度量方式并不适合于所有的数据集。换句话说,K-means 比较适合聚那些球状的簇。参照 SVM 中核函数的思想,将样本映射到另外一个特征空间,就可以改善聚类效果。代表算法是;kernel K-means
    3,只能聚凸的数据集。所谓的凸数据集,是指集合内的每一对点,连接两个点的直线段上的每个点也在该集合内。通俗讲就是K-means 聚类的形状一般只能是球状的,不能推广到任意的形状,但是有研究表明,若采用 Bregman 距离,则可显著增强此类算法对更多类型簇结构的适用性

层次聚类

层次聚类可以分为凝聚(agglomerative)层次聚类和分裂(divsive)层次聚类。

  • 分裂层次聚类采用的就是"自顶而下"的思想,先将所有的样本都看作是同一个簇,然后通过迭代将簇划分为更小的簇,直到每个簇中只有一个样本为止。
  • 凝聚层次聚类采用的是"自底向上"的思想,先将每一个样本都看成是一个不同的簇,通过重复将最近的一对簇进行合并,直到最后所有的样本都属于同一个簇为止。
  • 优点:
    1,距离和规则的相似度容易定义,限制少;
    2,不需要预先制定聚类数;
    3,可以发现类的层次关系;
    4,可以聚类成其它形状

  • 缺点:
    1,计算复杂度太高;
    2,奇异值也能产生很大影响;
    3,算法很可能聚类成链状

密度聚类

  • 优点:
    1, 可以对任意形状的稠密数据集进行聚类,相对的,K-Means之类的聚类算法一般只适用于凸数据集。
    2、 可以在聚类的同时发现异常点,对数据集中的异常点不敏感。
    3、聚类结果没有偏倚,相对的,K-Means之类的聚类算法初始值对聚类结果有很大影响。
  • 缺点:
    1、如果样本集的密度不均匀、聚类间距差相差很大时,聚类质量较差,这时用DBSCAN聚类一般不适合,如下图所示。
    2、如果样本集较大时,聚类收敛时间较长,此时可以对搜索最近邻时建立的KD树或者球树进行规模限制来改进。
    3、 调参相对于传统的K-Means之类的聚类算法稍复杂,主要需要对距离阈值ϵ,邻域样本数阈值MinPts联合调参,不同的参数组合对最后的聚类效果有较大影响。
    在这里插入图片描述

近邻传播算法(affinity propagation, AP)

通过迭代不断更新每一个点的吸引度和归属度,从而找到类簇中心 . 该算法无需指定类簇数,但算法的时间复杂度较高,对海量数据聚类时,需消耗较长时间.

基于网格的STING(statistical information grid)算法

将数据空间划分成有限个单元,所有的处理都以单元为对象,该算法聚类速度快,但聚类精度不高.

密度峰值聚类(density peaksclustering, DPC)算法

Rodriguez等于2014年提出快速搜索和寻找密度峰值的聚类(clustering by fast search and findof density peaks),简称密度峰值聚类(density peaksclustering, DPC)算法.

DPC算法基于如下假设:

  1. 类簇中心被类簇中其他密度较低的数据点包围;
  2. 类簇中心间的距离相对较远
  • DPC算法的优点主要包括:
  • 不需要事先指定类簇数;
  • 能够发现非球形类簇;
  • 只有一个参数需要预先取值
  • 缺点
  • DPC算法定义的局部密度未考虑数据内部的结构差异,当类簇间的数据密集程度差异较大时,DPC算法并不能获得较好的聚类效果;
  • 另外,DPC算法的样本分配策略存在分配连带错误.

谱聚类

谱聚类是经典的聚类方法之一,多应用于高维数据的降维和聚类问题,其聚类效果受相似性矩阵影响。

谱聚类算法的具体计算流程如下:
1)输入相似性矩阵A。其中第i行、第j列元素表示轨迹i和轨迹j的相似性。
2)根据相似性矩阵 A 构建邻接矩阵 W 和度矩阵D。
3)计算拉普拉斯矩阵L=D-W。
4)计算L 的特征值,将特征值从小到大排序,取前v个特征值,并计算前v 个特征值对应的特征向
u 1 u_1 u1 u 2 u_2 u2,…, u v u_v uv,构建矩阵 U U U =( u 1 u_1 u1 u 2 u_2 u2,…, u v u_v uv)。
5)令 y i y_i yi 等于 U U U 的 第 i i i 行向 量,使 用 k-means 算法对新的样本点 Y = ( y 1 , y 2 , … , y n ) Y=(y_1, y_2, …, y_n) Y=(y1,y2,,yn) 进行聚类,共聚 K K K 类。

总结各种算法的使用场景

方法参数可扩展性使用场景度量使用
亲和力传播(Affinity propagation)阻尼,样本偏好无法扩展包含大量聚类,聚类大小不均,几何形状不平坦图形距离(例如最邻近图)
谱聚类(Spectral clustering)聚类的数量中等的n_samples,小的n_clusters聚类数量很少,聚类大小不均,几何形状不平坦图形距离(例如最邻近图)
高斯混合(Gaussian mixtures)许多(many)不可扩展平面几何形状,适合密度估计到中心点的马氏距离(Mahalanobis distances)

二、深度聚类

典型的深度聚类算法可以总结为下述的四大类:

2.1 基于自动编码器(AE)的深度聚类算法

AE模型(Auto-encoder),主要步骤很简单,有三层,输入-隐含-输出,把数据 input 进去,encode 然后再 decode,cost_function 就是 output 与 input 之间的“差值”(有公式),差值越小,目标函数值越优。

简单地说,就是你输入n维的数据,输出的还是n维的数据,有人可能会问,这有什么用呢,其实也没什么用,主要是能够把数据缩放,如果你输入的维数比较大,譬如实际的特征是几千维的,全部拿到算法里跑,效果不见得好,因为并不是所有特征都是有用的,用AE模型后,你可以压缩成m维(就是隐含层的节点数),如果输出的数据和原始数据的大小变换比例差不多,就证明这个隐含层的数据是可用的。这样看来好像和降维的思想类似,当然AE模型的用法远不止于此。
在这里插入图片描述

2.2 基于聚类深度神经网络(CDNN)的深度聚类算法

2.3 基于变分自动编码器(VAE)的深度聚类算法

2.4 基于生成对抗网络(GAN)的深度聚类算法

参考:
[1] k-means聚类,密度聚类,层次聚类优缺点 2020.11
[2] 聚类算法总结 - 优缺点对比 2019.8
[3] 聚类总结:分类、优缺点、适用场景总结 2020.5
[4] KMeans与深度学习自编码AutoEncoder结合提高聚类效果(python) 2022.7
[5] 【神经网络】自编码聚类算法–DEC (Deep Embedded Clustering) 2018.10
[6] 基于 AutoEncoder 的无监督聚类的实现 2020.3

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值