阶级平衡会引入偏见吗?

机器算法验证 机器学习 交叉验证 不平衡类 高斯过程 k-最近邻
2022-04-13 03:46:07

我有一个不平衡的数据集,没有做任何类平衡,预测率并不比基线好多少。我有两个班级,我无法收集更多数据。

我做了什么:

  • 随机欠采样表现不佳,因为它大大减少了数据集。
  • 使用 SMOTE 进行过采样的性能略好于基线(大约 60-70%)
  • 使用 SMOTE 进行过采样,然后使用 ENN 进行欠采样,可以将某些分类器的准确率提高到 95%(KNN 和高斯过程表现最好)

由于上述原因,我对我的方法持怀疑态度,并且没有引入任何偏见。

我的主要问题如下:

  • 我见过人们在拆分训练和测试数据之前进行类平衡。在过采样的情况下,如果您在拆分之前进行过采样,则会增加准确性的偏差,因为您会将数据点与其过采样对应物(人工生成)进行比较。拆分前的过采样会引入偏差吗?
  • 单独拆分训练集和测试集后过采样是否更科学正确?
  • 我们必须平衡测试集吗?
  • ENN 和 SMOTE 是被广泛引用的论文两者都使用KNN作为过采样和欠采样的主要方法。如果我使用的是 KNN 分类器,我预计会有一些潜在的偏见。我知道他们使用随机化元素并且文献很丰富,但是ENN 和/或 SMOTE 是否会为特定分类器引入偏差?
  • 我们如何知道我们的数据集是否不平衡。例如,5% 的类差异可能以不同方式影响 10,000 个数据点,数百个数据点、2 个类和 20 个类。有没有办法定量地确定我们的数据集是不平衡的?
1个回答

对于主要问题:

阶级平衡会引入偏见吗?

的,在大多数情况下确实如此。由于新数据点是从旧数据点生成的,因此它们不会给数据集带来太多差异。在大多数情况下,它们仅与原始版本略有不同。

拆分前的过采样会引入偏差吗?

是的,这就是为什么您应该在平衡训练集之前执行拆分。您希望您的测试集尽可能公正,以便对模型的性能进行客观评估。如果在拆分数据集之前执行了平衡,则模型可能在训练期间通过生成的数据点看到了有关测试集的信息。

单独拆分训练集和测试集后过采样是否更科学正确?

不应该对测试集进行过度采样。测试集应尽可能客观。通过生成新的测试集数据并在这些数据上评估您的模型,该过程将失去其客观性。

我们必须平衡测试集吗?

,你不应该在任何情况下平衡测试集。

ENN 和/或 SMOTE 能否为特定分类器引入偏差?

我不认为 k-NN 或任何其他特定分类器会比其他分类器更偏向于测试集。不过,我不确定这一点。