为什么 KNN 中 k=1 的精度最好?

问题描述 投票:0回答:4

我正在使用 Weka IBk 进行文本分类。每个文档基本上都是一个短句子。训练数据集包含 15,000 个文档。在测试时,我可以看到 k=1 给出了最好的准确度?这该如何解释呢?

text classification weka knn
4个回答
0
投票

如果您使用与 k=1 训练过的相同数据集查询学习器,则输出值应该是完美的,除非您的数据具有相同的参数但具有不同的结果值。阅读一些关于过度拟合的内容,因为它适用于 KNN 学习器。

如果您使用与训练时相同的数据集进行查询,则查询将为每个学习者提供一些给定的参数值。因为该点存在于您训练的数据集中的学习器中,所以学习器将匹配该训练点最接近参数值,因此输出该训练点存在的任何 Y 值,在本例中与您的点相同查询与。


0
投票

可能性是:

  1. 训练数据和测试数据是同一个数据
  2. 数据测试与训练数据相似度高
  3. 班级之间的界限非常清晰

K 的最佳值取决于数据。一般来说,k的值可能会减少噪声对分类的影响,但会使每个分类之间的界限变得更加模糊。


0
投票

如果您的结果变量包含值 0 或 1 - 那么请确保您使用的是 as.factor,否则它可能会将数据解释为连续的。


-1
投票

准确度通常是针对不在训练数据集中的点(即看不见的数据点)计算的,因为如果您计算看不见的值(不在训练数据集中的值)的准确度,您可以声称我的模型的准确度是已计算出未见的值。

如果计算训练数据集(k=1 的 KNN)的准确度,您将得到 100%,因为模型已经看到这些值,并且为 k=1 形成了粗略的决策边界。当您计算看不见的数据的准确性时,它的表现非常糟糕,即训练误差会非常低,但实际误差会非常高。所以如果你选择一个最佳的 k 会更好。要选择最佳 k,您应该在误差和作为测试数据的未见数据的 k 值之间绘制图表,现在您应该选择误差最低的值。

现在回答你的问题,

1)您可能已将整个数据集作为训练数据集,并选择数据集的子部分作为测试数据集。
(或者) 2) 您可能已经获取了训练数据集的准确性。

如果这两种情况不是,请检查较高 k 的精度值,对于未见过的数据或测试数据,当 k>1 时,您将获得更好的精度。

© www.soinside.com 2019 - 2024. All rights reserved.