欢迎来到 K-means 聚类的世界!
你好!在准备 Exam SRM 的过程中,你会发现无监督学习 (Unsupervised Learning) 是考试大纲中最有趣的部分之一。与你之前学过的回归或分类模型不同(那些模型都有目标变量 \(Y\)),无监督学习的重点在于当我们没有特定的“答案”或标签作为指导时,如何从数据中找出隐藏的模式。
今天,我们要来探讨 K-means 聚类。你可以将其视为一种“分组”的艺术。无论你是保险精算师,想要将保户进行聚类,或是营销人员想根据购物习惯将顾客分组,K-means 都是你不可或缺的工具。别担心这听起来很专业;我们将一步步为你拆解!
什么是 K-means 聚类?
K-means 聚类的目标很简单:我们想将观察值划分为 K 个不重叠的组别(簇,clusters)。为了达成这个目标,我们必须确保:
1. 每个观察值都刚好属于一个组别。
2. 同一组内的观察值越相似越好。
3. 不同组之间的观察值越不同越好。
生活中的类比
想象你有一大堆没整理的衣服。你决定要将它们分成 K=3 堆。你可能会依照“深色”、“白色”和“彩色”来分类。在“白色”这堆衣服里,彼此非常相似,而且与“深色”那堆截然不同。这正是 K-means 对数据点所做的事情!
数学原理:定义“相似性”
要将项目分组,我们需要一种方法来衡量它们有多“靠近”。在 K-means 中,我们使用平方欧几里得距离 (Squared Euclidean Distance)。算法的目标是最小化簇内方差 (Within-Cluster Variation)。
对于簇 \(C_k\),其数学公式如下:
\( W(C_k) = \sum_{i \in C_k} \sum_{j=1}^p (x_{ij} - \bar{x}_{kj})^2 \)
其中:
- \(x_{ij}\) 是第 \(i\) 个观察值的第 \(j\) 个特征值。
- \(\bar{x}_{kj}\) 是该特征在簇 \(k\) 中所有观察值的平均数 (Mean)。
- \(p\) 是特征(变量)的数量。
简单来说:我们希望每个点与其所属组别的“中心”(平均值)之间的距离越小越好。
算法是如何运作的(步骤详解)
K-means 算法是迭代式 (iterative) 的。它会不断重复一系列步骤,直到无法再改善分组结果为止。别担心刚开始觉得复杂;这只是一个重复的循环!
步骤 1:选择 K。 决定你想要多少个簇(例如 \(K=3\))。
步骤 2:初始化。 随机给每个观察值分配一个 1 到 \(K\) 的数字。这就是你最初“不稳定”的簇。
步骤 3:迭代! 重复以下步骤,直到分配结果不再改变为止:
(a) 寻找质心 (Centroids): 对于每一个 \(K\) 簇,计算该簇内所有点的平均值。这个点称为质心 (Centroid)。
(b) 重新分配点: 观察每一个数据点,将其分配给距离其质心最近的那个簇(使用欧几里得距离)。
小贴士:质心就是“重心”
将质心想象成组里的“平均代表”。在步骤 3b 中,每个数据点都会环顾四周并问:“我和哪一个‘平均代表’最像?”,然后移动到那个组。
重要细节:局部最优解 (Local Optima)
K-means 有点像是在黑夜里的群山中健行。你想要找到最低的谷底(全局最优解,Global Optimum),但你可能会卡在半山腰的一个小洼地里(局部最优解,Local Optimum)。
由于算法是从随机分配开始的,最终结果可能会根据起点的不同而改变。
考试重点:为了找到最优解,务必要使用不同的随机起点多次执行 K-means 算法,并选择总簇内方差最小的那一次结果。
变量标准化的重要性
这是 Exam SRM 非常热门的话题!因为 K-means 依赖于距离,所以变量的尺度(Scale)至关重要。
例子: 如果你要根据年龄(范围 0–100)和年收入(范围 0–200,000)来对客户聚类,收入变量会主导距离计算,因为数字大太多了。收入上 $1,000 的差距看起来会比 50 岁的年龄差距“更遥远”。
解决方案:在执行 K-means 之前,务必标准化 (Standardize) 你的变量(平均值 = 0,标准差 = 1),这样每个变量在聚类过程中都有平等的“投票权”。
如何选择簇的数量 (K)?
我们怎么知道该分成 2 簇还是 10 簇呢?
随着我们增加 \(K\),簇内方差将永远下降。(如果每个点都自成一簇,方差就是零!)。
我们通常会使用肘部法则 (Elbow Method)。我们绘制总簇内方差对应 \(K\) 的图。我们寻找曲线的“肘部”——即增加更多簇已无法显著降低方差的那个点。这个“弯折处”通常是 \(K\) 的良好选择。
常见陷阱与错误
1. 忘记标准化: 如前所述,如果不标准化,结果会偏向范围较大的变量。
2. 离群值 (Outliers): K-means 对离群值非常敏感。单一个远离群体的点可能会将质心拉得离其他组员很远。
3. 类别数据: K-means 是为数值型数据设计的(因为你无法轻易计算颜色或名称的“平均值”)。
4. 非球状形状: K-means 偏好圆形的簇。如果你的簇形状像长条蛇或新月形,K-means 将很难侦测到它们。
重点复习箱
- 类型: 无监督学习。
- 目标: 最小化簇内方差。
- 度量: 平方欧几里得距离。
- 必做: 事先标准化数据!
- 弱点: 可能陷入局部最优解;对离群值敏感。
总结:关键重点
K-means 是一个简单但强大的算法,用于找出数据中的组别。它的运作方式是迭代地计算质心,并将点重新分配到最近的中心。由于它对初始的随机起点很敏感,请务必多次执行。最后,请记住,预处理(标准化数据)与算法本身一样重要!
你知道吗? K-means 常被用于图像压缩!通过将相似的像素颜色归为一类,你可以用较小的色彩“调色盘”来呈现复杂的图像,从而节省文件空间。
持续练习这些概念,你很快就能精通 Exam SRM 的无监督学习部分!你一定做得到的!