KNN 分类器算法不适用于所有情况
Posted
技术标签:
【中文标题】KNN 分类器算法不适用于所有情况【英文标题】:KNN classifier algorithm not working for all cases 【发布时间】:2015-01-12 09:13:16 【问题描述】:为了在 d 维空间中有效地找到一个点的 n 个最近邻,我选择了具有最大分散度的维度(即在这个坐标中点之间的差异最大)。在这个维度上从最小值到最大值的整个范围被分成 k 个 bin。每个 bin 包含坐标(在此维度中)在该 bin 范围内的点。确保每个 bin 中至少有 2n 个点。 寻找点 x 的 n 个最近邻的算法如下:
-
确定 bin kx,x 所在的点(精确的投影)。
计算 x 与 bin kx 中所有点之间的距离。
按升序对计算的距离进行排序。
选择前 n 个距离。测量这些距离的点返回为 n
x 的最近邻。
此算法不适用于所有情况。什么时候算法无法计算最近邻? 任何人都可以提出修改算法以确保在所有情况下都能正常运行吗?
【问题讨论】:
【参考方案1】:KNN 失败的地方:
如果数据是所有不同类的混杂,则 knn 将失败,因为它会尝试找到 k 个最近的邻居,但所有点都是随机的
异常点
假设您有两个不同类的集群。然后,如果您有一个异常点作为查询,knn 将分配其中一个类,即使查询点远离两个集群。
【讨论】:
【参考方案2】:这是失败的,因为 x 的 k 个最近邻居中的(任何一个)可能与 x 位于不同的 bin 中。
【讨论】:
对不起@Duh,但我不明白你的意思。如果我们只在一个混凝土箱中寻找 k 个最近的邻居,他们怎么可能在不同的箱中?【参考方案3】:“不工作”是什么意思?您确实明白,您所做的只是一种近似方法。 尝试规范化数据,然后选择维度,否则分散没有意义。 用于区分或聚类的最佳向量可能不是原始维度之一,而是维度的任意组合。 使用 PCA(主成分分析)或 LDA(线性判别分析)来识别判别维度。
【讨论】:
以上是关于KNN 分类器算法不适用于所有情况的主要内容,如果未能解决你的问题,请参考以下文章