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

时间:2015-12-28 21:25:29

标签: machine-learning classification tensorflow

我使用TensorFlow LinearClassifier和DNN来分类两类数据集。

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

处理这种情况的好方法是什么?

4 个答案:

答案 0 :(得分:4)

您可以尝试更改成本函数,以便误报输出会比假阴性更严重。

答案 1 :(得分:4)

以下是最简单的解决方案,您可以做的就是:

  1. 您可以构建均衡的样本,然后在测试时重新校准模型。
  2. 您可以重新加权示例以支持否定
  3. 您可以使用铰链损耗而不是对不平衡数据可能更稳健的对数丢失,因为当示例超出边距时,它将不会出现梯度
  4. 您可以探索其他一些以不对称的方式处理不同类型错误的损失函数

答案 2 :(得分:2)

您可以在自己的负面示例上学习自动编码器(如果它们的数量很大),然后使用推理技术(例如variational BayesMarkov Chain Monte Carlo)生成示例。这样,您可以增加负示例的样本数量,并向更平衡的数据集转移。

答案 3 :(得分:0)

您可以查看本文中的不同采样技术,以减轻类不平衡问题http://www.machinelearning.org/proceedings/icml2007/papers/62.pdf。简单的随机少数过采样通常效果更好。