基于余弦距离的K-means聚类分析系统
项目介绍
本系统是一个基于MATLAB开发的专门用于处理向量方向相似性的聚类分析工具。与传统的基于欧氏距离的聚类不同,本系统核心采用了余弦距离(Cosine Distance)作为度量准则。这种方法在处理高维稀疏数据、文档特征向量或音频指纹时具有显著优势,因为它关注的是向量在空间中的夹角而非其绝对长度。系统集成了数据生成、聚类核心算法、聚类质量评估以及降维可视化等全流程功能,为用户提供了一套完整的方向性数据分析方案。
功能特性
- 方向敏感型聚类:核心算法针对向量方向设计,自动对输入数据进行单位化处理,确保聚类结果不受特征尺度或向量模长的影响。
- 鲁棒的中心点初始化与更新:算法内置了空簇处理机制,当迭代过程中出现无样本分配的簇时,系统会自动随机重新分配中心点,保证聚类过程的稳定性。
- 全自动性能评估:内置针对余弦空间优化的轮廓系数(Silhouette Coefficient)计算功能,定量评价簇内的紧凑度与簇间的隔离度。
- 高轴向可视化:集成主成分分析(PCA)模块,能够将多维特征自动投影至三维空间,直观展示聚类边界与中心点分布。
- 迭代收敛控制:支持自定义收敛容差与最大迭代次数,通过监控聚类中心在Frobenius范数下的位移来实现自动停机。
系统要求- 开发环境:MATLAB R2016b 及以上版本。
- 核心模块:无需额外工具箱,系统包含了自定义实现的PCA、K-means及评估函数。
核心实现逻辑系统的执行流程分为五个阶段,逻辑严密且高度模块化:
- 参数初始化与模拟数据生成:
系统首先预设聚类数量 $K=3$ 及维度参数。数据生成逻辑通过产生特定方向的基向量并叠加正态分布噪声,模拟出具有明显方向聚集特性的高维样本集,为验证余弦距离的有效性提供基础。
- 余弦空间下的K-means聚类:
*
预处理:首先对所有样本进行 $L2$ 范数归一化,将所有数据点映射到超单位球面上。
*
相似度计算:利用矩阵相乘逻辑高效计算样本与中心点的余弦相似度,避免了繁琐的循环遍历。
*
中心点更新:在每一轮迭代中,计算隶属于同一簇的所有样本的均值,并立即对新中心点执行归一化,确保中心点始终保持在单位球面上。
*
收敛判定:通过对比前后两轮中心点矩阵的Frobenius范数差值,若变化小于预设容差则停止迭代。
- 聚类效果评估:
算法实现了一个适配余弦距离的轮廓系数计算函数。该函数计算每个样本到同簇其他样本的平均余弦距离(簇内不相似度)以及到最近邻簇的平均余弦距离(簇间不相似度),最终输出介于 -1 到 1 之间的平均分,用于衡量聚类的合规性。
- 主成分分析系统:
系统通过去中心化、计算协方差矩阵、特征值快速分解以及特征向量排序,实现了完整的PCA降维逻辑。该功能将原本10维的特征压缩至最重要的3个主成分方向,为后续绘图提供坐标数据。
- 多维结果展示:
最后阶段,系统利用3D散点图对降维后的数据进行着色展示。图中分别标记出不同簇的样本点以及其对应的聚类中心(五角星标记),并生成包含迭代次数和平均轮廓系数的详细分析报告。
关键函数与算法分析
算法的核心在于将余弦相似度的最大化转化为单位向量间的内积计算。通过 $X_{norm} cdot Centers'$ 的矩阵操作,能够一次性获取所有样本与所有中心的距离权重。同时,针对“空簇”现象,通过随机索引重置(randi)确保了算法在处理极不均匀数据时的健壮性。
该函数通过预计算 1 减去向量内积的距离矩阵,实现了对 $a(i)$ 和 $b(i)$ 的高效计算。这种实现方式能够准确反映出基于角度的样本隶属程度。
PCA实现中采用了经典的特征分解法,不仅能够提取主成分,还能通过转换矩阵将高维中心点位置也映射到低维空间,确保了可视化过程中数据结构的一致性。