gpt4 book ai didi

python - 加权铰链损失函数

转载 作者:行者123 更新时间:2023-11-30 09:43:31 28 4
gpt4 key购买 nike

我将我的普通铰链损失定义为:

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

我正在训练 SVM 来预测事件。如果是该类,则我的 y 值为 1;如果不是该类,则我的 y 值为 -1。我的类(class)不平衡,我的 -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。如果 y_true = 1,则损失为 hingeloss*10

这是正确的还是有更好的方法?

最佳答案

怎么样:

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,它是求解所需位移 s 的线性方程的结果:

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

关于python - 加权铰链损失函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55754976/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com