聚类算法比较(Clustering Algorithms Comparison)

聚类算法比较

无监督学习

  现实生活中常常会缺乏足够的先验知识,因此难以人工标注类别或进行人工类别标注的成本太高。很自然地,我们希望计算机能代我们完成这些工作,或至少提供一些帮助。根据类别未知(没有被标记)的训练样本解决模式识别中的各种问题,称之为无监督学习

算法分类

COMPARE

性能比较

所用数据集可以查看相关文档,数据集(Data Set)

凝聚的层次聚类(AGNES)

  • 优点:
    • 对噪声数据不敏感
    • 算法简单,容易理解
    • 不依赖初始值的选择
    • 对于类别较多的训练集分类较快
  • 缺点:
    • 合并操作不能撤销
    • 需要在测试前知道类别的个数
    • 对于类别较少的训练集分类较慢
    • 只适合分布呈凸型或者球形的数据集
    • 对于高维数据,距离的度量并不是很好
高斯型数据
圆形数据

分裂的层次聚类(DIANA)

  • 优点:
    • 算法简单,容易理解
    • 不依赖初始值的选择
    • 对于类别较少的训练集分类较快
  • 缺点:
    • 对噪声数据敏感
    • 分裂操作不能撤销
    • 需要在测试前知道类别的个数
    • 对于类别较多的训练集分类较慢
    • 只适合分布呈凸型或者球形的数据集
    • 对于高维数据,距离的度量并不是很好
高斯型数据
混合型数据

K均值聚类(K-MEANS)

  • 优点:
    • 算法简单,容易理解
    • 大数据集时,对噪声数据不敏感
  • 缺点:
    • 对初始中心点敏感
    • 需要在测试前知道类别的个数
    • 只适合分布呈凸型或者球形的数据集
    • 对于高维数据,距离的度量并不是很好
高斯型数据
直线型数据

迭代自组织分析聚类(ISODATA)

  • 优点:
    • 大数据集时,对噪声数据不敏感
    • 可以动态调整类别个数和类别中心
    • 在先验知识不足的情况下有较好的分类能力
  • 缺点:
    • 对初始中心点敏感
    • 算法复杂,分类速度较慢
    • 只适合分布呈凸型或者球形的数据集
    • 对于高维数据,距离的度量并不是很好
高斯型数据
直线型数据

密度聚类(DBSCAN)

  • 优点:
    • 算法简单,容易理解
    • 不依赖初始数据点的选择
    • 可以完成任意形状的聚类
  • 缺点:
    • 对噪声数据敏感
    • 需要在测试前确定eps和minPts
    • 不适合数据集中密度差异较大的情况
    • 对于高维数据,距离的度量并不是很好
圆形数据
直线型数据

密度最大值聚类(MDCA)

  • 优点:
    • 对噪声数据不敏感
    • 不依赖初始数据点的选择
    • 可以完成任意形状的聚类
  • 缺点:
    • 算法复杂,分类速度较慢
    • 需要在测试前确定密度阈值
    • 对于高维数据,距离的度量并不是很好
    • 不适合数据集密度差异较大或整体密度基本相同的情况
高斯型数据
混合型数据

快速搜索聚类(CFDP)

  • 优点:
    • 对噪声数据不敏感
    • 不依赖初始数据点的选择
    • 可以完成任意形状的聚类
  • 缺点:
    • 离群点的确定非常复杂
    • 算法复杂,分类速度较慢
    • 对于高维数据,距离的度量并不是很好
    • 不适合数据集整体密度基本相同的情况
高斯型数据
混合型数据

谱聚类(Spectral Clustering)

  • 优点:
    • 不依赖初始数据点的选择
    • 使用了降维技术,适合于高维数据的聚类
    • 建立在谱图理论,能在大部分形状聚类,收敛于全局最优解
  • 缺点:
    • 难以对圆形数据聚类
    • 对噪声数据非常敏感
    • 需要在测试前知道类别的个数
直线型数据
混合型数据

高斯混合模型聚类(GMM)

  • 优点:
    • 可以完成大部分形状的聚类
    • 大数据集时,对噪声数据不敏感
    • 对于距离或密度聚类,更适合高维特征
  • 缺点:
    • 计算复杂,速度较慢
    • 难以对圆形数据聚类
    • 需要在测试前知道类别的个数
    • 初始化参数会对聚类结果产生影响
高斯型数据
直线型数据

特点小结

  • 凸型或者球形分布的数据集,绝大部分算法都是可以适用的
  • 圆形分布的数据集,DBSCAN算法最为合适
  • 线型分布的数据集,DBSCAN,Spectral Clustering,GMM都可以使用
  • 高维特征最好使用Spectral Clustering或者GMM算法
  • 密度算法大多适用于各类的密度峰值相差不大的情况
  • 实际中可以通过已知的某些先验知识尝试去选择合适的算法
-------------本文结束感谢您的阅读-------------
0%