为什么在KNN算法中,当K值较高时,测试错误率会增加?

时间:2019-10-07 14:06:48

标签: python machine-learning knn

我得到的错误率高达20个值,这可能是什么原因?  k_values:[1、2、3、4、5、6、7、8、9、10、11、12、13、14、15、16、17、18、19、20] 错误[0.0、0.0、0.0、0.0、0.0、0.0、0.0020000000000000018、0.0020000000000000018、0.0020000000000000018、0.0020000000000000018、0.0020000000000000018、0.0020000000000000018、0.006000000000000005、0.0040000000000000036、0.008000000000000007、0.006000000000000005、0.010000000000000009、0.008000000000000007、0.014000000000000012、0.01200000000000001 这是我的测试错误率

我想知道错误率随k值增加而增加的原因吗?

3 个答案:

答案 0 :(得分:0)

KNN中的参数K控制模型的复杂性。您没有提供具体问题的详细信息,但是您可能会看到的是偏差/方差的权衡。 This post是一本不错的书。

通常,在验证集中尝试从模型中尝试不同的超级参数值(KNN中的K值),并保持最佳值。请注意,此验证集与测试集不同。

答案 1 :(得分:0)

KNN中的

K代表所考虑的最近邻居的数量。因此,考虑的邻居越多,距离越远对最终结果的影响。尽管选择了更多的邻居,但也选择了更多不同类别的元素,这是有道理的。这可能导致分类错误,尤其是对于簇边界上的元素。

要考虑的另一个示例是两个不平衡的群集-一个群集具有5个元素,第二个群集具有20个元素。当K = 10时,第一个群集中的所有元素都将归为第二个。另一方面,如果群集被很好地分离,则K = 3将产生更好的结果。

结果的确切原因将取决于您拥有的簇数,它们的位置,密度和基数。

答案 2 :(得分:0)

K值越高,结果越多,数据集中的多数类对结果有更大的发言权,因此错误率增加

让我们说有100个数据点,假设80个属于类标签“ 0”,而20个属于类标签“ 1”

现在,如果我选择k> 40的任何值,则所有数据点现在将属于多数类

通常,K值较大会导致拟合不足,而K值很小(尽管因特定问题而定)会导致拟合过度