不平衡分类的欠采样算法

2025年6月25日 | 12分钟阅读

当数据集存在高度类别不平衡时,一个类别主导其他类别,尤其是在罕见事件的情况下,这是很正常的。类别不平衡通常会损害常规分类器,因为它们会倾向于多数类。解决此问题的一种方法称为欠采样。

什么是欠采样?

欠采样是一种通过删除从多数类中提取的实例来调整不平衡数据集的策略。欠采样可能是一种有用的数据集平衡技术,尤其是在使用大型数据集进行训练以及/或在资源受限的环境中。如果操作得当,它是一种在不严重损害模型性能的情况下简化训练的有效方法。

欠采样的重要性

它减少了多数类的影响,并使模型能够专注于从少数类中学习。欠采样通过随机选择来强调删除多数类中的实例,从而实现更好的类别平衡。通过这样做,模型不太可能产生偏差,少数类的整体性能得到改善,并且由于数据量,训练时间会缩短。但是,人们担心在欠采样过程中可能会丢失关键信息,并且如果欠采样效率不高,模型的准确性可能会下降。

现在,我们将实现随机欠采样,旨在平衡类别分布。为此,我们将生成合成数据。

代码

输出

Undersampling Algorithms for Imbalanced Classification

根据上述结果,我们可以解释:

  • 第一个图显示了我们最初的数据集不平衡。少数类类别 1 的数量远少于多数类类别 0(以蓝色显示)。在训练机器学习模型时,这种不平衡可能会导致问题,因为模型可能会开始偏向多数类。
  • 第三个图显示了对多数类进行欠采样后的结果。从多数类中随机删除了实例,直到多数类类别 0 的实例数量与少数类类别 1 相同。虽然这种方法也为我们提供了平衡的数据集,但被删除的实例可能会丢失潜在的重要信息。

选择要保留的样本的方法

Near-miss 系列方法和众所周知的 Condensed Nearest Neighbor Rule 是两种确定要保留哪些多数类样本的技术。在本节中,我们将更详细地探讨这两种技术。

1. Near Miss 欠采样

NearMiss 是一种欠采样方法,它通过只保留最接近少数类样本的样本来改进多数类。其思想是通过关注“近失”——即最接近少数类样本的多数类样本——来提高模型区分类别对的能力。

该方法有三种实例化:

  • NearMiss-1 选择与 3 个最近的少数类实例的平均距离最小的多数类实例。
  • NearMiss-2 保留与 3 个最远的少数类实例的平均距离最小的多数类实例。
  • NearMiss-3 确保保留所有最接近每个少数类样本的多数类样本。这些方法有助于更准确地定义决策边界,并且在需要位置数据时也可能是有益的。

现在让我们实现 Near-miss 欠采样。

代码

输出

Undersampling Algorithms for Imbalanced Classification

根据上述结果,我们可以解释:

  • NearMiss-1 选择与少数类样本最相似的多数类样本。尽管多数类示例较少,但重采样的数据集可能看起来与原始数据集相似。保留最接近少数类样本的样本。
  • 相反,NearMiss-2 选择的多数类样本平均来说最接近最远的少数类样本。保留与少数类最不相似的样本。
  • NearMiss-3 保留最接近每个少数类样本的多数类样本。它旨在维护更多样化的、与每个少数类样本相似的多数类样本集合。

02. 用于欠采样的最近邻居规则(Condensed Nearest Neighbor Rule)

Condensed Nearest Neighbors 是一种智能欠采样技术,旨在收集最接近决策边界的优秀多数类实例。目标是创建一个模型可以轻松理解而不会被不必要的数据淹没的训练集。

整个过程从选择少数且随机的多数类子集开始。接下来查看每个幸存的多数类样本(来自两个类别)的最近邻居。如果样本被错误分类,这意味着其邻居表明它属于少数类,则将其包含在子集中。在没有更多多数类样本满足包含要求之前,都会进行此迭代过程。

 

现在让我们应用 Condensed Nearest Neighbor Rule。

代码

输出

Undersampling Algorithms for Imbalanced Classification

根据上述结果,我们可以解释:

  • 原始数据集不平衡,因为它包含 100 个类别 0 的实例和 900 个类别 1 的实例。
  • 在应用CNN后,缩减的数据集包含 80 个类别 0 的实例和 21 个类别 1 的实例。
  • 尽管仍然有些不平衡,但 CNN 能够减小数据集的大小并改善类别平衡。

选择要删除的样本的方法

本节将探讨选择要从多数类中删除哪些样本的方法,例如 Edited Nearest Neighbors Rule 和众所周知的 Tomek Links 方法。

1. 用于欠采样的 Tomek Links

Tomek Links 是一种欠采样方法,它通过识别和删除导致分类混淆的边界数据点来净化数据集。如果两个样本,一个来自多数类,一个来自少数类,是彼此最接近的邻居并且属于不同的类别,那么它们之间就存在 Tomek Link。

现在让我们应用 Tomek Links。

代码

输出

Undersampling Algorithms for Imbalanced Classification

根据上述结果,我们可以解释:

  • 原始数据集不平衡,因为它包含 80 个类别 0 的实例和 720 个类别 1 的实例。
  • 在应用 Tomek links 后,缩减的数据集包含 80 个类别 0 的实例和 720 个类别 1 的实例。
  • 它仍然有些不平衡。

02. 用于欠采样的 Edited Nearest Neighbors Rule

Edited Nearest Neighbors 是一种数据清理技术,它通过删除嘈杂的多数类样本来专门解决类别不平衡问题。在这里,对于多数类的每个实例,我们将获得其周围的邻居。然后我们需要找到k 个最近邻居。我们必须从整个数据集中找到 k 个最近邻居。

我们需要删除多数类,如果其邻居主要是少数类样本,因为我们认为它们是嘈杂的或不必要的。删除此后,此过程将继续进行,直到我们找不到具有少数类邻居的多数类样本为止。

现在让我们应用 Edited Nearest Neighbors。

代码

输出

Undersampling Algorithms for Imbalanced Classification

根据上述结果,我们可以解释:

  • 原始数据集包含 100 个类别 0 的实例和 900 个类别 1 的实例,显示了不平衡。
  • 应用 E-NN 后,修改后的数据集包含 80 个类别 0 的实例和 719 个类别 1 的实例。

保留和删除方法的组合

在本节中,我们将探讨 One-Sided Selection 和 Neighborhood Cleaning Rule 等方法,这些方法结合了我们已经研究过的保留和删除多数类样本的方法。

01. 用于欠采样的 One-Sided Selection

One-sided selection 是一种欠采样方法,旨在消除无助于区分决策边界的样本。One-sided selection 结合了 Condensed Nearest Neighbors 和 Tomek Links 的概念。

OSS 的工作原理如下:

  • 首先,它使用 Tomek links 获取靠近少数类的边界样本。这些样本是模糊的点。
  • 接下来,它使用 Condensed Nearest Neighbors 来收集所需的多数类样本。
  • 总而言之,目标是生成更好或更干净的多数类样本子集,同时保持数据的结构并避免不必要样本带来的额外负担。

现在让我们实现 One-Sided Selection。

代码

输出

Undersampling Algorithms for Imbalanced Classification

根据上述结果,我们可以解释:

  • 原始数据集不平衡,因为它包含 80 个类别 0 的实例和 720 个类别 1 的实例。
  • 在应用 OSS 后,缩减的数据集包含 80 个类别 0 的实例和 471 个类别 1 的实例。
  • 尽管仍然有些不平衡,但 OSS 能够减小数据集的大小并改善类别平衡。

02. 用于欠采样的 Neighborhood Cleaning Rule

Neighborhood Cleaning Rule 是一种复杂的欠采样方法,它将智能实例删除与清理策略相结合。与随机欠采样不同,NCR 通过检查样本附近结构的拓扑结构来消除数据集中可能引起噪声和/或混淆的多数类样本。

现在让我们实现 Neighborhood Cleaning Rule。

代码

输出

Undersampling Algorithms for Imbalanced Classification

根据上述结果,我们可以解释:

  • 原始数据集不平衡,因为它包含 80 个类别 0 的实例和 720 个类别 1 的实例。
  • 在应用 Tomek links 后,缩减的数据集包含 80 个类别 0 的实例和 720 个类别 1 的实例。
  • 它仍然有些不平衡。

下一主题机器学习预测