两个 类 的比率在分类问题中是否重要?

Does the ratio of two classes matter in classification problems?

我正在使用我收集的一些推文构建一个情绪分析程序。我收集的标记数据将通过一个神经网络将它们分为两个 类,正面和负面。

数据仍在标记中。到目前为止,我观察到积极类别的观察数量非常少。

在我的训练集中,正类别的记录可能是训练数据集的 5% 左右(同样的比例也可以反映在人口中)。

这会在最终 "program" 中产生问题吗? 数据集的大小约为 5000 条记录。

即使不对不同的 class 进行拆分,您可能希望在损失函数中引入权重,以便较小的 class 中的错误被认为更重要。

另一种解决方案是,根据您的问题,5000 个样本可能是也可能不是很多数据,因此可以对更多数据集进行采样。您基本上采用了这组 5000 个样本,并从中抽取数据点,这样您就有了一个新的数据集,其中 classes 均匀分布。这意味着新数据集仅为原始数据集的 10%。但它在 class 之间平分。您可以多次重做此采样并最终得到多个数据集,在 bootstrap aggregating.

中很有用

是的,是的,可以。有两件事需要考虑:

  1. 5000 的 5% 是 250。因此,您将尝试仅基于 250 个样本对 class 的数据分布进行建模。对于神经网络来说,这可能是一个数量级到很小的数量级。因此,您可能需要 40 倍以上的数据才能获得具有代表性的数据样本。虽然您可以通过子采样轻松地减少多数 class,而没有破坏结构的大风险 - 没有办法从更少的点中获得 "more structure"(您可以复制点,添加噪声等,但这不添加结构,这只是添加假设)。
  2. Class 不平衡也会导致收敛到朴素的解决方案,例如 "always False" 具有 95% 的准确率。在这里,您可以简单地使用成本函数来使其对不平衡更加稳健(特别是 - @PureW 建议的火车拆分与 "black box" 尝试更改损失函数的方法不同,因此它具有更大的权重minority class。当你可以访问你的 classifier 损失时,就像在 NN 中一样,你不应该因为这个 - 而是改变成本函数并仍然保留所有数据)。