前言(可以略过)
最近在看的是关于聚类的论文,之前对聚类的步骤和相关内容不太了解,为了读懂论文就去学习了一下,这里将自己的理解记录下来。学习的不全面,主要是为了看懂论文,后续如果有涉及到聚类的,会再补充的,题目就先这样写喽。
聚类分析
聚类分析(Clustering)是无监督学习中的一种重要技术,它将数据集中的对象(或数据点)根据某些相似性度量,自动地分成多个组或类别。每个组中的对象彼此相似度高,而不同组之间的对象相似度较低
常用的相似度度量方法包括:
- 欧氏距离(Euclidean Distance):适用于数值型数据,度量两个点在多维空间中的距离。
- 曼哈顿距离(Manhattan Distance):度量点之间的城市街区距离,适用于不同特征之间差异较大的情况。
- 余弦相似度(Cosine Similarity):度量两个向量之间的角度,常用于文本数据中,特别是计算文档或单词之间的相似度。
- 皮尔逊相关系数(Pearson Correlation):度量两个变量之间的线性相关性。
聚类方法
常见的聚类算法可以分为几类:基于划分的聚类、基于层次的聚类、基于密度的聚类和基于网格的聚类。每种方法有不同的优缺点,适用于不同类型的数据。
- 基于划分的聚类:K-means算法
- 基于层次的聚类:层次聚类算法
- 基于密度的聚类:DBSCAN算法
- 基于网格的聚类:STING算法
聚类实现
所以聚类的目标是将数据点划分为若干组(称为“簇”),使得同一组内的数据点相似,而不同组之间的数据点不相似。为了实现这一目标,我们需要:
1.定义数据点之间的相似性。
2.基于相似性构建数据点的图结构。
3.通过分析图结构来划分数据点
在定义数据点相似性时,会用到一些常见的相似性度量,比如欧氏距离的负指数:,相似性矩阵 S 是一个 n×n的矩阵,其中 Sij表示数据点 xi 和 xj 之间的相似性(当然这个相似性度量还有很多,也可以自己创新)。根据定义的相似性度量,计算所有数据点之间的相似性,就构建出了相似矩阵 S。相似矩阵 S 反映了数据点之间的局部关系,相似性越高的点越可能属于同一个簇。
之后就要基于相似矩阵S构建拉普拉斯矩阵,拉普拉斯矩阵描述了图的全局结构,特别是连通性。拉普拉斯矩阵的秩与图的连通分量数量直接相关。对拉普拉斯矩阵L进行特征分解,得到特征向量,选择前k个最小的特征值对应的特征向量,将数据映射到一个低维空间,随后对特征向量进行聚类(如使用K-means算法),得到最终的聚类结果。
,
其中:
是度矩阵,