机器学习-圣诞日历-第-4-天-Excel-中的-k-Means

机器学习“圣诞日历”第 4 天:Excel 中的 k-Means

原文:towardsdatascience.com/the-machine-learning-advent-calendar-day-4-k-means-in-excel/

欢迎来到机器学习“圣诞日历”的第 4 天。Machine Learning Advent Calendar

在前三天,我们探索了用于监督学习的基于距离的模型

在所有这些模型中,想法是相同的:我们测量距离,我们根据最近的点或最近的中心来决定输出。

今天,我们仍然停留在同一个思想家族中。但我们以无监督的方式使用距离:k-means

现在,一个问题对于那些已经了解这个算法的人来说:k-means 看起来更接近哪个模型,k-NN 分类器,还是最近邻质心分类器?

如果你还记得,到目前为止,我们看到的所有的模型中,实际上并没有真正的“训练”阶段或超参数调整。

  • 对于 k-NN,根本就没有训练。

  • 对于 LDA、QDA 或 GNB,训练只是计算均值和方差。而且也没有真正的超参数。

现在,使用 k-means,我们将实现一个看起来更像“真实”机器学习的训练算法。

我们从一个微小的 1D 例子开始。然后我们转向 2D。

k-means 的目标

在训练数据集中,没有初始标签

k-means 的目标是通过将彼此靠近的点分组来创建有意义的标签。

让我们看看下面的插图。你可以清楚地看到两组点。每个质心(红色方块和绿色方块)位于其簇的中间,每个点都被分配到最近的那个。

这为我们提供了一个非常直观的图景,说明了 k-means 如何仅使用距离来发现结构。

而在这里,k 代表我们试图找到的中心数量。

k-means in Excel – 图像由作者提供

现在,让我们来回答这个问题:k-means 更接近哪个算法,k-NN 分类器还是最近邻质心分类器?

不要被 k-NN 和 k-means 中的k所迷惑。

它们并不代表相同的意思:

  • k-NN中,k是邻居的数量,而不是类别的数量;

  • k-means中,k是质心的数量。

K-means 与最近邻质心分类器更为接近。

这两个模型都由质心表示,对于一个新的观测值,我们只需计算它到每个质心的距离,以决定它属于哪一个。

当然,区别在于在最近邻质心分类器中,我们已经知道质心,因为它们来自标记过的类别。

k-means中,我们不知道质心。算法的整个目标是从数据中直接发现合适的质心。

商业问题完全不同:我们不是在预测标签,而是在尝试创建标签。

在 k-means 中,k(质心的数量)的值是未知的。因此,它成为我们可以调整的超参数

只有一个特征的 k-means

我们从一个微小的 1D 示例开始,这样所有内容都可以在一个轴上显示。我们将以如此简单的方式选择值,以至于我们可以立即看到两个质心。

1, 2, 3, 11, 12, 13

是的,2 和 12。

但计算机如何知道?机器将通过逐步猜测来“学习”。

接下来是称为Lloyd 算法的算法。

我们将在 Excel 中使用以下循环来实现它:

  1. 选择初始质心

  2. 计算每个点到每个质心的距离

  3. 将每个点分配给最近的质心

  4. 重新计算每个簇中点的平均值作为质心

  5. 重复步骤 2 到 4,直到质心不再移动

1. 选择初始质心

选择两个初始中心,例如:

  • c_1 = 2.5

  • c_2 = 3

它们应该在数据范围内(介于 1 和 13 之间)。

图片

Excel 中的 k-means – 作者图片

2. 计算距离

对于每个数据点 x:

  • 计算到 c_1 的距离,

  • 计算到 c_2 的距离。

通常,我们在 1D 中使用绝对距离。

现在,每个点都有两个距离值。

图片

Excel 中的 k-means – 作者图片

3. 分配簇

对于每个点:

  • 比较两个距离,

  • 将最小的簇(1 或 2)分配给点。

在 Excel 中,这是一个简单的IFMIN逻辑。

图片

Excel 中的 k-means – 作者图片

4. 计算新的质心

对于每个簇:

  • 取分配给该簇的点,

  • 计算它们的平均值,

  • 这个平均值成为新的质心。

图片

Excel 中的 k-means – 作者图片

5. 迭代直到收敛

现在在 Excel 中,多亏了公式,我们可以简单地粘贴新的质心值到初始质心的单元格中。

更新是即时的,经过几次这样的操作后,您会发现值不再变化。这时,算法已经收敛。

图片

Excel 中的 k-means – 作者图片

我们还可以在 Excel 中记录每一步,这样我们就可以看到质心和簇随时间的变化。

图片

Excel 中的 k-means – 作者图片

有两个特征的 k-means

现在,让我们使用两个特征。过程完全相同,我们只是使用 2D 中的欧几里得距离。

您可以将新的质心值作为值复制粘贴(只需更新几个单元格),

图片

Excel 中的 k-means – 作者图片

或者你可以显示所有中间步骤来查看算法的完整演变。

图片

Excel 中的 k-means – 作者图片

在 Excel 中可视化移动的质心

为了使过程更直观,创建显示质心如何移动的图表很有帮助。

不幸的是,Excel 或 Google Sheets 并不适合这种可视化,数据表很快就会变得有点复杂。

如果你想看一个带有详细图表的完整示例,你可以阅读我大约三年前写的这篇文章这篇文章,其中清楚地显示了质心移动的每一步。

图片

Excel 中的 k-means – 作者图片

如您在这张图片中看到的,工作表变得相当无序,尤其是与早期非常直接的工作表相比。

图片

Excel 中的 k-means – 作者图片

选择最优的 k:肘部方法

因此,现在,我们可以在我们的情况下尝试k = 2k = 3,并计算每个的惯性。然后我们简单地比较这些值。

我们甚至可以从 k=1 开始。

对于每个 k 的值:

  • 我们运行 k-Means 直到收敛,

  • 计算惯性,即每个点到其分配的质心的平方距离之和。

在 Excel 中:

  • 对于每个点,计算其到质心的距离并将其平方。

  • 将所有这些平方距离相加。

  • 这给出了这个 k 的惯性。

例如:

  • 对于 k = 1,质心只是 x1 和 x2 的整体平均值,

  • 对于 k = 2 和 k = 3,我们从你运行算法的表格中获取收敛的质心。

然后,我们可以绘制惯性作为 k 的函数的图表,例如对于(k = 1, 2, 3)。

对于这个数据集

  • 从 1 到 2,惯性下降很多,

  • 从 2 到 3,改进很小。

“肘部”是在惯性下降变得微不足道之后的 k 的值。在例子中,它表明 k = 2 是足够的。

图片

Excel 中的 k-means – 作者图片

结论

一旦你在 Excel 中一步一步地看到它,K-means 是一个非常直观的算法。

我们从简单的质心开始,计算距离,分配点,更新质心,然后重复。现在,我们来看看“机器学习”是如何进行的,对吧?

好吧,这只是开始,我们将看到不同的模型“学习”的方式真的很不同。

而且这里是明天文章的过渡:最近邻质心分类器的无监督版本确实是k-means

那么,LDAQDA的无监督版本会是什么样子呢?我们将在下一篇文章中回答这个问题。

图片

k-means – 作者图片

posted @ 2026-03-27 10:32  布客飞龙III  阅读(20)  评论(0)    收藏  举报