k-最近邻,其中每个 class 中的对象数量差异很大

k-nearest neighbors where # of objects in each class differs vastly

我 运行 knn(在 R 中)在一个数据集上,其中对象 class 化为 A 或 B。但是,A 的数量比 B 的多(class 中的 18 个A 每 1 个 class B).

我该如何应对?例如,如果我使用 18 的 k,并且邻居中有 7 个 B(比一组 18 个中的平均 B 多得多),测试数据仍将 class 化为 A,而它可能应该成为B.

我认为较低的 k 会对我有所帮助。选择 k 的值是否有任何经验法则,因为它与训练集中 classes 的频率有关?

没有这样的规则,对于你的情况,我会尝试一个可能在 3 到 6 之间的非常小的 k。

关于数据集,除非您的测试数据或真实世界数据的比率与您提到的大致相同 (18:1),否则我会删除一些 A 以获得更准确的结果,我不会建议您这样做如果比率确实接近真实世界的数据,因为你将失去比率的影响(较低概率分类为较低概率数据)。