Smote Python

2024 年 8 月 29 日 | 阅读 6 分钟

什么是SMOTE?

合成少数过采样(SMOTE)程序可增加用于机器学习的数据集中的少数类样本数量。这是一种比简单复制现有样本更好的增加样本数量的方法。

当我们在处理不平衡数据集时,我们希望使用SMOTE。

数据集可能不平衡的原因有很多,例如

  1. 您关注的类别在总体中可能非常罕见。
  2. 数据集可能只是难以收集。

当您发现要分析的类别在数据集中表示不足时,最好使用SMOTE。

例如,假设您将其用于包含印度人口数据的数据集。但是,由于某种原因,与女性类别相比,您拥有的男性类别样本相对较少。在这种情况下,您知道印度男性比女性多。因此,在这种情况下,SMOTE将返回一个数据集,其中包含“男性”类别的原始样本以及根据您指定的比例,数量不定的“男性”类别的合成少数样本。

SMOTE如何工作?

这是一种统计程序,用于公平地增加数据集中观察的数量。它通过从您希望提供的现有少数类样本生成新样本来工作。请注意,此实现不会更改多数类的数量。

新生成的实例不仅仅是现有少数类的副本。该算法会为目标类的每个实例及其最近邻获取所有特征的实例。此方法将增加每个类别的可用特征数量,并使模型看起来更全面。

然后,在最后,SMOTE将数据集作为输入。让我们考虑上面的相同模型,如果您有一个不平衡的数据集,其中只有1%的案例具有“男性”的目标值,而大多数案例具有“女性”的值。但是,它会增加数据中少数类别的比例。要将少数类别的比例提高到先前比例的两倍,您需要为SMOTE比例输入200。

SMOTE:不平衡数据的一个强大解决方案

SMOTE是一种用于处理不平衡数据的顺序问题的改进方法。该方法在2002年发表在《人工智能研究杂志》上的一篇论文中提出。SMOTE代表合成少数过采样技术。

何时使用SMOTE?

首先,我们应该回顾一下什么是“不平衡数据”以及它何时发生。

不平衡数据是指在分类变量的各个潜在值中,观察到的频率不同。基本上,某些类别的观察次数很多,而另一类别的观察次数很少。

当您拥有不平衡数据时,SMOTE是一个解决方案。

例如,想象一个关于山地运动新产品销售的数据集。为了简单起见,假设该网站提供两种类型的客户:滑雪者和登山者。

我们还记录了每个访问者是否购买了新的山地产品。假设我们要创建一个分类模型,该模型允许我们使用客户数据来预测访问者是否会购买新产品。

大多数电子商务客户不会购买:通常,许多人来查看产品,只有一小部分访问者会购买。我们的数据集将是不平衡的,因为我们有大量的非购买者和极少数购买者。

SMOTE算法解释

SMOTE是一种通过基于感兴趣的原始数据创建合成数据来执行数据增强的算法。SMOTE可以被视为过采样的高级版本,或者是一种特殊的数据增强算法。SMOTE的优点在于您不是生成副本,而是创建与感兴趣的原始数据略有不同的合成数据点。

SMOTE是过采样的一个更好的选择

SMOTE算法的工作原理如下:

  • 您从少数类中抽取一个随机样本。
  • 对于该样本中的观察值,您将识别出k个最近邻。
  • 然后,您将选取其中一个邻居,并识别当前观察值与所选邻居之间的向量。
  • 您将向量乘以0到1之间的随机数。
  • 要获得合成数据,您将其添加到当前观察值中。

此操作类似于将观察值稍微移向其邻居。这样,您可以确保您的合成数据点不是当前观察值的精确副本,同时也可以确保它与您的少数类中已知观察值的差异不过大。

SMOTE对精度和召回率的影响

在我们上面介绍的山地运动模型中,我们已经考虑了模型的总体准确性。准确性衡量了您正确预测的比例。在分类问题中,我们通常需要比这更进一步,并考虑每个类别的预测性能。

在二元分类中,混淆矩阵是一项机器学习指标,显示了

  • 真阳性(模型准确预测为真)
  • 假阳性(模型错误地预测为真)
  • 真阴性(模型准确预测为假)
  • 假阴性(模型错误地预测为假)

在此上下文中,我们还讨论了精确率和召回率。精确率表示模型在仅识别阳性案例方面的表现。召回率表示模型在识别数据中的所有阳性案例方面的表现。

真阳性和真阴性都是正确的预测:拥有大量这些是非常好的。假阳性和假阴性都是错误的预测:拥有少量这些也是最佳情况。然而,在大多数情况下,我们宁愿有假阳性而不是假阴性。

当使用机器学习来自动化业务流程时,假阴性(被预测为阴性的阳性)将不会出现。它们可能永远不会被发现,而假阳性(被错误地预测为阳性的阴性)通常会在许多公司设置的后续手动检查中轻松过滤掉。

在许多业务案例中,假阳性比假阴性造成的危害要小。

一个明显的例子是检测COVID-19。想象一下,生病的人接受了检测,他们得到了假阴性:他们会外出并感染他人。另一方面,如果他们是假阳性,他们将被迫待在家里:虽然不理想,但他们不会构成公共健康威胁。

当存在严重的失衡时,我们在一个类别中的案例很少,导致模型几乎从不预测该类别。使用SMOTE,我们可以调整模型以减少假阴性,但会增加假阳性。使用SMOTE的结果通常是召回率的增加,但精确率的降低。这意味着我们将增加少数类别的预测:有些是正确的(增加召回率),但有些是错误的(降低精确率)。

SMOTE以降低精确率为代价提高召回率

例如,一个总是预测购买者的模型将在召回率方面表现良好,因为它识别了所有阳性案例。但它的精确率不会很高。总体模型准确性也可能下降,但这不成问题:在数据不平衡的情况下,不应使用准确性作为度量。