支持向量聚类机 (SVC) 系统实现手册
项目介绍
本系统是一个基于MATLAB的支持向量聚类机(Support Vector Clustering, SVC)实现方案。传统的聚类算法如K-means高度依赖于簇的几何形状(通常为球形)和预设的簇数量,而本系统实现的SVC算法通过将数据映射到高维特征空间并寻找最小包含球(MDS),能够自动识别任意形状的簇类,并根据数据的分布特征自动确定聚类数量。该方案在处理非线性分布、多环嵌套以及带有噪声的数据集方面具有显著优势。
功能特性
- 非线性映射能力:利用高斯径向基函数(RBF)将低维输入数据映射到高维空间,通过高维空间的线性包络处理低维空间的复杂拓扑。
- 自动簇识别:不需要提前输入K值,算法通过数据点间的连通性分析自动划分并计算簇的数量。
- 噪声调节与软间隔:通过参数控制离群点对聚类圆界的影响,增强了系统对噪声数据的鲁棒性。
- 高维空间建模:支持向量数据描述(SVDD)的对偶问题求解,实现高效的最小闭球优化。
- 动态可视化:直观展示聚类分配结果、支持向量分布以及原始空间中的决策边界投影。
系统要求
- 运行环境:MATLAB R2016b 或更高版本。
- 必备工具箱:Optimization Toolbox(优化工具箱),用于求解二次规划问题。
实现逻辑与功能模块说明
- 模拟数据准备
系统内置了生成双环形分布数据的功能,通过极坐标变换产生两个同心分布的样本集,并加入正态分布噪声。这用于验证算法处理非线性可分边界和嵌套结构的能力。
- 核矩阵计算
系统采用高斯核函数对样本间的关系进行建模。通过向量化计算所有样本点之间的欧氏距离平方,构建N维方阵。核宽度参数(Sigma)在这一阶段被引入,它直接决定了映射后数据分布的平滑度,进而影响最终聚类的精细程度。
- 对偶问题求解
核心执行逻辑是将最小包含球问题转化为二次规划(Quadratic Programming)的对偶形式。系统通过构造Hessian矩阵并设定线性等式约束以及上下界约束,调用内点法优化算法寻找拉格朗日乘子。这一过程旨在找到那些位于边界上的关键点,即支持向量。
- 支持向量识别与半径计算
根据求解出的乘子值,系统将样本分为三类:
- 内部点:乘子为零,位于球体内部。
- 支持向量(SV):乘子在零和惩罚项之间,位于球体的边界上。
- 边界支持向量(BSV):乘子等于惩罚项,代表可能是噪声或离群点的样本。
系统通过支持向量在特征空间中的映射值计算出包含所有正常点的最小球体半径。
- 连通性分析(邻接矩阵法)
这是实现聚类分配的关键步骤。对于任意两个样本点,系统在它们之间进行线性插值采样。通过计算采样点在特征空间中到球心的距离,判断这些点是否依然位于最小闭球内。如果采样路径上的所有点均未超出边界,则认为这两个样本属于同一个簇。
- 聚类标签自动分配
基于生成的邻接矩阵,系统利用图论中的广度优先搜索(BFS)算法查找所有的连通分量。每一个独立的连通分量被赋予唯一的聚类标签,从而完成了从几何边界到逻辑分类的转化。
算法关键点分析
- 核宽度(Sigma)的作用:Sigma是SVC中最重要的超参数。当Sigma较大时,核函数的局部化程度低,聚类结果倾向于形成较少的大型簇;当Sigma逐渐减小时,决策边界会变得更加紧致,簇的数量会随之增加。
- 惩罚参数(q_val)的灵活性:该参数定义了被视为异常值的样本比例范围。通过调整q值,可以使算法忽略那些偏离主分布的离群点,从而使聚类中心更加稳定。
- 特征空间距离函数:不同于原始空间的欧氏距离,代码中实现的是映射后的高阶距离。其计算公式结合了核矩阵的自相关项和交叉项,确保了在无需显式定义映射函数的情况下完成距离评估。
- 连通性判别精度:采样步数(n_steps)决定了连通性检测的细致程度。系统通过采样检测路径的完整性,有效解决了非凸形状数据的划分难题。
使用指南
- 数据适配:将待分析的特征矩阵传入系统,确保每一行代表一个观测值。
- 参数调试:首先尝试默认的Sigma和q值。若聚类结果过于破碎,应适当增大Sigma;若不同簇被错误地合并,应减小Sigma。
- 结果分析:运行后,系统将输出检测到的簇数量、支持向量数量,并弹出对比图表。左图展示簇分配和关键点识别,右图展示决策能量场和等高线边界。