在聚类问题中,我们试图将给定的样本集{x(1),…,x(m)}分割成几个各自汇聚的聚类。这类问题中输入特征同之前一样是一个n维向量x(i)∈Rn,但输出标签y(i)是不存在的,因此这是一个非监督式学习问题。
k-means 聚类算法的执行步骤如下:
- 随机初始化k个聚类质心的坐标值μ1,μ2,…,μk∈Rn;
循环直至收敛:{
循环每个i,有:
c(i):=arg minj∥x(i)−μj∥2.
循环每个j,有:
μj:=∑mi=11{c(i)=j}x(i)∑mi=11{c(i)=j}.
}
上面的算法中,k代表我们猜测的聚类数量,聚类质心μj代表我们当前假设的聚类质心坐标。初始化质心坐标时,我们可随机选取k个样本点,让k个质心的坐标等于这k个样本点(当然还有其他初始化质心的方法)。
算法的内循环重复执行两个步骤:(1) 将样本点x(i)分配给距离它欧式距离最近的质心;(2) 将每个聚类质心坐标向其所辖样本点的均值点移动。
下图是一个k-means 算法运行的图示。
上图:点表示训练样本,叉叉表示聚类质心。(a) 原始数据集。 (b)随机初始化聚类质心(在此例中,没有让初始质心等于某一样本值)(c-f) k-means算法迭代的图解。
k均值算法可以保证一定会收敛吗?答案是yes。为了便于理解,我们定义失真函数(distortion function):
失真函数描述了每个样本点x(i)到其所属质心μc(i)距离的平方和。k-means算法实际就是最小化失真函数J的坐标下降法。
究其本质,算法的内层循环,先固定质心坐标
失真函数
本文介绍了K-means聚类算法的基本概念与实现步骤。包括质心初始化、样本点分配及质心更新等核心环节,并解释了算法如何通过迭代逐步减少失真函数达到收敛状态。此外还探讨了算法可能存在的局部最优问题及其解决方法。

2085

被折叠的 条评论
为什么被折叠?



