如何为回归创建条件不对称目标函数?

2024-06-17 12:43:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用一个条件不对称损失函数和一个回归模型,我遇到了一些问题。我想惩罚错误的方式结果,但方向会根据变量的符号翻转

import numpy as np 

def CustomLoss(predict,true):
    ix = np.logical_and((predict*true)>0,np.abs(true)>=np.abs(predict))
    n = ((predict - true)**2)*2
    y = (predict-true)**2
    out = np.where(ix,y,n)
    return out

# CustomLoss(1,3) = 4
# CustomLoss(1,-1) = 8 ## Bigger loss for wrong way result
# CustomLoss(-2,-4) = 4
# CustomLoss(-2, 0) =  8 ## Bigger loss for wrong way result

我尝试使用scipy optimize,它收敛于一些数据,但不收敛于其他数据。函数仍然是凸的,所以我认为这应该总是收敛的

我通常使用CVXPY,但不知道如何实现成本函数的条件部分


Tags: 函数truefornpabsresultout条件