聚类算法集成项目 (MATLAB)
项目介绍
本项目是一个基于 MATLAB 开发的多算法聚类集成工具包,涵盖了从传统基于划分的方法到基于密度、概率模型及图论的多种核心聚类技术。该工具包旨在通过统一的接口,帮助研究人员直观地对比不同聚类算法在同一数据集上的表现,并提供客观的性能评估指标。
功能特性
- 覆盖经典与前沿算法:集成 K-means、模糊 C 均值 (FCM)、DBSCAN (密度聚类)、高斯混合模型 (GMM)、层次聚类 (Hierarchical) 以及谱聚类 (Spectral Clustering)。
- 内置评估体系:集成轮廓系数 (Silhouette) 和 DB 指数 (Davies-Bouldin Index) 两种内部评价指标。
- 自动化对比可视化:一键生成 2x3 的多算法结果对比图,并支持特定算法(如 K-means 和 GMM)的收敛曲线监控。
- 自定义数据生成:内置多维高斯分布合成数据生成器,支持固定随机种子以保证实验的可重复性。
使用方法
- 环境准备:确保计算机已安装标准 MATLAB 环境。
- 参数配置:在主程序模块中,用户可以根据需要调整预设的聚类数目 K、DBSCAN 的领域半径 epsilon 和最小点数 minPts。
- 运行程序:直接运行主脚本,程序将自动执行数据生成、算法运算、指标评估及结果绘图。
- 结果查看:程序将弹出两个窗口,分别显示各算法的聚类划分效果及其对应的评价分数,以及算法迭代过程中的能量函数或似然函数变化。
系统要求
- 软件环境:MATLAB R2018b 或更高版本。
- 工具箱:建议安装 Statistics and Machine Learning Toolbox(用于部分矩阵运算及基础统计函数支持)。
核心功能与实现逻辑详细说明
#### 1. 数据生成逻辑
程序通过内置函数生成三个不同均值中心((1,1), (4,4), (1,5))的二维高斯分布簇,每个簇包含 100 个样本点。该逻辑确保了数据集具有明显的聚类特征,便于验证算法的有效性。
#### 2. K-means 算法实现
采用迭代法实现。首先随机选择 K 个样本作为初始中心,随后交替进行两个步骤:根据欧氏距离将样本分配至最近的中心;计算各簇样本的均值并更新中心位置。程序会记录每一步的误差平方和(SSE),形成能量下降曲线。
#### 3. 模糊 C 均值 (FCM) 算法实现
通过引入隶属度矩阵来描述每个样本属于各个簇的概率。实现中通过控制模糊系数(默认为 2.0),不断迭代更新隶属度和簇中心,直至隶属度变化量达到设定的收敛阈值。
#### 4. DBSCAN 密度聚类实现
基于密度的聚类逻辑。程序遍历数据集,通过寻找在指定半径 epsilon 内包含至少 minPts 个点。该实现能够有效识别核心点、边界点和噪声点(标记为 -1),无需预设簇的数量。
#### 5. 高斯混合模型 (GMM) 实现
基于期望最大化 (EM) 算法。
- E步(Expectation):计算每个样本由各个高斯分量生成的响应度。
- M步(Maximization):根据响应度更新每个高斯分量的均值、协方差矩阵及混合系数。
程序通过监控对数似然函数的增加量来判断模型是否收敛。
#### 6. 层次聚类 (Hierarchical) 实现
本工具包实现了凝聚法层次聚类。其核心逻辑是计算样本间的距离并通过沃德误差平方和准则(Ward's method)进行簇的合并。程序最终根据预设的 K 值对生成的聚类树进行剪枝,得到最终划分结果。
#### 7. 谱聚类 (Spectral Clustering) 实现
基于图论的聚类方法,主要步骤包括:
- 利用 RBF 核函数构建样本间的相似度矩阵。
- 计算标准化的拉普拉斯矩阵。
- 对拉普拉斯矩阵进行特征值分解,提取前 K 个最小特征值对应的特征向量。
- 对特征向量空间中的点运行 K-means 以获得最终聚类。
#### 8. 指标评估与可视化逻辑
- 轮廓系数 (Silhouette):通过计算样本与其同簇样本的平均距离(a)和与最近异簇样本的平均距离(b)来评估,取值范围 [-1, 1]。
- DB 指数 (DBI):计算各簇内样本的离散度与簇间中心距离的比值,数值越小表示聚类效果越好。
- 图形呈现:利用 tiledlayout 和 gscatter 函数将所有算法的结果在同一图中展示,并在标题处标注对应的 Sil 和 DBI 分值。同时,针对 K-means 和 GMM 提供专门的迭代历史曲线图。