python - 处理高度不平衡数据的正确方法——二元分类

标签 python pandas machine-learning neural-network data-science

我有一个非常大的数据集,包含 6000 万行和 11 个特征。 它是高度不平衡的数据集,20:1(信号:背景)。 正如我所看到的,有两种方法可以解决这个问题:

第一:欠采样/过采样。
我这样有两个问题。 如果我在训练测试分割之前进行欠采样,我会丢失大量数据。 但更重要的是,如果我在平衡数据集上训练模型,我会丢失有关信号数据频率的信息(比如说良性肿瘤相对于恶性肿瘤的频率),并且由于模型经过训练和评估,模型将表现良好。但如果将来的某个时候我要在新数据上尝试我的模型,它的性能会很差,因为实际数据不平衡。

如果我在训练测试分割后进行欠采样,我的模型将欠拟合,因为它将在平衡数据上进行训练,但在不平衡数据上进行验证/测试。

二级体重处罚 我可以对 XBG、随机森林、逻辑回归使用类别权重惩罚吗?

所以,大家,我正在寻找解决此类问题的解释和想法。
预先感谢您,我将非常感谢您的帮助。

最佳答案

我推荐 Breiman(《随机森林》的作者)撰写的这篇快速论文: Using Random Forest to Learn Imbalanced Data

建议的方法是加权 RF,其中您使用加权基尼(或熵,在我看来加权时更好)计算分割,以及平衡随机森林,您尝试在引导过程中平衡类。
这两种方法也可以用于提升树!

关于python - 处理高度不平衡数据的正确方法——二元分类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59409967/

相关文章:

python - Pandas 数据框通过比较所有其他行创建新列

regex - Python读取带有开始和停止条件的文件

python - 将 Gridsearch 中的最佳参数保存在 pandas 数据框中

Tensorflow:如何处理多个输入

machine-learning - NLP 中的字符 n 元语法与单词特征

python - 在 Windows 上使用现有 Python 发行版安装 QuTIP 2.2.0

python - 计算 Pandas DataFrame 中每个组的状态变化

python - 定义一个字典,其名称已作为字符串存储在脚本中

python - PyDAQmx 或类似软件适用于 Mac 吗?

python - 使用 sed 编辑 PDF 属性