加权铰链损失功能

问题描述 投票:0回答:1

我将我的香草铰链损失定义为:

def hinge(y_true, y_pred):    
    return tf.maximum(0., 1- y_true*y_pred)

我正在训练SVM来预测一个事件。而我的y值是1,如果它是那个类或-1,如果它不是那个级别。我的班级不平衡,我有比-1更多的+1

因此,我想减轻损失+1是更高的罚款。但我不知道我是怎么改变我的铰链损失的。我能想到的最好的是,

X = (# of non event samples) / (# of event samples)
if(y_true*y_pred > 0):
    return tf.maximum(0., 1- y_true*y_pred)*X

这意味着,如果我有100个非事件和10事件,那么X = 100/10 = 10.如果hingeloss*10,那么损失就是y_true = 1

这是正确的还是有更好的方法来做到这一点?

python tensorflow machine-learning loss-function
1个回答
1
投票

怎么样:

def hinge(y_true, y_pred):    
    return tf.multiply((11/9+y_true)*9/2,tf.maximum(0., 1- y_true*y_pred))

这里的逻辑是,如果y_true为1,我们想要乘以10,如果它是-1,则乘以1。您可以检查当y_true为-1时,(11/9+y_true)*9/2的计算结果为1,当它为1时,它的计算结果为10.如果您有兴趣知道如何在探索中推导出11/9,那么它是解决问题的结果。所需班次的线性方程式:

10(s +( - 1))= 1(s + 1)。

© www.soinside.com 2019 - 2024. All rights reserved.