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
我正在尝试创建我的 '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