Text 为什么KNN中的k=1给出了最佳精度?

Text 为什么KNN中的k=1给出了最佳精度?,text,classification,weka,knn,Text,Classification,Weka,Knn,我正在使用Weka IBk进行文本分类。每个文件基本上都是一个简短的句子。培训数据集包含15000个文档。在测试过程中,我可以看到k=1给出了最好的精度?这怎么解释呢 如果您使用k=1的相同数据集查询学员,则输出值应该是完美的,除非您有具有不同结果值的相同参数的数据。阅读适用于KNN学习者的过度装配 如果您使用与培训时使用的数据集相同的数据集进行查询,则每个学员都会使用一些给定的参数值进行查询。由于该点存在于您使用的数据集中的学习者中,因此学习者会将该训练点匹配为最接近参数值,并因此输出该训练点

我正在使用Weka IBk进行文本分类。每个文件基本上都是一个简短的句子。培训数据集包含15000个文档。在测试过程中,我可以看到k=1给出了最好的精度?这怎么解释呢

如果您使用k=1的相同数据集查询学员,则输出值应该是完美的,除非您有具有不同结果值的相同参数的数据。阅读适用于KNN学习者的过度装配


如果您使用与培训时使用的数据集相同的数据集进行查询,则每个学员都会使用一些给定的参数值进行查询。由于该点存在于您使用的数据集中的学习者中,因此学习者会将该训练点匹配为最接近参数值,并因此输出该训练点存在的任何Y值,在这种情况下,Y值与您使用的查询点相同。

可能性为:

  • 数据训练和数据测试是相同的数据
  • 数据测试和训练数据具有很高的相似性
  • 阶级之间的界限非常清楚

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

    通常会为不在训练数据集中的点计算精度,这些点是不可见的数据点,因为如果计算不可见值的精度(值不在training dataset中),您可以声明“我的模型”的精度是为不可见值计算的精度

    如果你计算训练数据集的精度,k=1的KNN,你会得到100%,因为模型已经看到了这些值,并且为k=1形成了一个粗略的决策边界。当你计算看不见的数据的精度时,它的性能非常差,那就是训练误差会非常低,但实际误差会非常高。因此,它是如果您选择了最佳k。要选择最佳k,您应该为测试数据中未看到的数据绘制一个误差和k值之间的图表,现在您应该选择误差最小的值

    现在回答你的问题,

    1) 您可能会将整个数据集作为列车数据集,并选择数据集的一个子集作为测试数据集。
    (或) 2) 您可能已经获得了训练数据集的准确性


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

    谢谢您的回答。我用测试数据而不是训练数据集查询我的学习者。K-最近算法中的K值是一个需要确定的超参数。有很多方法可以决定它(见屏幕上的KNN图),我们不能在测试我们的模型时改变K值。