机器学习-圣诞日历-第-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 中使用以下循环来实现它:
-
选择初始质心
-
计算每个点到每个质心的距离
-
将每个点分配给最近的质心
-
重新计算每个簇中点的平均值作为质心
-
重复步骤 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 中,这是一个简单的IF或MIN逻辑。

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 = 2和k = 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。
那么,LDA或QDA的无监督版本会是什么样子呢?我们将在下一篇文章中回答这个问题。

k-means – 作者图片

浙公网安备 33010602011771号