为什么我的训练集在 class 分布的数量方面也应该是有偏差的只是因为我的测试集是有偏差的

Why should my training set also be skewed in terms of number of class distribution just because my test set is skewed

我的问题是,当我的测试集也有偏差时,为什么我的训练集也有偏差(阳性 class 的实例数量比阴性 class 少得多)。我读到重要的是在训练和测试集中保持 classes 之间的分布相同以获得最真实的性能。例如,如果我的测试集有 90%-10% 的 class 实例分布,我的训练集是否也应该具有相同的比例?

我发现很难理解为什么保持训练集中 class 实例在测试集中的比例很重要。

我觉得很难理解的原因是我们不希望 classifier 只学习 classes 中的模式吗?那么,仅仅因为测试集是偏斜的而保持训练集的偏斜是否重要?

任何想法都会有所帮助

IIUC,您问的是使用 Stratified Sampling (e.g., as used in Scikit's StratifiedKFold.

的理由

将数据划分为训练集和测试集后,您需要考虑 三个 个数据集:

  1. "real world" 组,您的 classifier 将真正 运行
  2. 训练集,您将在其中学习模式
  3. 测试集,您将使用它来评估 classifier
  4. 的性能

(所以 2. + 3. 的用途实际上只是为了估计事情 运行 对 1 的影响,包括可能的调整参数。)

假设您的数据中有一些 class 表现得非常不统一 - 假设它出现的次数只有 class 均匀生成时出现的次数的 5%。此外,您认为这不是 GIGO 案例 - 在现实世界中,这种 class 的概率约为 5%。

当你分成 2. + 3. 时,你 运行 事物相对于 1. 倾斜的可能性:

  • 很有可能 class 不会出现 5% 的次数(在训练或测试集中),而是或多或少。

  • 相对于1.

  • ,class的一些特征实例很有可能会在训练或测试集中出现偏斜

在这些情况下,当您根据 2. + 3. 组合做出决定时,它很可能不会很好地表明对 1. 的影响,而这正是您真正想要的。

顺便说一句,我不认为重点在于倾斜训练以适应测试,而是使训练和测试 each 适合整个采样数据。