我在使用 scikit-learn 实现自定义损失函数时遇到以下问题:
我想在 XGBClassifier 中实现 Focal Loss 作为我的目标函数。但是,我不知道如何将附加参数作为参数(目标参数)传递:
def focal_loss(y_pred, y_true, alpha=0.25, gamma=1):
a,g = alpha, gamma
def fl(x,t):
p = 1/(1+np.exp(-x))
return -( a*t + (1-a)*(1-t) ) * (( 1 - ( t*p + (1-t)*(1-p)) )**g) * ( t*np.log(p)+(1-t)*np.log(1-p) )
partial_fl = lambda x: fl(x, y_true)
grad = derivative(partial_fl, y_pred, n=1, dx=1e-6)
hess = derivative(partial_fl, y_pred, n=2, dx=1e-6)
return grad, hess
xgb = xgb.XGBClassifier(objective=focal_loss)
以下情况我该怎么办?是否有现成的 Focal Loss 版本可供使用?提前致谢。