XGboost 自定义 objective。梯度和麻布问题

XGboost custom objective. Gradient & hessian problem

我正在尝试创建我的 'objective' = 原始 'objective': 'reg:squarederror'

我的 'objective' 和原始 'objective': 'reg:squarederror' 上的模型结果非常不同。

为什么?我哪里错了?

def my_squarederror(y_pred, y_true):
    grad = 2*(y_pred - y_true)
    hess = 0*y_true + 2
    return grad, hess

XGB_default_mse = xgboost.XGBRegressor().set_params(**{'objective': 'reg:squarederror'}) # original
XGB_my_mse = xgboost.XGBRegressor().set_params(**{'objective': my_squrederror}) # my
def my_squarederror(y_pred, y_true):
    grad = 2*(y_pred - y_true)
    hess = 0*y_true + 2
    return -grad, hess