在平衡数据集上训练分类器并应用于不平衡数据集?

数据挖掘 scikit-学习 数据 阶级失衡 gbm
2021-10-07 11:47:11

我有一个带有 1000 个条目的标记训练数据集 DS1。目标(真/假)几乎是平衡使用 sklearn,我尝试了几种算法,其中 GradientBoostingClassifier 在 F-Score ~0.83 时效果最好。

现在,我必须将经过训练的分类器应用于具有约 500 万个条目(和相同特征)的未标记数据集 DS2。但是,对于 DS2,目标分布预计会高度不平衡

这是一个问题吗?当应用于 DS2 时,该模型是否会重现来自 DS1 的训练目标分布?

如果是,另一种算法会更健壮吗?

3个回答

这是一个问题吗?

一点都不。

当应用于 DS2 时,该模型是否会重现来自 DS1 的训练目标分布?

不,不一定。如果

  1. 平衡集 DS1 很好地代表了不平衡(目标)集 DS2,并且
  2. 类分离良好(@BenReiniger 指出),这在更高维度上更容易,

然后模型将生成比例接近不平衡 DS2 而不是平衡 DS1 的标签。这是一个视觉示例(由我自己绘制):

在此处输入图像描述

如您所见,在良好的训练集中,预测类似于现实世界的比率,即使模型是在平衡集上训练的,当然,如果分类器在找到决策边界方面做得很好。

对于预测,GradientBoostingClassifier 只会考虑您在训练期间提供给它的那些特征,然后它会自行对每个观察结果进行分类。这意味着通常您不必担心预测数据集的目标分布,只要您在足够广泛的训练数据集上训练模型即可。

GBM 最终会尝试将您的数据分成矩形区域,并为每个区域分配一个恒定的预测概率,即该区域中正训练示例的比例。所以,是的,总的来说,模型已经融入了训练样本的平均响应率。

我认为如果您的数据特别清晰可分离,这​​种影响会减弱:如果每个矩形区域都是纯的,而您的测试数据恰好更倾向于负区域,那么它自然会更接近“正确”的答案.

我不确定其他模型是否会以这种方式更健壮......可能是 SVM,而不是首先自然概率。

如果你的上下文是下采样,逻辑回归对这个问题有一个众所周知的调整相同的调整(对数赔率)似乎也可能在 GBM 环境中有所帮助,尽管我不知道有任何分析可以支持它。