keras中二元分类的类不平衡

Posted

技术标签:

【中文标题】keras中二元分类的类不平衡【英文标题】:Class imbalance for binary classification in keras 【发布时间】:2019-08-27 17:19:34 【问题描述】:

我正在做二进制分类。我的 y_train 就像 [0,1,1,0,0]。它是一维的。我在最后一层使用 sigmoid 作为激活,最后一层也只有 1 个输出神经元。我可以使用 class_weight.compute_class_weight 从 y_train 中找到类权重,然后将其提供给 keras.fit 函数中的 class_weight 参数。这行得通吗?

【问题讨论】:

【参考方案1】:

是的,它应该可以工作。类权重是表示类之间相对权重的映射,在训练过程中对样本结果进行加权时会考虑。

【讨论】:

如果我将 y 转换为 one_hot 编码,然后在最后一层使用 softmax 以及分类交叉熵来赋予权重,会不会很好。我确定这有效,因为 class_weights 适用于多类分类? 如果你有二进制分类,一个热编码和 softmax 是矫枉过正的。您可以按照最初的说明处理问题。

以上是关于keras中二元分类的类不平衡的主要内容,如果未能解决你的问题,请参考以下文章

Keras 二元分类 - Sigmoid 激活函数

keras 分类和二元交叉熵

LOSS 在非常简单的 KERAS 二元分类器中没有改变

二元分类 predict() 方法:sklearn vs keras

如何在相当平衡的二元分类中解决非常高的误报率?

Keras 用于二元分类预测的 fit_generator() 总是 50%