gpt4 book ai didi

r - Smote 无法进行过采样

转载 作者:行者123 更新时间:2023-12-02 21:26:10 25 4
gpt4 key购买 nike

我刚刚使用 DMwR 包中包含的 Smote 在数据集中完成了过采样。

我的数据集由两个类组成。原始分布是 12 vs 62。因此,我编写了此过采样代码:

newData <- SMOTE(Score ~ ., data, k=3, perc.over = 400,perc.under=150)

现在,分布是 60 vs 72。

但是,当我显示“newData”数据集时,我发现 SMOTE 是如何进行过采样的,并且有一些样本是重复的。

例如,样本编号 24 显示为 24.1、24.2 和 24.3。

这是正确的吗?这会直接影响分类,因为分类器将使用测试中出现的数据来学习模型,因此这在分类中是不合法的。

编辑:我认为我没有正确解释我的问题:

如您所知,SMOTE 是一种过采样技术。它根据原始样本创建新样本,并修改其特征值。但是,当我显示 SMOTE 生成的新数据时,我得到以下信息:

(这些值是特征的值)Sample50: 1.8787547 0.19847987 -0.0105946940 4.420207 4.660536 1.0936388 0.5312777 0.07171645 0.008043167

样本 50.1:1.8787547 0.19847987 -0.0105946940 4.420207 4.660536 1.0936388 0.5312777 0.07171645

样本 50 属于原始数据集。样本 50.1 是 SMOTE 生成的“人工”样本。然而(这是我的问题),SMOTE 创建了一个重复的样本,而不是创建一个修改“一点”特征值的人工样本。

希望你能理解我。

谢谢!

最佳答案

Smote 是一种生成给定类(少数类)的合成示例以处理不平衡分布的算法。然后将这种生成新数据的策略与多数类的随机欠采样相结合。当您在 DMwR 包中使用 SMOTE 时,您需要指定过采样百分比和欠采样百分比。这些值必须仔细设置,因为获得的数据分布可能会保持不平衡。

在您的情况下,并给定参数集,即欠采样和过采样的百分比,将引入少数类示例的副本。

您的初始类分布是 12 到 62,应用 smote 后,您最终得到 60 到 72。这意味着少数类通过 smote 进行了过采样,并生成了该类的新合成示例。

但是,您的多数类原本有 62 个示例,现在包含 72 个!欠采样百分比应用于此类,但实际上增加了示例数量。由于从多数类中选择的示例数量是根据少数类的示例确定的,因此从该类中采样的示例数量比现有的要多。

因此,您有 62 个示例,算法尝试随机选择 72 个!这意味着引入了大多数类的示例的一些副本。

因此,解释一下您选择的过采样和欠采样:

来自少数类的 12 个示例,过采样率为 400%,得出:12*400/100=48。因此,少数类中添加了 48 个新的综合示例(少数类的最终示例数为 12+48=60)。

从多数类中选择的示例数量为:48*150/100=72。但大多数类只有 62 个,因此必须引入副本。

关于r - Smote 无法进行过采样,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24101802/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com