对于偶数 K 值和平局,KNN 的 class 会预测什么?

What would be predicted class of KNN for an even value of K and in case of a tie?

KNN (K nearest neighbour)个分类器中,如果选择了偶数的K值,那么在多数表决规则或欧氏距离规则下的预测是什么。例如如果有 3 类 say

  1. 山鸢尾
  2. 杂色鸢尾
  3. 弗吉尼亚鸢尾

现在假设我们的值为 n_neighbors = 6。有相当多的机会获得多数投票规则的平局结果?在大多数可视化中,该区域以白色表示,表示无法做出决定。但是平局的实际预测是什么。这个问题很难模拟并且相当概念化,因此可能不会那么容易模拟。

n_neighborssolves/reduces的奇数也有这个问题吗?您认为 euclidean/Manhattan 距离比使用简单多数表决更能解决这个问题吗?然而 sklearn docs 根本没有提到这一点。

由于您使用的是多数表决,因此当两个 类 标签获得相同分数时,为最近的邻居选择奇数值可以解决问题。

经过一番挖掘,我得到了一些不错的答案。首先让我告诉你,正如@anasvaf 等一些用户提到的,你应该只使用奇数进行二进制 class 化。这是绝对不真实的。首先,当我们对二进制 class 化使用多数表决时,在某些情况下,完全取决于实际库来选择操作。例如,在 scikit-learn 中,它采用变量的模式。这意味着如果在训练数据集中,class 1 的数据点数量更多,那么 1 将用于平局。但是有更好的解决办法。

我们可以使用加权 KNN 代替普通 KNN。在加权 KNN 中,如果有平局,我们可以看到 1 个标记数据点与 k 个点和 0 个标记点的总距离。如果 1 的总距离更大,则 class 将为 0,反之亦然。

在 KNN 中还有其他很好的技术来处理关系,但老实说,KNN 并不是一个好的学习算法,特别是因为它在大型数据集上的时间复杂度 space。