为什么我的训练集也因为我的测试集偏斜而在类分布数方面存在偏差

时间:2015-07-14 08:50:12

标签: machine-learning neural-network classification deep-learning text-classification

我的问题是,当我的测试集也有偏差时,为什么我的训练集也应该倾斜(正面课程的实例数比负面课程少得多)。我读到,在训练和测试集中保持类之间的分布相同非常重要,以获得最真实的性能。例如,如果我的测试集具有90%-10%的类实例分布,那么我的训练集是否也应该具有相同的比例?

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

我觉得难以理解的原因是我们不希望分类器只学习两个类中的模式吗?那么,仅仅因为测试集是倾斜的而保持训练集中的偏度是否重要?

任何想法都会有所帮助

1 个答案:

答案 0 :(得分:2)

IIUC,您询问使用Stratified Sampling的理由(例如,Scikit's StratifiedKFold中使用的。

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

  1. “真实世界”设置,您的分类器将真正运行
  2. 列车集,您将学习模式
  3. 测试集,您将用它来评估分类器的性能
  4. (因此2. + 3的使用实际上仅用于估计事物在1上的运行方式,包括可能的调整参数。)

    假设你的数据有一些代表远非统一的类 - 比如只有5%的时间才会出现统一生成类的情况。此外,您认为这不是GIGO案例 - 在现实世界中,此类的概率约为5%。

    当你分成2 + 3时,你就会有机会相对于1来扭曲。

    • 很可能该课程不会出现5%的次数(在火车或考试中),而是或多或少。

    • 相对于1,该类的一些特征实例很可能在列车或测试集中倾斜。

    在这些情况下,当你根据2. + 3.组合作出决定时,很可能它不能很好地表明对你的影响,这就是你真正追求的。

    顺便提一下,我认为重点不在于使列车倾斜以适应测试,而是在使列车和测试每个适合整个采样数据。