问题标签 [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 回答
1230 浏览

machine-learning - 关于如何平衡不平衡的数据

当我阅读 Scikit learn 中的决策树时,我发现:

在训练之前平衡你的数据集,以防止树偏向于占主导地位的类。类平衡可以通过从每个类中采样相同数量的样本来完成,或者最好通过将每个类的样本权重(sample_weight)之和归一化为相同的值来完成。

在链接中:http ://scikit-learn.org/stable/modules/tree.html

我很困惑。

(1)

类平衡可以通过从每个类中采样相等数量的样本来完成

如果我这样做,我应该为每个类中的每个样本添加适当的样本权重(或添加类样本......)。

例如,如果我有两个类:A 和 B 的样本数

A:100 B:10000

我可以为每个输入 10000 个样本并设置权重:

A的输入样本:10000,B的输入样本:10000

A的重量:0.01,B的重量:1.0

(2)

但它还是说:

最好通过将每个类的样本权重之和 (sample_weight) 归一化为相同的值

我完全被它弄糊涂了。这是否意味着我应该输入 100 个 A 样本和 10000 个 B 样本然后设置权重:

A的输入样本:100,B的输入样本:10000

A的重量:1.0,B的重量:1.0

但似乎我没有采取任何措施来平衡不平衡的数据。

哪种方式更好,Scikit学习中第二种方式的含义是什么?谁能帮我澄清一下?

0 投票
2 回答
2296 浏览

machine-learning - 交叉验证中的平衡类

我想用 H2O 建立一个 GBM 模型。我的数据集不平衡,所以我使用 balance_classes 参数。对于网格搜索(参数调整),我想使用 5 折交叉验证。我想知道在这种情况下 H2O 如何处理类平衡。只会重新平衡训练折叠吗?我想确保测试折叠没有重新平衡。

0 投票
2 回答
1754 浏览

keras - 在 Keras 中具有自定义加权 F1 分数的 NaN

我需要以这样一种方式计算加权 F1 分数,以惩罚我最不受欢迎的标签上的更多错误(具有不平衡数据集的典型二进制分类问题)。不幸的是,我没有得到有效的 F1 分数。以下是我的指标函数:

在这里我训练模型并进行评估:

我总是得到 nan 作为 f1score - 在概念上或程序上是否有问题?因为数据是相同的,所以我使用了 scikit-learn 库 (SVM) 的另一个分类器,它成功了。

这些是结果:

最后结果:

0 投票
2 回答
5102 浏览

machine-learning - 为不平衡二元分类对数据进行过采样的过程

我有大约 30% 和 70% 的 0 类(少数类)和 1 类(多数类)。由于我没有很多数据,我计划对少数类进行过采样以平衡这些类,使其成为 50-50 的分割。我想知道是否应该在将数据拆分为训练集和测试集之前或之后进行过采样。在拆分在线示例之前,我通常已经看到它完成了,如下所示:

但是,这是否意味着测试数据可能会从训练集中重复样本(因为我们对训练集进行了过采样)?这意味着测试性能不一定要基于新的、看不见的数据。我很好这样做,但我想知道什么被认为是好的做法。谢谢!

0 投票
3 回答
1556 浏览

python - 如何正确拆分不平衡的数据集以训练和测试集?

我有一个航班延误数据集,并尝试在采样前将该集拆分为训练集和测试集。准时案件约占总数据的 80%,延误案件约占总数据的 20%。

通常在机器学习中,训练集和测试集大小的比例为 8:2。但是数据太不平衡了。所以考虑到极端情况,大部分列车数据是准时情况,大部分测试数据是延迟情况,准确性会很差。

所以我的问题是如何正确拆分不平衡的数据集来训练和测试集?

0 投票
2 回答
3172 浏览

missing-data - 使用具有 NaN 值的 SMOTE

有没有一种方法可以将 SMOTE 与 NaN 一起使用?

这是一个在存在 NaN 值的情况下尝试使用 SMOTE 的虚拟程序

我得到以下输出/错误:

0 投票
1 回答
77 浏览

nlp - 使用不平衡学习过采样后仅检索重采样实例的索引?

对于数据不平衡的二进制文本分类问题,我使用了不平衡学习库的函数RandomOverSampler来平衡类。

现在,我只想从原始数据中检索过采样(复制)的实例。例如,如果“item_1”是原始数据,第 2 到 4 项是“item_1”的副本,我只需要“item_2”、“item_3”、“item_4”的索引进行进一步处理,而省略“项目_1”。

  1. item_1
  2. item_2
  3. item_3
  4. item_4

这是我的代码:

0 投票
1 回答
150 浏览

python - 如何获取更平衡的样本数据 Python

我有一个带有标准化百分比信息的数据框。例如。

wordCount 数字 百分比

2.0 1282 0.267345

1.0 888 0.185213

3.0 1124 0.170791

4.0 1250 0.152877

5.0 554 0.084864

6.0 333 0.058904

7.0 160 0.024290

8.0 111 0.016851

所有百分比的总和为 1。数据框为 6000 个条目。我希望从中抽取 2000 个样本。2000 样品应尽可能平衡。

它应包括最多的少量百分比数据和最少的大量百分比数据。

我不知道该怎么做。

例如。2000 拥有来自 wordCount 8.0 的所有数据,并且拥有来自 2.0 的最小数据。

当我绘制伽马分布时,线应尽可能平坦。

0 投票
2 回答
280 浏览

python - 分类编码后处理不平衡数据

我最初有一个维度 (13961,48) 的数据,经过一次热编码和基本的数据按摩之后,在 (13961,862) 周围观察到维度。数据不平衡,两类“保留”约为 6%,“未保留”约为 94%。

在运行任何算法(如逻辑、knn、决策树、随机森林)时,即使没有执行任何特征选择过程,数据也会产生非常高的准确率,并且除了“朴素偏差分类器”之外,准确率大多超过 94%。

这似乎很奇怪,甚至随机具有任意两个特征-> 提供超过 94% 的准确度,这通常看起来不现实。

也应用 SMOTE,即使对于上述任何算法的基线模型,如逻辑、knn、决策树、随机森林、

去除前 20 个特征后,这给出了超过 94% 的良好结果的准确率(检查了解真实性)

我的数据有 7 个数值变量,例如月份、金额、利率和所有其他变量(大约 855)作为单热编码转换的分类变量。

有什么方法可以处理此类关于基线、特征选择或不平衡优化技术的数据?请通过查看每个级别的维度和不平衡计数来指导。

0 投票
2 回答
95 浏览

python-3.x - 基于一个二元特征的多特征建模,当存在成本时,该二元特征很少为 1(不平衡数据)

我需要对多变量时间序列数据进行建模,以预测很少为 1 的二进制目标(不平衡数据)。这意味着我们要建模基于一个特征是二元(爆发),很少是1?所有功能都是二进制的,很少 1. 建议的解决方案是什么?

该特征对基于以下成本函数的成本函数有影响。如果成本与以下相同,我们想知道是否准备好。

问题定义: 基于爆发的模型,很少出现 1。

准备或不准备避免疾病的爆发,爆发的成本是准备的20倍

每天的成本(第二天):成本=20*爆发*!准备+准备

型号:准备(准备第二天)为哪几天爆发?

问题:

  • 建立一个模型来预测疫情?

  • 报告每年的成本估算

csv 文件已上传,数据用于当天结束 csv 文件包含行,每行是一天,具有不同的特征,其中一些是二进制的,最后一个特征是爆发,很少是 1,是考虑成本的主要特征。