具有极不平衡数据集的 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中多类分类的不平衡数据集的最佳方法