我目前正在尝试使用 KNN 预测连续变量。我不想平等对待每个邻居,而是想使用权重来创建加权平均值。权重本身并不理想,因为邻居越近,我越希望该邻居影响最终结果。
这导致我考虑每个距离的倒数,但这不能处理实例完全相同的情况 -> 距离为 0。
关于如何正确设置每个邻居相对于其距离的权重的任何建议?类似于逆处理的方式,但它允许 0 值。
我目前正在尝试使用 KNN 预测连续变量。我不想平等对待每个邻居,而是想使用权重来创建加权平均值。权重本身并不理想,因为邻居越近,我越希望该邻居影响最终结果。
这导致我考虑每个距离的倒数,但这不能处理实例完全相同的情况 -> 距离为 0。
关于如何正确设置每个邻居相对于其距离的权重的任何建议?类似于逆处理的方式,但它允许 0 值。
从技术上讲,距离的倒数不应该造成任何问题。考虑到您必须对与“学习”数据集中的一个观察结果相同的观察(实例)进行分类的情况,而不是由直接公式定义的反距离,因为您必须除以零。但考虑到背后的数学,零距离的倒数是正无穷大。这意味着,相同点的权重将支配数据实例的所有其他权重。因此,该特定点的分类可以作为数据集中相同观察的类别。
另一方面,欧几里得距离的倒数只是一种距离。您始终可以对其应用核函数来对贡献进行非均匀加权。例如,您可以选择均值为零且方差等于 1 的正态密度。然后,您的权重将是欧几里得距离的密度函数值。
(其中是与观察的距离)的衰减指数是方便的。它有一个很好的特点,即当观察恰好位于您的训练点之一时权重等于衰减为零。
您需要决定的是比例因子,它会极大地影响您的结果,因为衰减指数是非线性的。如果太小或太大,那么所有点的权重几乎相等(假设没有一个点的距离非常接近于零)。一种方法是选择适合您的数据集另一种方法是为正在考虑的每组个邻居计算一个新的值,这将保证权重的可变性(只要所有个邻居不是等距的)。