如何处理自然不平衡的数据集

How to handle naturally imbalanced dataset

我正在研究二进制 class化模型。这两个-class的人口自然保持着15-85%的比例。在实施随机森林或 Xgboost 算法后,15% class 的精度和召回率非常差,但 85% class 的精度和召回率则不然。我使用过采样和欠采样方法。但它只是增加了召回值。处理这种情况的最佳方法是什么?

Undersampling 不应该是首选,因为它会导致大量数据丢失。到头来,我们花那么多心思收集数据,扔掉基本就没有意义了。

Oversampling 通常效果更好,但问题是合成样本可能有噪声并且可能无法完美反映现实世界的情况。所以,它也造成了一些不足。

通常,最好在你的损失函数中引入class个权重。然后,权重应该与您针对该特定 class 拥有的样本数量成反比。因此,我建议您使用具有 class 权重的自定义损失函数。它集成在大多数框架中