k-均值聚类(K-means Clustering)算法的原理与实现步骤
字数 868 2025-10-29 21:04:18
k-均值聚类(K-means Clustering)算法的原理与实现步骤
题目描述
k-均值聚类是一种无监督学习算法,用于将数据集划分为k个互不重叠的簇。其目标是使同一簇内的数据点尽可能相似,不同簇的数据点尽可能不同。算法通过迭代优化簇中心(质心)和簇分配来实现这一目标。例如,给定一组二维数据点,k-均值可将其分为3个簇(k=3),每个簇用质心表示。
解题过程
-
初始化质心
- 随机选择k个数据点作为初始质心(如k=3时随机选3个点)。
- 注意:初始质心的选择可能影响最终结果,通常采用多次随机初始化或k-means++优化。
-
分配数据点到最近质心
- 计算每个数据点到所有质心的欧氏距离:
\(d(x_i, \mu_j) = \sqrt{\sum_{d=1}^{D}(x_{id} - \mu_{jd})^2}\)
其中 \(x_i\) 是数据点,\(\mu_j\) 是第j个质心,D是特征维度。 - 将每个数据点分配给距离最近的质心所在的簇。
- 计算每个数据点到所有质心的欧氏距离:
-
更新质心位置
- 重新计算每个簇的质心:取簇内所有数据点的均值作为新质心。
\(\mu_j^{(new)} = \frac{1}{|C_j|} \sum_{x_i \in C_j} x_i\)
其中 \(C_j\) 是第j个簇的数据点集合,\(|C_j|\) 是簇的大小。
- 重新计算每个簇的质心:取簇内所有数据点的均值作为新质心。
-
迭代收敛判断
- 重复步骤2和3,直到质心不再显著变化(如质心移动距离小于阈值)或达到最大迭代次数。
- 收敛性保证:每次迭代都会降低簇内平方和(WCSS),即目标函数 \(J = \sum_{j=1}^{k} \sum_{x_i \in C_j} \|x_i - \mu_j\|^2\)。
-
输出结果
- 最终得到k个簇的质心坐标和每个数据点的簇标签。
- 局限性:需预先指定k值,对非球形簇或噪声敏感。
关键点
- 距离度量通常用欧氏距离,但也可替换为其他距离(如曼哈顿距离)。
- 优化方法:k-means++通过分散初始质心改善收敛速度和稳定性。
- 应用场景:图像分割、客户分群、异常检测等。