如何控制分类中的正数?

数据挖掘 机器学习 分类 阶级失衡 公制 助推
2022-02-15 17:27:18

我现在有一个基本但相当复杂的问题要解决。假设我的训练集中有 20,000 个样本的训练集,其中 3% 到 4% 被标记为“真”,其余的被标记为“假”。我想训练一个分类器(通常是 XGBClassifier 或 LGBMClassifier 是我使用过的那些)。

我目前正在做的是使用 GridSearchCV 找到最佳参数。但我的目标是尽量减少我在测试集上尝试时标记为“真”的样本数量。我是否应该使用典型的 F1 指标训练算法,然后才找到适合我需要的最佳阈值?或者我应该创建一个自定义指标,隐含地强制算法不要将太多样本标记为正数?

希望这很清楚!

1个回答

正如desertnaut所说,我认为您在谈论阶级不平衡。

如果你“在野外”遇到阶级不平衡,有几种方法可以解决这个问题。您创建自定义指标的方法属于基于成本函数的方法。您可以使用成本函数来处理比误报更糟糕的误报(当我们谈论类不平衡时通常是这种情况)。

另一种方法是使用基于抽样的方法。这些相当简单,我个人倾向于更频繁地使用它们,因为使用它们进行实验更容易。可以根据需要组合的两个极端:

  1. 提升一个类/过采样:查看 A 类和 B 类的分布。提升你想要产生更多效果的类,让更多数据样本改变你的算法。

  2. 欠采样:查看 A 类和 B 类的分布。删除您希望减少算法影响的类的数据集。

实际上,我通常将两者结合起来,以使我的数据具有更大的差异。例如,将 A 类提高 110% 并将 B 类降低到 80% 以实现平衡的数据集(尽管在我看来,您希望反过来不平衡。不过要注意偏见)