Как написать собственную метрику оценки в 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 означает, что алгоритм становится лучше с большей оценкой метрики оценки.

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