我在测验中得到了这个问题,它询问当 K=1 时 KNN 分类器的训练误差是多少。训练对 KNN 分类器意味着什么?我对 KNN 分类器的理解是,它考虑了整个数据集,并为任何新的观察值分配了大多数最接近的 K 邻居的值。培训在哪里出现?此外,为此提供的正确答案是,无论任何数据集如何,训练误差都将为零。这怎么可能?
K=1 时 KNN 分类器中的训练误差
此处的训练错误是将训练集作为测试集输入到 KNN 时出现的错误。当 K = 1 时,您将选择最接近测试样本的训练样本。由于您的测试样本在训练数据集中,它会选择自己作为最接近的并且永远不会出错。因此,无论数据集如何,当 K = 1 时,训练误差将为零。顺便说一句,这里有一个合乎逻辑的假设,那就是您的训练集不会包含属于不同类别的相同训练样本,即相互冲突的信息。不过,一些现实世界的数据集可能具有此属性。
为了直观地理解,您可以将训练 KNN 视为对区域进行着色和围绕训练数据绘制边界的过程。
我们可以首先用每对点的垂直平分线的交点在训练集中的每个点周围绘制边界。(垂直平分线动画如下所示)
为了找出如何为这些边界内的区域着色,我们查看每个点的邻居的颜色。当时,对于我们训练集中的每个数据点,我们希望找到另一个与 x距离最小的点。最短距离始终为,这意味着我们的“最近邻”实际上是原始数据点本身。
为了给这些边界内的区域着色,我们查找每个对应的类别。假设我们的选择是蓝色和红色。当时,我们用红色为红色点周围的区域着色,用蓝色为蓝色周围的区域着色。结果看起来像这样:
注意蓝色区域中没有红点,反之亦然。这告诉我们训练误差为 0。
请注意,决策边界通常仅在不同类别之间绘制,(排除所有蓝-蓝红-红边界),因此您的决策边界可能看起来更像这样:
同样,所有蓝色点都在蓝色边界内,所有红色点都在红色边界内;我们的测试误差仍然为零。另一方面,如果我们将增加到,我们会得到下图。请注意,蓝色区域中有一些红点,红色区域中有一些蓝点。这就是非零训练错误的样子。
当时,我们根据该点的类别(在本例中为颜色)及其最近邻的 19 个类别对点周围的区域进行着色。如果大多数邻居是蓝色的,但原始点是红色的,则原始点被认为是异常值,并且它周围的区域是蓝色的。这就是为什么你可以在蓝色区域中有这么多红色数据点,反之亦然。
在 k=1 且训练样本数无限的 KNN 分类器中,最小误差永远不会高于贝叶斯误差的两倍参考