【发布时间】:2016-12-04 12:08:12
【问题描述】:
我正在处理具有 2 个标签的分类问题:0 和 1。我的训练数据集是一个非常不平衡的数据集(考虑到我的问题,测试集也是如此)。
不平衡数据集的比例为 1000:4,标签“0”出现的次数是标签“1”的 250 倍。但是,我有很多训练样本:大约 2300 万。所以我应该为标签“1”获得大约 100 000 个样本。
考虑到我有大量的训练样本,我没有考虑 SVM。我还阅读了关于随机森林的 SMOTE。但是,我想知道 NN 是否可以有效地处理这种带有大型数据集的不平衡数据集?
另外,由于我使用 Tensorflow 来设计模型,我应该/可以调整哪些特征来处理这种不平衡的情况?
感谢您的帮助! 保罗
更新:
考虑到答案的数量,并且它们非常相似,我将在这里全部回答,作为一个共同的答案。
1) 我在这个周末尝试了第一个选项,增加了正面标签的成本。实际上,不平衡的比例较少(如 1/10,在另一个数据集上),这似乎有助于获得更好的结果,或者至少“偏向”精度/召回分数比例。 但是,就我的情况而言, 它似乎对字母数字非常敏感。 alpha = 250,这是不平衡数据集的比例,我有 0.006 的精度和 0.83 的召回分数,但是模型预测的 1 太多了,它应该是 - 大约 0.50 标签'1' .. . 当 alpha = 100 时,模型仅预测“0”。我想我必须为这个 alpha 参数做一些“调整”:/ 我也将看看 TF 中的这个函数,因为我现在是手动完成的:tf.nn.weighted_cross_entropy_with_logitsthat
2) 我会尝试去平衡数据集,但我担心这样做会丢失很多信息,因为我有数百万个样本,但只有大约 10 万个正样本。
3) 使用较小的批量大小似乎确实是个好主意。我会试试看 !
【问题讨论】:
-
您是否期望网络在拟合网络后应用时会更频繁地遇到“0”标签输入数据?如果是这样,您可能对不平衡感兴趣,因为这会促使网络最好地学习这些输入模式
-
感谢您的评论!标签“0”和“1”的比例在训练集中和我必须预测的集中是相同的。但是,我不太明白您信息的第二部分:“如果是这样,您可能对不平衡感兴趣,因为这会促使网络最好地学习这些输入模式”?
标签: neural-network tensorflow random-forest