gpt4 book ai didi

python - 进行类别不平衡正则化的正确位置(数据级别或批处理级别)

转载 作者:行者123 更新时间:2023-11-30 09:41:27 27 4
gpt4 key购买 nike

我有两个二进制不平衡数据集,其中标签为 0 或 1,预测输出介于 0 和 1 之间。正例有 10000 个样本,而负例有 90000 个样本。我在训练时使用了 100 个批处理。

在计算 BinaryCrossEntropyLoss(在 pytorch 中)时,可以提供每批元素正则化权重。

我的问题是:要计算一般类(class)体重剂量,更有意义的是在开始时计算 1 次(对于阳性病例为 1/(10000/(100000)),并用该值缩放每个样本的损失

或者:

通过首先找到批处理类别不平衡来计算批处理级别的权重(例如,在批处理中可能有 25 个正例和 75 个负例,因此对于正例为 1/(25/(25+75))

我问这个是因为损失是整个批处理的平均值

最佳答案

如果您希望这样做,您应该计算每批类别的不平衡性。

另一方面,您应该确保每个批处理保留标签统计信息(例如,对于批处理 64 和您的案例,您应该有 6 个正样本,其余的样本消极的)。这样,计算一次类不平衡并将其添加到torch.nn.BCELoss就足够了。以每批处理为基础。

不过,我建议采用其他方法,例如使用 PyTorch 的 Sampler 类进行过采样或欠采样(不要通过复制示例来实现,这会完全不必要地浪费空间)。您可以手动实现它或使用为您完成的第三方库,例如 torchdata (披露:我是作者)和 torchdata.samplers.RandomOverSampler .

关于python - 进行类别不平衡正则化的正确位置(数据级别或批处理级别),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58233328/

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