Smote Python2024 年 8 月 29 日 | 阅读 6 分钟 什么是SMOTE?合成少数过采样(SMOTE)程序可增加用于机器学习的数据集中的少数类样本数量。这是一种比简单复制现有样本更好的增加样本数量的方法。 当我们在处理不平衡数据集时,我们希望使用SMOTE。 数据集可能不平衡的原因有很多,例如
当您发现要分析的类别在数据集中表示不足时,最好使用SMOTE。 例如,假设您将其用于包含印度人口数据的数据集。但是,由于某种原因,与女性类别相比,您拥有的男性类别样本相对较少。在这种情况下,您知道印度男性比女性多。因此,在这种情况下,SMOTE将返回一个数据集,其中包含“男性”类别的原始样本以及根据您指定的比例,数量不定的“男性”类别的合成少数样本。 SMOTE如何工作?这是一种统计程序,用于公平地增加数据集中观察的数量。它通过从您希望提供的现有少数类样本生成新样本来工作。请注意,此实现不会更改多数类的数量。 新生成的实例不仅仅是现有少数类的副本。该算法会为目标类的每个实例及其最近邻获取所有特征的实例。此方法将增加每个类别的可用特征数量,并使模型看起来更全面。 然后,在最后,SMOTE将数据集作为输入。让我们考虑上面的相同模型,如果您有一个不平衡的数据集,其中只有1%的案例具有“男性”的目标值,而大多数案例具有“女性”的值。但是,它会增加数据中少数类别的比例。要将少数类别的比例提高到先前比例的两倍,您需要为SMOTE比例输入200。 SMOTE:不平衡数据的一个强大解决方案SMOTE是一种用于处理不平衡数据的顺序问题的改进方法。该方法在2002年发表在《人工智能研究杂志》上的一篇论文中提出。SMOTE代表合成少数过采样技术。 何时使用SMOTE?首先,我们应该回顾一下什么是“不平衡数据”以及它何时发生。 不平衡数据是指在分类变量的各个潜在值中,观察到的频率不同。基本上,某些类别的观察次数很多,而另一类别的观察次数很少。 当您拥有不平衡数据时,SMOTE是一个解决方案。 例如,想象一个关于山地运动新产品销售的数据集。为了简单起见,假设该网站提供两种类型的客户:滑雪者和登山者。 我们还记录了每个访问者是否购买了新的山地产品。假设我们要创建一个分类模型,该模型允许我们使用客户数据来预测访问者是否会购买新产品。 大多数电子商务客户不会购买:通常,许多人来查看产品,只有一小部分访问者会购买。我们的数据集将是不平衡的,因为我们有大量的非购买者和极少数购买者。 SMOTE算法解释SMOTE是一种通过基于感兴趣的原始数据创建合成数据来执行数据增强的算法。SMOTE可以被视为过采样的高级版本,或者是一种特殊的数据增强算法。SMOTE的优点在于您不是生成副本,而是创建与感兴趣的原始数据略有不同的合成数据点。 SMOTE是过采样的一个更好的选择 SMOTE算法的工作原理如下:
此操作类似于将观察值稍微移向其邻居。这样,您可以确保您的合成数据点不是当前观察值的精确副本,同时也可以确保它与您的少数类中已知观察值的差异不过大。 SMOTE对精度和召回率的影响在我们上面介绍的山地运动模型中,我们已经考虑了模型的总体准确性。准确性衡量了您正确预测的比例。在分类问题中,我们通常需要比这更进一步,并考虑每个类别的预测性能。 在二元分类中,混淆矩阵是一项机器学习指标,显示了
在此上下文中,我们还讨论了精确率和召回率。精确率表示模型在仅识别阳性案例方面的表现。召回率表示模型在识别数据中的所有阳性案例方面的表现。 真阳性和真阴性都是正确的预测:拥有大量这些是非常好的。假阳性和假阴性都是错误的预测:拥有少量这些也是最佳情况。然而,在大多数情况下,我们宁愿有假阳性而不是假阴性。 当使用机器学习来自动化业务流程时,假阴性(被预测为阴性的阳性)将不会出现。它们可能永远不会被发现,而假阳性(被错误地预测为阳性的阴性)通常会在许多公司设置的后续手动检查中轻松过滤掉。 在许多业务案例中,假阳性比假阴性造成的危害要小。 一个明显的例子是检测COVID-19。想象一下,生病的人接受了检测,他们得到了假阴性:他们会外出并感染他人。另一方面,如果他们是假阳性,他们将被迫待在家里:虽然不理想,但他们不会构成公共健康威胁。 当存在严重的失衡时,我们在一个类别中的案例很少,导致模型几乎从不预测该类别。使用SMOTE,我们可以调整模型以减少假阴性,但会增加假阳性。使用SMOTE的结果通常是召回率的增加,但精确率的降低。这意味着我们将增加少数类别的预测:有些是正确的(增加召回率),但有些是错误的(降低精确率)。 SMOTE以降低精确率为代价提高召回率 例如,一个总是预测购买者的模型将在召回率方面表现良好,因为它识别了所有阳性案例。但它的精确率不会很高。总体模型准确性也可能下降,但这不成问题:在数据不平衡的情况下,不应使用准确性作为度量。 下一个主题Python中的广度优先搜索 |
在本教程中,我们将介绍一些 PycURL 编码示例,展示连接点的各种功能。如演示部分所述,PyCURL 支持多种协议,并具有许多高级功能。然而,在我们的示例中,我们将使用 HTTP 函数...
阅读 10 分钟
在本教程中,我们正在讨论如何使用 Python 进行 Web 开发。Python 是一门可爱的语言。它易于学习且有趣,其语法(规则)简单明了。Python 是初学者的首选;但仍然强大且...
阅读 6 分钟
您是否曾经被迫延迟 Python 程序的执行?您通常希望您的代码尽快运行。但是,有时将程序暂停一段时间最符合您的利益。例如,为了模拟...
7 分钟阅读
在接下来的教程中,我们将了解 Ansible 及其优点以及如何使用它。Ansible 简介 Ansible 是一个开源平台或自动化工具,用于执行 IT 任务,如部署应用程序、管理配置、编排服务内部通信和资源调配。自动化是关键...
阅读 4 分钟
Kivy 是 Python 中一个独立于平台的图形用户界面工具。因为它兼容 Android、iOS、Linux 和 Windows。它通常用于 Android 应用程序的开发,但这并不妨碍它在桌面程序中的应用。屏幕管理器小部件:一个名为...的小部件
阅读 8 分钟
在本教程中,我们将使用 Python 的 turtle 库绘制印度国旗。Turtle 库是一个 Python 库,用于在 Python 中创建独特的图形、图片和游戏。Python turtle 库由 Wally Feurzeig、Seymour Parpet 和 Cynthia Solomon 于 1967 年开发。它...
阅读 6 分钟
在本教程中,我们将使用 Python 编程语言编写程序,通过酒店价格比较 API 查找酒店价格。我们将使用 Makcorpse 酒店 API。此 API 用于获取 JSON 数据,并有助于比较酒店价格、评分,…
5 分钟阅读
联合图是一种理解两个变量之间关系以及每个变量个体分布的方式。联合图主要由三个独立的图组成,其中,中间的图用于查看关系...
阅读 6 分钟
Sklearn 中的 Accuracy_Score 在数据科学工作流中,使用适当的度量标准来衡量模型的准确性是至关重要的一步。在本教程中,我们将学习两种计算源样本预测类别准确性的方法:手动计算和使用 Python 的 scikit-learn 库。以下是...
5 分钟阅读
如果我们定义一个复数的 Python 类,以下方法是执行基本复数运算所必需的。add() 方法用于将给定的两个复数相加。sub() 方法用于将给定的两个复数相减。mul() 方法用于将给定的两个复数相乘...
阅读 4 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India