一文搞懂K-means聚类和AP聚类
文章目录
1. K-means聚类
1.1 背景及发展介绍
K − m e a n s K-means K−means算法的思想最早可以追溯到1957年的Hugo Steinhaus,但是K-means这个术语在1967才被James MacQueen首次使用。
现在的 K − m e a n s K-means K−means一共有四种的变形,分别是Lloyd,Forgy,MacQueen和 Hartigan and Wong。最常用的就是 L l o y d Lloyd Lloyd算法,它采用了最小化集群内的最小平方和和迭代优化法。
由于 K − m e a s K-meas K−meas属于一种贪婪算法,所以每一次到得到一个局部最优解,可能是全局最优,也可能不是。但是他的收敛速度比较快,一般是训练多个 K − m e a s K-meas K−meas模型然后使用其中最优的那一个。下面重点对典型Lloyd进行介绍。
1.2 算法及公式介绍
假设现在有 k k k个数据,要将他们分为 k k k类。 K − m e a n s K-means K−means算法的目标是找到 k k k个组,使 N N N个实例的有最佳划分,即这 N N N个数据到他们所属中心点 c j , j = 1 , 2 , . . . k c_j,j=1,2,...k cj,j=1,2,...k的总距离最小。形式上,目标是将 N N N个数据划分为 k k k个集合 S i , i = 1 , 2 , . . . k S_i,i=1,2,...k Si,i=1,2,...k,使最小化集群内的平方和。
∑ j = 1 k ∑ i = 1 N ∥ x i j − c j ∥ 2 \sum_{j=1}^{k}\sum_{i=1}^{N}\Vert{x_i^j-c_j}\Vert^2 j=1∑ki=1∑N∥xij−cj∥2
其中 ∥ x i j − c j ∥ 2 \Vert{x_i^j-c_j}\Vert^2 ∥xij−cj∥2是任一个数据 x x x到它对应聚类中心的点的距离。
下面介绍最常用的 L l o y d Lloyd Lloyd算法的内容:
- 初始化 k k k个聚类中心点,一般是使用random随机生成 k k k个数值,然后直接根据生成的数值,在 N N N个实例中找到的对应的点作为初始点。另一种是直接随机生成 k k k个数据作为初始点。
- 将每一个数据分配到距离他最近的聚类中心点。要将他们分类,需要计算每个点到每个聚类中心的距离,然后找到最小的距离,将每个数据划分到哪里。
- 根据已经划分好的类别,重新计算 k k k个聚类中心点的值。计算的方法是,将分到每个类别下的数据的均值作为新的中心点。
- 重复2,3步直到最大的迭代次数或收敛。
下面用图来具体说明 k − m e a n s k-means k−means的工做流程:
上图很好的展示了 K − m e a n s K-means K−means的工做流程,迭代优化,每一次迭代更新聚类中心点,直到得到最大的迭代次数或已经收敛。
1.3 案例介绍
下面列举一个K-means在图片压缩方面的应用。
K-means应用在图片压缩的主要思想是:因为在图片中会有那些颜色相近的区域,我们考虑把那些颜色相近的区域,用一种颜色来代替,从而达到压缩图片的目的。
下面是效果图:
原始图片:
三种颜色(三个聚类中心):
15种颜色(15个聚类中心):
50种颜色(50个聚类中心):
可以看到,虽然图像的质量较原图是有所下降的,但是整体上保留了图片的特征,并且分类数越多,图片质量越接近原图。
使用K-means进行压缩图片虽然会损失一些精度,但是他会保留图像的最重要的一些特征,利用这些特征又可以去干别的事。
最后要注意的是,使用K-means时要将数据进行归一化处理,将变量都划分到相同的范围内,否则K-means会受到哪些特别大的变量的影响。
2. Affinity Propagation (AP)聚类
2.1 背景及发展介绍
亲和力传播( A P AP AP)由最早由Brendan Frey和Delbert Dueck于2007年发表在《科学》杂志上。
A P AP AP聚类算法是基于数据点之间”消息传递”的一种聚类算法。与一些传统的聚类算法,诸如