k-means算法的基本原理和步骤

K-Means(K-均值)算法是无监督学习中最经典、最基础的聚类算法。它的目标非常直观:在没有标签的数据中,自动将相似的数据点归为一类。 简单来说,它的核心思想就是“物以类聚”——让同一个簇内的数据点尽可能紧密地聚集在一起,而不同簇之间尽可能分开。 k-means算法的基本原理和步骤

核心原理:寻找“重心”

K-Means 的工作逻辑类似于“重心迁移”。想象你在地上撒了一把弹珠,你想把它们分成几堆。K-Means 的做法是:
  1. 先随机定几个“中心点”。
  2. 把每个弹珠分给最近的中心点。
  3. 分完后,计算每一堆弹珠的平均位置,把中心点移到这个新位置。
  4. 重复上述过程,直到中心点不再移动

在这个过程中,算法试图最小化误差平方和(SSE),也就是让所有数据点到其所属簇中心的距离之和最小。

算法执行的 4 个标准步骤

K-Means 的算法流程非常规范,通常被称为“初始化→分配→更新→收敛”的循环:

表格

步骤名称详细操作
Step 1初始化首先你需要指定一个数字 K(代表你想把数据分成几类)。然后,算法会随机从数据集中选择 K 个点作为初始的“簇中心”(Centroids)
Step 2分配计算每个数据点到这 K 个中心的距离(通常用欧氏距离)。把每个点分配给离它最近的那个中心。此时,数据就被分成了 K 个临时的簇
Step 3更新针对每一个簇,计算该簇内所有点的平均值(均值向量)。将这个平均值作为新的簇中心
Step 4迭代/收敛重复 Step 2 和 Step 3。直到簇中心的位置不再发生明显变化(或者变化小于某个阈值),或者达到了预设的最大迭代次数,算法停止

关键要素详解

为了更深入理解,你需要掌握以下三个关键概念:

1. 距离的度量


K-Means 判断“相似”的标准通常是距离。最常用的是欧氏距离(Euclidean Distance),也就是两点之间的直线距离
  • 公式概念:

  • 这意味着 K-Means 倾向于发现球状或凸形的簇,对于长条形或不规则形状的簇效果可能不佳。

2. K 值的选择(肘部法则)

K-Means 最大的痛点是你必须预先指定 K 值。选多少个合适呢?最常用的方法是肘部法则(Elbow Method)
  • 尝试不同的 K 值(如 1, 2, 3…10)
  • 计算每个 K 值对应的 SSE(簇内误差平方和)。
  • 画出折线图。随着 K 增加,SSE 会减小。但当 K 超过某个“最佳点”后,SSE 下降的幅度会突然变缓,形成一个像手肘一样的拐点。这个“肘部”对应的 K 值通常就是最优解

3. 初始中心的选择(K-Means++)

原始的 K-Means 是随机选初始中心,这可能导致陷入“局部最优”(结果不是最好的)
  • 改进方案:现在常用的 K-Means++ 算法优化了这一步。它让初始中心点之间的距离尽可能远,从而大大提高了收敛速度和结果的准确性

概括与局限

优点:
  • 简单高效:原理易懂,计算速度快,适合处理大数据集。
  • 可解释性强:结果直观,容易向业务方解释。
局限:
  • 必须指定 K 值:很多时候我们并不知道数据里到底有几类。
  • 对异常值敏感:因为它是取“平均值”,一个极端的异常值可能会把簇中心拉偏。
  • 只能处理数值型数据:无法直接处理类别型数据(如“男/女”),需要先进行编码
如果你需要处理的数据是数值型的,且大致呈团状分布,K-Means通常是你的首选算法。
© 版权声明

相关文章

暂无评论

none
暂无评论...