【问题标题】:How to choose a weight function for KNeighborsClassifier如何为 KNeighborsClassifier 选择权重函数
【发布时间】:2021-05-08 21:58:10
【问题描述】:

我正在学习 kNN 模型的超参数,并且遇到了“距离”和“均匀”权重函数参数。

我的理解是,在模型经过训练以计算预测(通过权衡邻居的投票)之后,将使用权重函数。所以我的问题如下:

我对仅用于预测(而不是在训练期间)的权重函数的理解是否正确?

似乎使用“距离”总是能提供接近 100% 的训练准确率,这是否意味着使用“距离”函数会导致过拟合?

什么时候应该使用“距离”而不是“均匀”?

【问题讨论】:

    标签: machine-learning scikit-learn knn


    【解决方案1】:

    weights 参数的使用位置

    您对weights 参数的理解是正确的,它只影响预测步骤。它仅用于加权每个最近邻居的投票以确定预测标签。

    确切地说,KNeighborsClassifier 并没有真正执行任何训练,除了将训练数据保存到内存中,因此显然weights 参数在这里不起作用。

    uniformdistance 之间的区别

    预计使用weights="distance" 确实会更容易过度拟合。这样做的原因是,它可能会过度优先考虑最近的邻居,而如果其他最近的邻居距离较远,则忽略它们。另一方面,weights="uniform"(这是默认设置)确保即使一些最近的邻居离得更远一点,它们仍然计入预测。

    这很好地说明了偏差-方差权衡。实际上,distance 通过降低不太相似的数据点的权重来减少偏差,但这样做会增加方差,因为预测更多地依赖于训练样本的各个数据点。 uniform 则相反,它通过确保每个最近的邻居具有相同的贡献来减少方差,从而减少对单个训练数据点的依赖性,但代价是平等考虑最近的邻居,最终可能仍然很远观察到标签,这会导致更大的回报偏差。

    总之,当您觉得您的模型欠拟合时,您可能想选择distance,这可能表现为许多“平均”预测。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-06-24
      • 2018-07-16
      • 2019-02-19
      • 1970-01-01
      • 2021-11-09
      • 2019-12-12
      • 2023-03-25
      相关资源
      最近更新 更多