KNN在K值为偶数且出现平局时的预测类别会是什么?

KNN (K最近邻)分类器中,如果选择了偶数的K值,那么在多数投票规则或欧几里得距离规则下,预测结果会是什么。例如,如果有3个类别,分别是

  1. Iris-setosa
  2. Iris-versicolor
  3. Iris-virginica

假设我们设置n_neighbors = 6。在多数投票规则下,有相当大的几率出现平局结果?在大多数可视化中,这种区域通常用白色表示,表示无法做出决策。但是,在出现平局时,实际的预测结果会是什么?这个问题很难模拟,并且相当抽象,因此可能不容易模拟出来。

另外,设置n_neighbors为奇数是否能解决或减少这个问题?你认为与简单的多数投票相比,使用欧几里得/曼哈顿距离是否能更好地处理这个问题。然而,scikit-learn文档对此完全没有提及。


回答:

经过一番研究,我找到了一些很好的答案。首先,像@anasvaf这样的用户提到,你应该只在二元分类中使用奇数,这是完全错误的。首先,当我们使用多数投票进行二元分类时,如果出现平局,具体的操作完全依赖于所使用的库。例如,在scikit-learn中,它会选择变量的众数。这意味着,如果在训练数据集中,类别1的数据点数量更多,那么在平局时会选择1。但有一个更好的解决方案。

我们可以使用加权KNN来代替普通的KNN。在加权KNN中,如果出现平局,我们可以计算标记为1的数据点与k个点的总距离,以及标记为0的数据点与k个点的总距离。如果标记为1的总距离更大,那么类别将是0,反之亦然。

还有其他一些好的技术可以处理KNN中的平局问题,但说实话,KNN并不是一个好的学习算法,特别是由于它在大数据集上的时空复杂度问题。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注