K-means算法是一种常用的聚类算法,其核心思想是通过迭代优化目标函数(平方误差和,Sum of Squared Errors,SSE)来对数据进行聚类。以下是证明K-means算法收敛性的逻辑:
1. K-means算法的目标函数
K-means算法的目标是最小化以下目标函数(SSE):
其中:
- K 是聚类的个数;
是第 k 个簇;
是第 k 个簇的中心(质心);
是样本点
与质心
之间的欧几里得距离的平方。
2. K-means算法的步骤
K-means算法分为两个主要步骤:
-
分配步骤(Assignment Step):
- 将每个数据点
分配到距离其最近的质心
所属的簇中。
- 将每个数据点
-
更新步骤(Update Step):
- 重新计算每个簇的质心,使其等于该簇中所有数据点的均值。
这两个步骤交替进行,直至算法收敛。
3. 证明收敛性
(1) 目标函数单调下降
在每次迭代中,K-means算法的目标函数 J 不增加,这是收敛的基础。
-
分配步骤: 在分配步骤中,算法将每个数据点
分配到最近的质心
。此操作减少了每个数据点到其对应质心的距离平方和,因此目标函数 J 单调减少。
-
更新步骤: 在更新步骤中,质心
被重新计算为簇
中所有数据点的均值:
根据欧几里得距离的性质,簇的均值能够最小化每个数据点到质心的平方距离和,因此此步骤也减少了目标函数 J 。
综上,每次迭代后,目标函数 J 单调非增,即:
(2) 目标函数的下界
目标函数 J 是数据点到质心的平方距离和,因此 J≥0 。目标函数单调减少且有下界,保证了K-means算法的收敛性。
4. 收敛的形式
K-means算法的收敛性有两种可能的形式:
-
簇分配不再改变:
- 当分配步骤中每个数据点的簇分配不再改变时,算法达到收敛,此时目标函数不再减少。
-
质心不再更新:
- 当更新步骤中所有质心的位置不再变化时,算法达到收敛。
5. 算法的局限性
虽然K-means算法保证了目标函数单调下降并最终收敛,但它可能会收敛到一个局部最优解,而不是全局最优解。这是因为K-means的结果依赖于初始质心的选择。