# 7.2:k-均值算法原理 假设我们有`k`个簇:$$(c_1,c_2,...,c_k)$$ 则我们的目的就是使的簇内的每个点到簇的质心的距离最小,即最小化平方误差`MSE`: $$ \sum\limits_{i=1}^k\sum\limits_{x\in c_i}(x-u_i)^2 $$ 其中,$$u_i$$为质心,表达式为: $$ \frac{1}{|c_i|}\sum\limits_{x\in c_i}x $$ $$|c_i|$$表示集合内样本个数。 想要直接求得最小值是非常困难的,通常我们使用启发式的迭代方法,过程如下图: ![kmeans0](kmeans0.png) - 图`b`:假设`k=2`,我们最开始先随机初始`2`个质心(红色与蓝色的点)。 - 图`c`:计算每个样本到两个质心的距离,并将其归为与其距离最近的质心那个簇。 - 图`d`:更新质心,我们可以看到,红色与蓝色的点位置有了变化。 - 图`e`:重新计算样本到质心距离,并重新划分样本属于哪个簇。 - 图`f`:直到质心位置变换小于阈值,停止迭代。