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

Posted

技术标签:

【中文标题】k-最近邻,其中每个类中的对象数差异很大【英文标题】:k-nearest neighbors where # of objects in each class differs vastly 【发布时间】:2016-10-02 23:18:46 【问题描述】:

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

我应该如何解决这个问题?例如,如果我使用 18 的 ak,并且邻居中有 7 个 B(比一组 18 个中的平均 B 多得多),那么测试数据仍然会被归类为 A,而应该是 B。

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

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

感谢您的建议!我最终确实删除了一些 A 以降低比率,并使用了较小的 k。我对结果很满意。

以上是关于k-最近邻,其中每个类中的对象数差异很大的主要内容,如果未能解决你的问题,请参考以下文章

K近邻算法

K-近邻(KNN)算法

机器学习实战笔记-K近邻算法2(改进约会网站的配对效果)

如何在 Matlab 中进行高效的 k 最近邻计算

距离测量度量对 K 最近邻维数诅咒的影响?

KD树