【聚类】 K-means
K-means
文章目录
- K-means
- 1. 算法介绍
- 2. 公式及原理
- 3. 伪代码
1. 算法介绍
-
背景与目标
K-means 是最经典、最常用的原型聚类(prototype-based clustering)算法之一,由 Stuart Lloyd 于1957年提出,1982年被广泛推广。其核心目标是:将给定的 n n n 个数据点划分为 K K K 个簇,使得簇内样本的相似度(通常用欧氏距离)最大化、簇间差异最大化。
-
应用场景
- 客户分群、市场细分
- 图像分割(基于像素特征)
- 文档聚类(基于文本向量)
- 低维数据的快速可视化与预处理
-
核心思路
-
初始化:在数据空间中随机选取 K K K 个点作为初始簇心(centroid),或使用 k-means++ 改进;
-
迭代优化:
- 分配(Assignment):将每个样本指派给最近的簇心;
- 更新(Update):根据新的簇内样本重新计算簇心;
-
收敛判定:当簇心位置不再发生显著变化,或达到最大迭代次数时停止。
-
2. 公式及原理
2.1 目标函数
K-means 旨在最小化簇内平方误差之和(Within-Cluster Sum of Squares, WCSS):
J = ∑ j = 1 K ∑ x i ∈ C j ∥ x i − μ j ∥ 2 , J = \sum_{j=1}^K \sum_{\mathbf{x}_i \in C_j} \bigl\|\mathbf{x}_i - \boldsymbol{\mu}_j\bigr\|^2, J=j=1∑Kxi∈Cj∑ xi