kNN 和不平衡类

机器算法验证 k-最近邻 不平衡类
2022-03-30 02:18:51

你认为不平衡的类是 k-最近邻的一个大问题吗?如果是这样,你知道有什么聪明的方法来处理这个吗?

4个回答

我相信 Peter Smit 上面的回答是混淆了 K 最近邻 (KNN) 和 K-means,它们是非常不同的。

KNN 容易受到类不平衡的影响,如下所述:https ://www.quora.com/Why-does-knn-get-effected-by-the-class-imbalance

不平衡的班级规模是 KNN 的一个理论和实践问题,至少自 2003 年以来,机器学习文献中一直存在该问题。当某些班级在您的主要数据集中出现率较低时(例如:欺诈检测、疾病筛查、垃圾邮件),这尤其令人烦恼过滤)。

谷歌学者搜索1显示了几篇描述该问题以及通过自定义 KNN 算法来缓解该问题的策略的论文:

  • 通过类大小的倒数加权邻居将邻居计数转换为每个类中属于您的 K 个最近邻居的分数
  • 通过距离加权邻居
  • 使用基于半径的规则来收集邻居而不是 K 最近的(通常在 KNN 包中实现)

我还发现这两个博客有助于了解班级规模不平衡的一般背景。

我想补充一点 - knn 很敏感,可以说给定类边界上的观察次数与该类中的观察总数。如果您有三个类别具有来自相同分布的相同数量的观测值但具有不同的平均值,并且第二类在另外两个之间明显是云 - 它的预期值在另外两个之间,那么第二个类别中有更多的错误分类。但是这样的事情适用于每个分类器。

原则上,不平衡的类对于 k-最近邻算法来说根本不是问题。

因为该算法不受类大小的任何影响,所以它不会基于大小而偏爱任何类。尝试使用明显的异常值和 k+1 运行 k-means,您会发现大多数情况下异常值会得到自己的类别。

当然,对于硬数据集,始终建议多次运行该算法。这是为了避免由于初始化错误而引起的麻烦。