最大化keras中的二进制分类问题中的函数

时间:2019-09-27 13:50:04

标签: python keras classification loss-function imbalanced-data

这是我第一次来这里。我不知道我的标题是否明确。

我正尝试将深度学习(FCN)应用到具有高度不平衡(0: 48887, 1:8862)的二进制分类问题。

我想最大化以下功能:(#true_positive*165 - #false_positive*203) / #cases to predict

对于班级失衡,我尝试了class_weight,我认为解决此问题的方法将是更改损失函数,但我不确定。我将非常感谢任何有关如何解决此任务的建议。谢谢!

1 个答案:

答案 0 :(得分:0)

将此作为损失:

def customLoss(true, pred):
    true_positive = true * pred
    false_positive = (1-true) * pred

    #returning negative because Keras will minimize this instead of maximize
    return - (true_positive - false_positive)

样本的平均值(按情况除以进行预测)稍后会自动生成。


针对不平衡的建议:将每个学期除以其预期总数:

def balancedLoss(true, pred):
    negatives = 1-true
    true_positive = (true * pred) + K.epsilon()
    false_positive = (negatives * pred) + K.epsilon()

    total_positive = K.sum(true) + K.epsilon()
    total_negative = K.sum(negatives) + K.epsilon()

    return (false_positive / total_negative) - (true_positive / total_positive)   

此建议需要大批量。