Пользовательская целевая функция Python XGBoost - PullRequest
0 голосов
/ 04 мая 2018

Согласно документации, 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 Ответ

0 голосов
/ 04 мая 2018

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

...