1501深入理解k均值聚类

🎯 教学目标与重难点…

【三维目标】

  • 📚 知识目标:掌握聚类分析的核心思想(物以类聚,人以群分);理解k-means算法的核心概念(K值、质心、距离);掌握k-means的迭代收敛过程;理解簇内平方和(WCSS)作为聚类质量的评估指标。
  • ⚙️ 能力目标:能够手工模拟k-means算法的一轮迭代过程;能够使用几何直觉判断聚类结果的优劣。
  • 💡 素养目标:建立“无监督学习”的思维方式——在没有标签的情况下发现数据的内在结构;理解“聚类”在客户分群、图像压缩、异常检测等场景中的应用价值。

【重点与难点】

  • 🟢 教学重点:k-means的迭代流程(分配→更新→分配→更新……);质心的几何含义(簇内样本的平均位置)。
  • 🟡 教学难点:理解k-means对初始质心选择的敏感性;理解K值需要预先指定的局限性。

📌 一、 课程导入(5 分钟)

场景引入

展示一张散点图——平面上散布着许多点,肉眼可以清晰地看到它们自然地聚集为 3 个群体(簇),但没有任何颜色标签。

提问

  • 人眼可以轻松完成分组,但计算机如何自动完成这个任务?
  • 如果给你一组数据,没有任何标签,你能让计算机自动发现其中的“群体结构”吗?

引出概念

  • 分类(Classification) :有标签 → 学习规则 → 预测新样本(监督学习)。
  • 聚类(Clustering) :无标签 → 发现结构 → 自动分组(无监督学习)。

生活类比——“学校分班”: 假设校长说:“把全校学生分成 3 个班,要求同一个班的学生尽量相似,不同班的学生尽量不同。”

  • 第一步:随机选 3 个学生作为“临时班长”(初始质心)。
  • 第二步:其他学生选择离自己最近的班长,加入该班(分配)。
  • 第三步:每个班重新选班长——选“最像全班同学平均水平”的那个人(更新质心)。
  • 重复第二、三步,直到分班不再变化(收敛)。

这就是 k-means 聚类 的完整逻辑。

  • 👨‍🏫 教师活动:在大屏幕上展示“无标签散点图”,请学生肉眼观察并说出“大概有几群”;用“学校分班”的类比逐帧动画演示k-means的迭代过程。
  • 🧑‍🎓 学生活动:观察散点图并口头回答“有几群”;参与“如果你是班长,你会怎么重新选人”的讨论。

通过“肉眼聚类”的自然能力引出计算机聚类任务,降低认知门槛。用“学校分班”这个贴近学生生活经验的类比,将k-means的四步迭代过程形象化,避免一开始就陷入数学公式。


📖 二、 解决问题过程(一):k-means的核心概念

1. 三个核心名词

术语 含义 生活类比
K 值 聚类的个数(需要提前指定) “分成几个班”中的“几个”
质心(Centroid) 簇的中心点,即簇内所有样本的均值位置 班长的“理想画像”(所有同学特征的平均值)
距离(Distance) 样本点到质心的距离(通常使用欧氏距离) 学生与班长的“差异程度”

2. 距离度量——欧氏距离(Euclidean Distance)

二维空间中两点 (x₁, y₁) 和 (x₂, y₂) 的距离:

$$d = \sqrt{(x_1 - x_2)^2 + (y_1 - y_2)^2}$$

直观理解:两点之间的直线距离。“离我最近”就是距离最短。

3. 目标函数——簇内平方和(WCSS, Within-Cluster Sum of Squares)

$$WCSS = \sum_{k=1}^{K} \sum_{x \in C_k} ||x - \mu_k||^2$$

含义

  • 对每个簇,计算簇内所有样本到该簇质心的距离的平方和。
  • 将所有簇的平方和相加。
  • WCSS 越小,表示聚类效果越好(簇内越紧凑)。

4. k-means的完整迭代流程

flowchart TD
    A["🎯 步骤1:指定 K 值(聚成几类)"] --> B["🎲 步骤2:随机初始化 K 个质心"]
    B --> C["📌 步骤3:分配 —— 每个样本点归属到最近的质心"]
    C --> D["🧮 步骤4:更新 —— 重新计算每个簇的质心(取均值)"]
    D --> E{"❓ 收敛判断:质心是否不再变化?"}
    E -->|否| C
    E -->|是| F["✅ 聚类完成,输出结果"]
  • 👨‍🏫 教师活动:在黑板上画出 6 个二维点,手动模拟 k-means 的一轮迭代(选初始质心 → 分配 → 更新质心);用不同颜色的粉笔区分不同簇。
  • 🧑‍🎓 学生活动:在导学案上跟随教师的手算步骤,计算每个点到两个质心的欧氏距离,完成第一次“分配”;观察质心如何“移动”到簇的中心位置。

通过黑板手算,让学生“用手”体验 k-means 的每一步。相比于直接展示代码,手算能让学生更深刻地理解质心的计算方式(均值)和分配的依据(距离最近)。


✍️ 三、 解决问题过程(二):动手计算——k-means一轮迭代

题目:平面中有 6 个点,坐标如下。

样本 A B C D E F
x 1 2 3 6 7 8
y 2 1 3 5 4 6

设定 K=2,初始质心为:质心1 = (1, 2)(即样本A),质心2 = (6, 5)(即样本D)。

任务:完成第一轮迭代(分配 → 更新)。

第 1 步:计算每个点到两个质心的欧氏距离(分配)

提示:距离公式 d = √[(x₁-x₂)² + (y₁-y₂)²]

样本 到质心1 (1,2) 的距离 到质心2 (6,5) 的距离 归属
A (1,2) 0 √[(1-6)²+(2-5)²] = √(25+9) = √34 ≈ 5.83 质心1
B (2,1) √[(2-1)²+(1-2)²] = √2 ≈ 1.41 √[(2-6)²+(1-5)²] = √32 ≈ 5.66 ____
C (3,3) ____ ____ ____
D (6,5) ____ 0 质心2
E (7,4) ____ ____ ____
F (8,6) ____ ____ ____

第 2 步:根据分配结果,重新计算质心(更新)

簇1(归属质心1的样本):、____

  • 新质心1的 x 坐标 = (____ + ____ + ____) / 3 = ____
  • 新质心1的 y 坐标 = (____ + ____ + ____) / 3 = ____
  • 新质心1 = (____, ____)

簇2(归属质心2的样本):、____

  • 新质心2的 x 坐标 = (____ + ____ + ____) / 3 = ____
  • 新质心2的 y 坐标 = (____ + ____ + ____) / 3 = ____
  • 新质心2 = (____, ____)

第 3 步:比较新旧质心

  • 质心1 从 (1, 2) 移动到 (____, ____)
  • 质心2 从 (6, 5) 移动到 (____, ____)

质心发生了移动 → 需要继续迭代(未收敛)。

  • 👨‍🏫 教师活动:引导学生逐行完成计算;在黑板上的坐标图中用箭头标出质心移动的方向和距离。
  • 🧑‍🎓 学生活动:独立完成上述填空计算;在坐标纸上画出 6 个点的位置,标出初始质心和移动后的新质心。

通过“填空式”的计算任务,将抽象的迭代过程转化为具体的算术操作。学生在完成计算的同时,自然而然地理解了质心是“簇内所有点的平均位置”这一核心概念。


📝 四、 课堂小结(5 分钟)

flowchart LR
    root["📊 k-means 聚类(第一次课)"]

    subgraph C1["📖 核心思想"]
        direction TB
        A1["无监督学习:无标签自动分组"]
        A2["目标:簇内相似,簇间相异"]
    end

    subgraph C2["🔧 三个核心概念"]
        direction TB
        B1["K值:聚类个数(需提前指定)"]
        B2["质心:簇内样本的均值位置"]
        B3["距离:通常使用欧氏距离"]
    end

    subgraph C3["🔄 迭代四步走"]
        direction TB
        C1_node["①指定K → ②初始化质心"]
        C2_node["③分配(最近质心)→ ④更新(重新计算均值)"]
        C3_node["重复③④ → 直到质心不变"]
    end

    root --> C1
    root --> C2
    root --> C3

    style root fill:#c62828,stroke:#8e0000,color:#fff,stroke-width:2px,rx:8px,ry:8px
    style C1 fill:#ffebee,stroke:#ef5350,stroke-width:1px
    style C2 fill:#e3f2fd,stroke:#1e88e5,stroke-width:1px
    style C3 fill:#e8f5e9,stroke:#43a047,stroke-width:1px

✏️ 随堂检测与互动练习

点击展开:随堂测试题(带解析)

一、 单选题

  1. 以下哪个是聚类分析与分类分析的本质区别?
  • A. 聚类分析需要预先标注数据,分类不需要
  • B. 聚类分析属于无监督学习,分类属于监督学习
  • C. 聚类分析只能处理数值型数据
  • D. 两者没有本质区别
【答案】

【解析】B。聚类分析使用无标签数据自动发现分组结构,分类分析使用有标签数据学习预测规则。

  1. 在 k-means 算法中,质心的计算方式是?
  • A. 簇内所有样本的中位数
  • B. 簇内所有样本的众数
  • C. 簇内所有样本的算术平均值
  • D. 簇内距离最远的两个样本的中点
【答案】

【解析】C。质心(Centroid)是簇内所有样本在每一维上的算术平均值。

二、 计算题

题目:现有 4 个一维数据点:2, 4, 7, 9。设定 K=2,初始质心为 3 和 8。请完成一轮迭代(分配 → 更新质心)。

【答案】

【解析】

  • 分配:点2和4到质心3更近(距离分别为1和1),归入簇1;点7和9到质心8更近(距离分别为1和1),归入簇2。
  • 更新:新质心1 = (2+4)/2 = 3,新质心2 = (7+9)/2 = 8。
  • 本轮质心未发生变化 → 已收敛

📮 五、 课后作业与拓展

📮 课后作业…
  1. 基础作业:课本 15.1 节后的“思考与练习”第 1、2 题。
  2. 计算作业:给定 5 个二维点 (0,0), (1,2), (2,1), (5,4), (6,5),K=2,初始质心为 (0,0) 和 (5,4)。完成两轮迭代,记录每轮更新后的质心位置。
  3. 思考题:k-means 的聚类结果是否一定是最优的?初始质心的选择对结果有何影响?
  4. 场景列举作业:列举 3 个现实生活中可能用到聚类的场景,并说明每个场景中“簇”的含义是什么。
  5. 预习作业:预习 15.2 节,了解 sklearn.cluster.KMeans 的基本用法。

📋 六、 板书设计

🛠️ 板书设计…
 1📊 k-means 聚类 – 第一次课
 2
 3一、 聚类 vs 分类
 4    分类:有标签 → 监督学习
 5    聚类:无标签 → 无监督学习(发现隐藏结构)
 6
 7二、 三大核心概念
 8    · K:聚成几类(人工指定)
 9    · 质心:簇内样本的均值(簇的中心)
10    · 距离:常用欧氏距离 √[(x₁-x₂)²+(y₁-y₂)²]
11
12三、 k-means 迭代四步走
13    ① 指定 K
14    ② 随机初始化 K 个质心
15    ③ 分配:每个点归属最近的质心
16    ④ 更新:重新计算每个簇的质心(取均值)
17    重复 ③④ 直到质心不变 → 收敛
18
19四、 评估指标:WCSS(簇内平方和)
20    WCSS 越小 → 簇内越紧凑 → 聚类效果越好
21    WCSS = Σ Σ ||x - μ_k||²

本课用到的单词

英文术语 发音(美式) 中文释义 专业语境解释
Clustering /ˈklʌs.tər.ɪŋ/ 聚类 将无标签数据按照相似性自动分组的无监督学习方法。
K-means /keɪ miːnz/ K均值算法 最经典的聚类算法,通过迭代更新质心实现分组。
Centroid /ˈsen.trɔɪd/ 质心 簇内所有样本在各个维度上的平均值,代表簇的中心位置。
Euclidean Distance /juːˈklɪd.i.ən ˈdɪs.təns/ 欧氏距离 两点之间的直线距离,k-means 中最常用的距离度量。
WCSS /ˌdʌbəl.juː.siː.esˈes/ 簇内平方和 Within-Cluster Sum of Squares,衡量聚类紧凑度的指标。
Convergence /kənˈvɜːr.dʒəns/ 收敛 算法达到稳定状态(质心不再变化),迭代终止的条件。
Initialization /ɪˌnɪʃ.əl.aɪˈzeɪ.ʃən/ 初始化 为算法选择起始状态,在k-means中指随机选择初始质心。