Пользовательская целевая функция Python XGBoost

Согласно документации, http://xgboost.readthedocs.io/en/latest/python/python_api.html если мы хотим определить пользовательскую целевую функцию, она должна иметь подпись

objective(y_true, y_pred) -> grad, hess

где

hess: array_like of shape [n_samples]
The value of the second derivative for each sample point

Но если у нас есть функция потерь, зависящая от N переменных, у нас должна быть матрица NxN из вторых производных, но форма нашего гесса только Nx1. Должны ли мы исключить "кросс-переменные" производные? Или что еще?

1 ответ

Я думаю, что производная, которую вы должны принять, относится к счету, который возвращается Booster, Таким образом, это приводит к одному значению на каждый обучающий пример (= образец), ведущему к массиву [n_samples]. Оценка - это то, что входит в вашу целевую функцию, т.е. х в (x-m)**2 в MSE или 1/(1+exp(-x)) в логистической функции.

Другие вопросы по тегам