问题标签 [imbalanced-data]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
440 浏览

python - 如何使用过采样和欠采样的组合?学习不平衡

我想重新采样一些大数据(类大小:8mio vs 2700)我想通过对第 2 类进行过采样和对第 1 类进行欠采样来获得 50.000 个样本。imblearn 似乎提供了过采样和欠采样的组合,但我不明白它是如何做到的作品。

在数据看起来像之前

之后

正如我所期望或希望的那样

0 投票
1 回答
44 浏览

machine-learning - 对于不平衡的数据集,使用过采样还是欠采样技术更好?

我有一个数据集不平衡的二进制分类问题,我不知道在欠采样和过采样之间使用什么!

0 投票
2 回答
368 浏览

embedding - rasa nlu数据不平衡问题如何处理?

现在我有12个intent要识别,但是每个intent的数据量是不一致的,比如会议设置,提醒这些意图,数据量会上千。但是像问候,谢谢这样的意图,很少数据样本,可能只有几十个。

我该如何处理这个数据不平衡问题?

我的 config.yml 文件内容如下:

0 投票
0 回答
922 浏览

machine-learning - R-caret:如何使用类权重和 downSample 来处理类不平衡问题?

我有一个非常不平衡的数据集。为了解决这个问题,我分别尝试了不同的类不平衡技术:downSample类权重阈值调整。其中,阈值调整效果最差。单独使用 downSample 或单独使用类权重,我没有设法获得足够好的结果:要么有太多的 FalsePositives 要么 FalseNegatives。所以我想将这两种技术结合起来。这是我累的:

所以当我不把sampling论点放在controlTrain

它有效并且没有错误。但是当我将 trainControl 的采样参数添加为

我得到这个可以理解的错误:

有没有办法做到这一点caret?提前谢谢了。

0 投票
0 回答
1037 浏览

r - 我在数据框的下标分配中不允许缺失值有错误

我是 R 新手,我正在为我的个人项目/练习构建 R 代码。我使用的数据是关于香港人种族认同的调查。我使用了来自http://data.hkupop.hku.hk/v3/hkupop/ethnic_identity/ch.html的2019 年数据。

在删除 NA 值并将列减少到我需要的列之后,我注意到数据高度不平衡,因此我尝试使用欠采样、ROSE 和 SMOTE。(数量从 1015 次大幅减少到 573 次)

我从集合中删除了以下列#

但是,这不是二进制数据,因此我不得不强制 eth_id 中的因素组合成 0 = 1&3(香港人和香港中国人)和 1 = 2&4(中国人和中国香港公民)

我如何结合这些因素

  • 0 = 香港公民 + 香港中国公民
  • 1 = 中国公民 + 中国香港公民

我如何重命名列

我如何处理我的 NA 和不必要的异常值

对于 [,2:7] 列,我将它们的值更改为 0 用于 NA,例如,df_f$HongKonger <- ifelse(is.na(df_f$HongKonger),0,df_f$HongKonger)依此类推。

对于其他人,我删除了这样的 NA:

在我的数据集的这一点上,我剩下 14 列,我将它们重命名(请参阅上文)。我上传了我用于 ROSE 和 SMOTE 的数据的最终结构 :-)

此外,我还删除了异常值的行,例如:

删除无法识别的种族身份(8881 或级别 = 5)

  • 这些代码必须仔细编写,如果您在重命名之前运行它,请使用 eth_id 代替 Q001,反之亦然。

现在,当我运行 ROSE 时,我不断收到此错误:Error in [<-.data.frame( *tmp*, , indY, value = c(1L, 1L, 1L, 1L, 1L, : 在数据帧的下标分配中不允许缺失值。

这是非常具有误导性的,因为我确保完全删除 NA 值(因为与此相关的所有问题都与 NA 问题有关,这不适用于我的问题),我什至将所有因子值都更改为数值。(因为我认为程序不理解?因子值。)

我还收到 SMOTE 的此错误消息:名称错误(dn)<- dnn:尝试将属性设置为 NULL。这个马克

我如何将 ROSE 用于“两者”

我如何使用 SMOTE

我不断得到: 1)对于 ROSE:([<-.data.frame, *tmp*, indY, value = c(1L, 1L, 1L, 1L, 1L, 中的错误):在数据帧的下标分配中不允许缺少值

2) 对于 SMOTE: Error in names(dn) <- dnn : 尝试将属性设置为 NULL

  • 我也很困惑将所有因素更改为数值会使其仍然有效。

谢谢你,谢谢你提前分享你的知识。

0 投票
1 回答
168 浏览

machine-learning - 如何在 Scikit 中自定义 GridSearchCV 的指标 学习调整特定类?

我在 ML 中有一个用例,其中我有 2 个类,0 和 1 用于给定文本。

  • Class-0:可以承受一些错误分类
  • Class-1:非常重要,不能承受任何错误分类

两个类的样本都存在巨大的不平衡,0 类大约 30000 个,1 类只有 1000 个

在进行训练测试拆分时,我根据标签对拆分进行分层,这样,每个标签类保持 70% 训练和 30% 测试的比例。

我想以这样的方式调整参数,Precision或者Recall为 class-1 改进。我尝试使用“f1_macro”、“precision”、“recall”作为单独的指标,并将所有指标组合起来使用 GridSearchCV 进行调整,但由于大多数样本为 Class-0,因此它的帮助较小。

我正在探索减少 0 类数据的更安全的方法,尽管我们可以减少的程度很小,无论如何,即使没有调整或使用任何参数,0 类的 f1 分数总是高于 98%。

所以我关心的只是调优class-1

您能否建议,也许是一个定制的可调用指标,使其仅关注 Class-1 的精度、召回率或 F1 分数?

我正在使用 scikit-learn 最新的稳定版本。

类似的问题在这里,作者正在尝试使用它被建议尝试自定义指标来调整 Class-1 的 F1 分数Neural Networks (MLP)Keras
只是没有提到如何。
可以在这里回答 Scikit-Learn 的人,也可以回答下面的 Keras 链接。 通过 RandomizedSearchCV 在 Keras (MLP) 中调整超参数

0 投票
1 回答
501 浏览

python-3.x - 多类分类问题中的不平衡 - 四个目标级别

我的数据不平衡,如下所示,每当我尝试使用 ADASYN 时,它都会显示错误,我们是否需要为此提供任何参数条目?有时它会运行很长时间,但即使在代码运行 40 分钟后也没有响应。

请建议我们如何继续使用 python 代码来解决问题。从其他人的推荐中,我听说过

  1. 可以一次在两个级别之间进行采样,然后可以在同一级别上进行迭代
  2. 下采样 75% 的那个可能有帮助吗?
  3. 或使用 skmultilearn 的任何解决方案?

代码:

o/p=== > 这运行了很长时间,之后没有结果,请建议

0 投票
2 回答
431 浏览

keras - Keras中的自定义损失函数(焦点损失)输入大小错误

我正在使用中性网络进行多类分类。有 3 个不平衡的类,所以我想使用焦点损失来处理不平衡。所以我使用自定义损失函数来适应 Keras 顺序模型。我尝试了在网上找到的焦点损失函数的多个版本的代码,但它们返回相同的错误消息,基本上说输入大小是浴缸大小,而预期为 1。任何人都可以看看这个问题,让我知道你是否可以修理它?对此,我真的非常感激!!!

​</p>

​​​ # fit the model (train for 5 epochs) history = model.fit(x=x_train, y=y_train, batch_size=64, epochs=5, class_weight = class_weight)

0 投票
1 回答
919 浏览

r - R中ROSE的过采样和欠采样问题

我有一个数据集可以在胜诉案件 (14399) 和败诉案件 (8677) 之间进行分类。该数据集有 912 个预测变量。我试图对丢失的案件进行过度抽样,以达到与获胜案件几乎相同的数量(因此每个获胜案件和失败案件都有 14399 个案件)。

TARGET 是丢失 (0) 和赢 (1) 案例的列:

现在我正在尝试使用 ROSE ovun.sample 来平衡它们

我收到此错误:

任何人都可以帮忙吗?谢谢 :-)

0 投票
1 回答
179 浏览

keras - 如何处理来自放射成像图像的分类问题的 CheXpert 数据的不平衡数据集

我正在使用 CNN 和 DNN 更具体地解决图像分类问题。但是手头的数据高度不平衡,因此给出了高度倾斜的结果。它预测一切为真或一切为假。

我已经尝试过 SMOTE 方法,但有人对如何处理这个问题有其他建议吗?