Как XGBoost использует MAE в качестве целевой функции? ⇐ Python
-
Гость
Как XGBoost использует MAE в качестве целевой функции?
Раньше XGBoost не позволял использовать абсолютную ошибку в качестве целевой функции, поскольку это недифференцируемая функция и ее гессиан равен 0. Однако теперь он позволяет использовать ее (https://xgboost.readthedocs .io/en/stable/parameter.html).
Как это делается и как определить недифференцируемые пользовательские целевые функции?
Я попытался реализовать это просто:
def Absolute_error(predt, dtrain): y_true = dtrain.get_label() ошибки = y_true - predt grad = -1.0 * np.sign(errors) # Градиент (отрицательный знак ошибки) hess = np.zeros_like(y_true) # Гессиан (в данном случае константа 0) возвращение, выпускник, гесс Но это явно не работает
Раньше XGBoost не позволял использовать абсолютную ошибку в качестве целевой функции, поскольку это недифференцируемая функция и ее гессиан равен 0. Однако теперь он позволяет использовать ее (https://xgboost.readthedocs .io/en/stable/parameter.html).
Как это делается и как определить недифференцируемые пользовательские целевые функции?
Я попытался реализовать это просто:
def Absolute_error(predt, dtrain): y_true = dtrain.get_label() ошибки = y_true - predt grad = -1.0 * np.sign(errors) # Градиент (отрицательный знак ошибки) hess = np.zeros_like(y_true) # Гессиан (в данном случае константа 0) возвращение, выпускник, гесс Но это явно не работает
Мобильная версия