随机初始化 K 个集群质心,这里设质心个数为2
第一步:分配点给集群质心
对 m 个 点,每个点对应的质心为 c(i) ,若离红色的质心近,则 c(i) 的值为1,否则为2。计算距离用的是L2范式。
第二步:移动集群质心
对 K 个质心,每次都计算分配给他的所有点的“中心”,这个中心通过计算不同维度的平均值得到,假如只有两个特征,(如图)计算横的平均值,竖的平均值,得到的点就是新的质心。图中最下方式子的 x(1) x(5)等,都是有 n 个特征的向量,计算平均值时每个特征都要计算到。
对于极端情况,如一个质心没有任何点被分配给它,则消除这个簇,并且令 K = K-1。
K-means算法优化目标
c(i) 是当前这个样本点被分配的集群的下标
μk 是簇的质心k
μc(i) 是当前这个点被分配的质心
成本函数如下图所示,也叫失真函数( distortion) 。
第一步分配点给质心的时候 μ1 到 μk 是不动的,分配点来使 J 最小;第二步移动集群质心的时候是固定 c(1) 到 c(m) ,通过移动质心来使 J 最小。k-means算法的 J 不可能变大,因为每一步都是在尝试减小 J ,变大了说明可能出现了错误。