聚类的主要算法和介绍

聚类是一种无监督学习算法,用于将数据集划分为多个组(或簇),使得同一簇内的数据点更相似,不同簇之间的点差异更大。以下是主要的聚类算法及其特点、应用场景和局限性:


1. K-Means 聚类

特点

  • 将数据划分为 (k) 个簇,每个簇由一个质心(Centroid)表示。
  • 通过最小化簇内点到质心的平方距离,迭代优化。

步骤

  1. 随机选择 (k) 个初始质心。
  2. 将每个点分配到最近的质心,形成簇。
  3. 重新计算每个簇的质心。
  4. 重复步骤 2 和 3,直到质心收敛或达到最大迭代次数。

优点

  • 简单、高效,适合大规模数据。
  • 算法时间复杂度为 (O(n \cdot k \cdot t))((t) 为迭代次数)。

缺点

  • 需预先指定簇数 (k)。
  • 对初始质心敏感,易陷入局部最优。
  • 不适用于非球形分布的簇,且对噪声和离群点敏感。

适用场景

  • 客户分群
  • 图像分割

2. 层次聚类 (Hierarchical Clustering)

特点

  • 根据数据点之间的相似性逐层建立层次关系。
  • 分为自底向上 (凝聚聚类)和自顶向下(分裂聚类)。

步骤

  1. 每个点初始作为一个簇。
  2. 计算簇之间的相似度,合并最相似的簇。
  3. 重复直到形成一个簇或达到预设簇数。

优点

  • 不需预设簇数。
  • 可生成聚类树(Dendrogram),直观显示聚类关系。

缺点

  • 计算复杂度高((O(n^2 \log n)))。
  • 对大规模数据不适用。
  • 聚类结果不可调整(需要从头重新运行)。

适用场景

  • 基因序列分析
  • 文本分类

3. DBSCAN (Density-Based Spatial Clustering of Applications with Noise)

特点

  • 基于密度的聚类算法,通过点的密度分布发现任意形状的簇。

参数

  • (Eps):邻域半径。
  • (MinPts):定义簇的最小点数。

步骤

  1. 标记所有点为核心点、边界点或噪声点。
  2. 以核心点为中心,将 (Eps) 范围内的点归为一个簇。
  3. 重复直到所有核心点处理完成。

优点

  • 能发现任意形状的簇。
  • 对噪声和离群点鲁棒。
  • 无需指定簇数。

缺点

  • 参数 (Eps) 和 (MinPts) 选择困难。
  • 对高维数据效果较差。

适用场景

  • 地理区域聚类
  • 异常检测

4. 均值漂移 (Mean-Shift)

特点

  • 基于核密度估计(Kernel Density Estimation),通过迭代寻找高密度区域。

步骤

  1. 初始化点集。
  2. 计算每个点的密度梯度,向密度更高方向移动。
  3. 重复直到点收敛。

优点

  • 不需预设簇数。
  • 能发现任意形状的簇。

缺点

  • 对带宽参数敏感。
  • 计算复杂度较高,适合中小规模数据。

适用场景

  • 图像分割
  • 模式识别

5. 高斯混合模型 (GMM, Gaussian Mixture Model)

特点

  • 假设数据由多个高斯分布组成,每个簇对应一个高斯分布。
  • 使用期望最大化(EM)算法优化参数。

步骤

  1. 初始化高斯分布参数(均值、方差、权重)。
  2. E 步:计算每个点属于各高斯分布的概率。
  3. M 步:更新高斯分布参数。
  4. 重复直到收敛。

优点

  • 能处理不同形状和大小的簇。
  • 提供每个点的软分类概率。

缺点

  • 需要预设簇数。
  • 对初始参数敏感,可能陷入局部最优。

适用场景

  • 图像处理
  • 聚类分析中的概率建模

6. 谱聚类 (Spectral Clustering)

特点

  • 基于图论,通过数据点的相似性构建图,然后使用图的特征值进行聚类。

步骤

  1. 构建相似度矩阵。
  2. 计算图的拉普拉斯矩阵并求特征向量。
  3. 对特征向量进行 K-Means 聚类。

优点

  • 适用于复杂形状的簇。
  • 能处理非线性分割问题。

缺点

  • 相似度矩阵计算复杂,适合小规模数据。
  • 对参数敏感。

适用场景

  • 社交网络分析
  • 图像分割

7. OPTICS (Ordering Points To Identify the Clustering Structure)

特点

  • 是 DBSCAN 的扩展版本,能更好处理不同密度的簇。

步骤

  1. 以递增方式扫描数据点,记录点的可达性距离。
  2. 根据距离生成聚类结果。

优点

  • 适合密度分布不均的数据。
  • 不需严格指定参数。

缺点

  • 参数选择复杂。
  • 计算复杂度较高。

适用场景

  • 密度变化明显的数据集。

总结

算法 适合数据分布 参数要求 适用场景
K-Means 球形分布、均匀密度 簇数 (k) 快速分群
层次聚类 小规模数据 无需参数 直观展示数据关系
DBSCAN 任意形状、含噪声 (Eps)、(MinPts) 噪声鲁棒分析
均值漂移 高密度数据分布 带宽参数 模式识别
GMM 高斯分布 簇数、初始参数 概率建模
谱聚类 任意形状 相似度矩阵参数 图分析、复杂分割
OPTICS 不均匀密度分布 (Eps)、(MinPts) 密度变化数据集

选择算法时应根据数据分布特性、规模和具体任务需求进行权衡。

相关推荐
2301_8219199214 分钟前
决策树8.19
算法·决策树·机器学习
秋难降31 分钟前
别再用暴力排序了!大小顶堆让「取极值」效率飙升至 O (log n)
python·算法·排序算法
龙腾亚太36 分钟前
基于深度强化学习的无人机自主感知−规划−控制策略
机器学习·无人机·强化学习·深度强化学习
学行库小秘1 小时前
基于门控循环单元的数据回归预测 GRU
人工智能·深度学习·神经网络·算法·回归·gru
_meow_1 小时前
数学建模 15 逻辑回归与随机森林
算法·数学建模·逻辑回归
XIAO·宝2 小时前
机器学习--数据预处理
人工智能·机器学习·数据预处理
二向箔reverse2 小时前
机器学习算法核心总结
人工智能·算法·机器学习
猿究院--冯磊3 小时前
JVM垃圾收集器
java·jvm·算法
SHIPKING3933 小时前
【机器学习&深度学习】Ollama、vLLM、LMDeploy对比:选择适合你的 LLM 推理框架
人工智能·深度学习·机器学习
野犬寒鸦3 小时前
力扣hot100:最大子数组和的两种高效方法:前缀和与Kadane算法(53)
java·后端·算法