聚类
文章目录
1.聚类
定义
聚类(Clustering)
是按照某个特定标准(如距离)把一个数据集分割成不同的类或簇,使得同一个簇内的数据对象的相似性尽可能大,同时不在同一个簇中的数据对象的差异性也尽可能地大。也即聚类后同一类的数据尽可能聚集到一起,不同类数据尽量分离。
聚类和分类的区别
- 聚类(Clustering):是指把相似的数据划分到一起,具体划分的时候并
不关心这一类的标签,目标就是把相似的数据聚合到一起
,聚类是一种无监督学习(Unsupervised Learning)方法。 - 分类(Classification):是把不同的数据划分开,其过程是
通过训练数据集获得一个分类器,再通过分类器去预测未知数据
,分类是一种监督学习(Supervised Learning)方法。
聚类的一般过程
- 数据准备:特征标准化和降维
- 特征选择:从最初的特征中选择最有效的特征,并将其存储在向量中
- 特征提取:通过对选择的特征进行转换形成新的突出特征
- 聚类:基于某种距离函数进行相似度度量,获取簇
- 聚类结果评估:分析聚类结果,如
距离误差和(SSE)
等
数据对象间的相似度度量
相似性度量的准则可以参考欧式距离与曼哈顿距离。
cluster之间的相似度度量
除了需要衡量对象之间的距离之外,有些聚类算法(如层次聚类)还需要衡量cluster
之间的距离 。
Single-link
:定义两个cluster之间的距离为两个cluster之间距离最近的两个点之间的距离,这种方法会在聚类的过程中产生链式效应
,即有可能会出现非常大的cluster。
Complete-link
定义的是两个cluster之间的距离为两个cluster之间距离最远的两个点之间的距离,这种方法可以避免链式效应,对异常样本点(不符合数据集的整体分布的噪声点)却非常敏感,容易产生不合理的聚类
UPGMA
正好是Single-link和Complete-link方法的折中,他定义两个cluster之间的距离为两个cluster之间所有点距离的平均值
WPGMA
方法计算的是两个 cluster 之间两个对象之间的距离的加权平均值,加权的目的是为了使两个 cluster 对距离的计算的影响在同一层次上,而不受 cluster 大小的影响,具体公式和采用的权重方案有关。
2.数据聚类方法
数据聚类方法主要可以分为划分式
聚类方法(Partition-based Methods)、基于密度
的聚类方法(Density-based methods)、层次化
聚类方法(Hierarchical Methods)等。
划分式聚类方法
划分式聚类方法需要事先指定簇类的数目
或者聚类中心
,通过反复迭代,直至最后达到簇内的点足够近,簇间的点足够远的目标。经典的划分式聚类方法有k-means
及其变体k-means++
、bi-kmeans
、kernel k-means
等。
k-means算法
经典的k-means
算法的流程如下:
1.创建K个点作为初始质心(通常是随机选择)
2.当任意一个点的簇分配结果发生改变时
1.对数据集中的每个数据点
1.对每个质心
1.计算质心与数据点之间的距离
2.将数据点分配到距其最近的簇
2.对每个簇,计算簇中所有点的均值并将均值作为质心
下左图是原始数据集,通过观察发现大致可以分为4类,所以取 K = 4 K=4 K=4,测试数据效果如下右图所示。
度量标准
k-means算法以距离作为数据对象间相似性度量的标准,通常采用欧氏距离来计算数据对象间的距离。
d i s t ( x i , x j ) = ∑ d = 1 D ( x i , d − x j , d ) 2 (1) dist(x_i,x_j)=\sqrt{\sum\limits^{D}\limits_{d=1}(x_{i,d}-x_{j,d})^2}\tag1 dist(xi,xj)=d=1∑D(xi,d−xj,d)2(1)
其中D表示数据对象的属性个数。
更新方式
k-means算法聚类过程中,每次迭代,对应的类簇中心需要重新计算(更新):对应类簇中所有数据对象的均值,即为更新后该类簇的类簇中心
。定义第 k k k个类簇的类簇中心为 C e n t e r k Center_k Centerk,则类簇中心更新方式如下:
C e n t e r k = 1 ∣ C k ∣ ∑ x i ∈ C k x i (2) Center_k=\frac{1}{|C_k|}\sum\limits_{x_i\in C_k}x_i \tag2 C