谱聚类(Spectral clustering)是一种基于谱图理论的无监督聚类算法。它通过将数据集表示为图的形式,利用图的特征向量进行聚类分析。
以下是谱聚类的一般步骤:
1. 构建相似度图:根据数据集中样本之间的相似度,构建一个相似度矩阵。常见的方法包括计算样本间的欧式距离或相似度,并基于距离或相似度设置两个样本之间的边权重。
2. 构建拉普拉斯矩阵:从相似度矩阵中构建拉普拉斯矩阵,有多种形式的拉普拉斯矩阵,常用的有无标准化拉普拉斯矩阵、对称归一化拉普拉斯矩阵和随机游走归一化拉普拉斯矩阵。
3. 特征向量分解:对拉普拉斯矩阵进行特征分解,得到特征向量和对应的特征值。通常,选择前k个最小的非零特征值对应的特征向量,作为聚类的输入。
4. 归一化特征向量:对特征向量进行归一化处理,常用的方法是将特征向量按行进行L2归一化。
5. 聚类:将归一化后的特征向量输入常见的聚类算法(如k-means聚类)进行聚类分析。
谱聚类的关键在于将数据集转换为拉普拉斯矩阵,并利用特征向量进行聚类。通过谱聚类,可以在不需要事先知道分组数量的情况下,将数据集划分为具有相似特征的子群。谱聚类在图像分割、社交网络分析等领域得到广泛应用。
在 MATLAB 中使用谱聚类算法可以借助于机器学习工具包,如 Statistics and Machine Learning Toolbox 或者第三方库,如 Spectral Clustering Toolbox。以下是使用 Statistics and Machine Learning Toolbox 进行谱聚类的示例代码: