具有极不平衡数据集的 TensorFlow 分类

Posted

技术标签:

【中文标题】具有极不平衡数据集的 TensorFlow 分类【英文标题】:Tensorflow classification with extremely unbalanced dataset 【发布时间】:2016-04-02 17:51:07 【问题描述】:

我正在使用 TensorFlow LinearClassifier 和 DNN 对两类数据集进行分类。

但是,问题是数据集包含 96% 的正输出和 4% 的负输出,我的程序总是将预测返回为正。当然,在这种情况下我会达到 96% 的准确率,但这一点意义都没有。

处理这种情况有什么好办法?

【问题讨论】:

使用少数过采样。 【参考方案1】:

您可以尝试更改成本函数,以便误报输出比误报受到更严重的惩罚。

【讨论】:

嗨,在 DNN 中,什么类型的激活函数会给我这个功能?谢谢 @mamatv 这不是激活函数。成本函数是您的优化目标。大多数情况下,它要么是交叉熵 (CE),要么是均方误差 (MSE) 当您获得足够的代表时,您可以删除此答案并使其成为评论。我给了你一个赞成票,让你接近 50 个代表,但不希望人们认为我给了你一个赞成票,因为我认为这是更好的答案。【参考方案2】:

这是您可以做的,首先是最简单的解决方案:

    您可以构建对类进行平均采样的小批量,然后在测试时重新校准模型。 您可以重新调整示例的权重以支持否定的示例 您可以使用铰链损失而不是对数损失,这可能对不平衡数据更稳健,因为当示例正确超出边距时,它不会获得梯度 您可以探索其他一些以不对称方式处理不同类型错误的损失函数

【讨论】:

嗨,我想我将从加权课程开始。你知道我该如何从 tensorflow 开始吗?【参考方案3】:

您可以对您拥有的负例(如果它们的数量很大)学习自动编码器,然后使用variational Bayes 或Markov Chain Monte Carlo 等推理技术生成示例。通过这种方式,您可以增加负例的样本数量,并朝着更平衡的数据集迈进。

【讨论】:

【参考方案4】:

您可以查看这篇论文以了解缓解类别不平衡问题的不同采样技术http://www.machinelearning.org/proceedings/icml2007/papers/62.pdf。简单的随机少数过采样通常效果更好。

【讨论】:

以上是关于具有极不平衡数据集的 TensorFlow 分类的主要内容,如果未能解决你的问题,请参考以下文章

处理Auto-Sklearn中多类分类的不平衡数据集的最佳方法

不平衡数据集的 Knn 分类器

如何评估/提高来自具有不平衡数据集的神经网络的预测的准确性?

不平衡数据集的采样率

如何在 Python 中提高不平衡数据集的精度和召回率

不平衡图像数据集 (Tensorflow2)