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 分类器算法不适用于所有情况的主要内容,如果未能解决你的问题,请参考以下文章

基于 KNN 算法的贝叶斯分类器

KNN-分类算法

kNN 是统计分类器吗?

机器学习算法篇之KNN图像识别分类器构建

KNN分类器之NearestNeighbors详解及实践

k-近邻算法(kNN)测试算法:作为完整程序验证分类器