#python-3.x #xgboost
Вопрос:
Я пытаюсь создать свой '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
Комментарии:
1. это выглядит хорошо, хотя вы пытались изменить знак выпускника? Не то чтобы это следовало менять, но, возможно, стоит попробовать. кроме того, насколько сильно отличаются результаты? и ты починил семя?
2. Семя @Rafa исправлено. Измените знак градации, чтобы результаты были правильными! Спасибо тебе
Ответ №1:
def my_squarederror(y_pred, y_true):
grad = 2*(y_pred - y_true)
hess = 0*y_true 2
return -grad, hess