ARTICLE

k-means

k-means (K-Means Clustering) k-means (K-均值聚类) 是无监督学习 (Unsupervised Learning) 中最经典、应用最广泛的聚类算法之一。其核心目标是将 n 个数据点划分到 k 个互不相交的簇 (cluster) 中,使得每个数据点被分配到离其最近的簇中心(质心),同时最小化簇内数据点与其质心之间距离的平方

浏览 0 更新 2026-05-25

k-means (K-Means Clustering)

k-means (K-均值聚类) 是无监督学习 (Unsupervised Learning) 中最经典、应用最广泛的聚类算法之一。其核心目标是将 nn 个数据点划分到 kk 个互不相交的簇 (cluster) 中,使得每个数据点被分配到离其最近的簇中心(质心),同时最小化簇内数据点与其质心之间距离的平方和。k-means 由 Stuart Lloyd 于 1957 年首次提出,后经 James MacQueen 于 1967 年命名并推广。

核心思想与目标函数

k-means 的优化目标是最小化簇内平方和 (Within-Cluster Sum of Squares, WCSS),又称为惯性 (Inertia)。

给定数据集 {x1,x2,,xn}Rd\{\mathbf{x}_1, \mathbf{x}_2, \dots, \mathbf{x}_n\} \subseteq \mathbb{R}^d 和簇数 kk,k-means 寻找划分 S={S1,S2,,Sk}S = \{S_1, S_2, \dots, S_k\} 和质心 {μ1,μ2,,μk}\{\boldsymbol{\mu}_1, \boldsymbol{\mu}_2, \dots, \boldsymbol{\mu}_k\},使得:

argminSi=1kxSixμi2\underset{S}{\operatorname{argmin}} \sum_{i=1}^{k} \sum_{\mathbf{x} \in S_i} \|\mathbf{x} - \boldsymbol{\mu}_i\|^2

其中 μi=1SixSix\boldsymbol{\mu}_i = \frac{1}{|S_i|} \sum_{\mathbf{x} \in S_i} \mathbf{x}\|\cdot\| 通常取欧几里得距离 (Euclidean Distance)。该优化问题是NP-hard的,实践中采用 Lloyd 算法寻找局部最优解。

Lloyd 算法:标准迭代步骤

步骤一:初始化 (Initialization)

实践中广泛采用 k-means++ 初始化:以与现有质心距离成比例的概率选择后续质心,期望近似比为 O(logk)O(\log k)

步骤二:分配步 (Assignment Step)

Si(t)={xp:xpμi(t)2xpμj(t)2    j=1,,k}S_i^{(t)} = \left\{ \mathbf{x}_p : \|\mathbf{x}_p - \boldsymbol{\mu}_i^{(t)}\|^2 \le \|\mathbf{x}_p - \boldsymbol{\mu}_j^{(t)}\|^2 \;\; \forall j = 1, \dots, k \right\}

这等价于构建数据的 Voronoi 划分。

步骤三:更新步 (Update Step)

μi(t+1)=1Si(t)xSi(t)x\boldsymbol{\mu}_i^{(t+1)} = \frac{1}{|S_i^{(t)}|} \sum_{\mathbf{x} \in S_i^{(t)}} \mathbf{x}

均值是使簇内平方距离和最小的唯一点。

步骤四:收敛判断

交替执行分配步和更新步,直至质心变化小于阈值或达到最大迭代次数。算法保证目标函数单调非增,在有限步内收敛到局部最优解。

距离度量与数据预处理

k-means 默认使用欧几里得距离。在应用于经济金融数据之前,通常对每个特征进行 Z-score 标准化或 Min-Max 缩放,以避免量纲较大的特征不成比例地支配距离计算。

选择簇数 kk

  • 肘部法 (Elbow Method):寻找 WCSS 关于 kk 的曲线拐点。
  • 轮廓系数 (Silhouette Score)s(i)=b(i)a(i)max{a(i),b(i)}s(i) = \frac{b(i) - a(i)}{\max\{a(i), b(i)\}},接近 1 表示良好聚类。
  • Gap 统计量 (Gap Statistic):比较实际数据与参考随机数据的 WCSS。

收敛性与局限性

优势:计算效率高(O(nkd)O(nkd))、简单直观、可扩展至大规模数据集。

局限性

  1. 预设 kk 值,无自动修正机制。
  2. 球状簇假设,对非凸形状簇表现不佳。
  3. 异常值敏感;k-medoids 更鲁棒。
  4. 仅保证局部最优,通常需多次随机初始化。
  5. 高维空间中距离区分能力下降,常需借助主成分分析 (PCA) 降维。

在经济学与金融学中的应用

  • 客户细分:基于交易行为、收入水平等特征分组。
  • 资产聚类:根据收益率、波动率等指标对股票或基金聚类。
  • 宏观经济分组:基于多维发展指标对国家分组。
  • 市场微观结构分析:对交易日不同时段、波动区间分类。
  • 异常检测:与质心距离异常远的记录可能代表可疑活动。

扩展与变体

常见变体包括 k-means++(智能初始化)、k-medoids (PAM)(用实际数据点作为中心)、Fuzzy C-Means(软分配)、Bisecting k-means、Mini-Batch k-means(超大规模数据)和 Kernel k-means(非线性可分簇)。

总体而言,k-means 凭借计算效率、实现简易性和直观可解释性,依然是探索性数据分析和聚类建模的首选基线算法。