Как написать собственную метрику оценки в Python для xgboost?
Я хотел бы добавить показатель оценки Kappa для использования в xgboost в Python. У меня проблемы с пониманием того, как подключить функцию Python к xgboost.
Согласно документации xgboost, "пользователь может добавить несколько метрик оценки для пользователя python, не забывайте передавать метрики в виде списка пар параметров вместо карты, чтобы последний 'eval_metric' не перекрывал предыдущий".
Это было поднято на github-странице xgboost для R, но не для Python.
Например, если функция каппа:
def kappa(preds, y):
# perform kappa calculation
return score
Как мне реализовать его с помощью xgboost? задав 'kappa'
как строка в eval_metric
параметр приводит к XGBoostError: unknown evaluation metric type: kappa
,
Аналогично, указание объекта метода каппа приводит к XGBoostError: unknown evaluation metric type: <function kappa at 0x7fbef4b03488>
,
Как можно использовать собственную метрику оценки в xgboost в python?
1 ответ
Измените свой метод на:
def kappa(preds, y):
# perform kappa calculation
return 'kappa', score
И использовать его с feval
аргумент:
bst = xgb.train(params, dtrain, num_rounds, watchlist, feval=kappa, maximize=False)
При написании пользовательских метрик оценки помните о настройке maximize
аргумент. Установка его в true означает, что алгоритм становится лучше с большей оценкой метрики оценки.