为了有效地找到d维空间中的点的n个最近邻居,我选择具有最大散射的维度(即,在该坐标中,点之间的差异最大)。在该维度中从最小值到最大值的整个范围被分成k个区间。每个箱包含坐标(在此尺寸中)在该箱的范围内的点。确保每个箱中至少有2n个点。 找到点x的n个最近邻居的算法如下:
此算法并非适用于所有情况。算法无法计算最近邻居? 任何人都可以建议修改算法以确保所有情况都能正常运行吗?
答案 0 :(得分:0)
这是失败的,因为x的k个最近邻居(任何一个)可能位于与x不同的bin中。
答案 1 :(得分:0)
“不工作”是什么意思?你明白这一点,你所做的只是一种近似的方法
尝试规范化数据然后选择维度,否则分散是没有意义的。
用于区分或聚类的最佳向量可能不是原始维度之一,而是维度的任何组合。
使用PCA(主成分分析)或LDA(线性判别分析)来识别判别维度。
答案 2 :(得分:0)
KNN失败的地方:
如果数据是所有不同类的混杂,则knn将失败,因为它将尝试查找k个最近的邻居,但所有点都是随机的
离群点
假设您有两个不同类的集群。然后,如果您有一个离群点作为查询,即使查询点远离两个聚类,knn也会分配一个类。