XGboost - выбор по модели

10

Я использую XGboost, чтобы предсказать целевую переменную 2 классов по страховым претензиям. У меня есть модель (обучение с перекрестной проверкой, настройка гиперпараметров и т. Д.), Я запускаю другой набор данных.

Мой вопрос:

Есть ли способ узнать, почему данное утверждение было затронуто одним классом, то есть функциями, которые объясняют выбор, сделанный моделью?

Цель состоит в том, чтобы оправдать выбор, сделанный машиной, стороннему человеку.

Спасибо за Ваш ответ.

Fabrice BOUCHAREL
источник

Ответы:

7

Я предлагаю вам пойти на Shap . Он использует значения Шепли (концепцию, заимствованную из теории игр) для описания поведения модели, и этим он может объяснить единственное предсказание.

Его графический интерфейс использует Force Plots, как тот, который вы видите ниже. введите описание изображения здесь

Красная полоса построена из функций, которые приводят прогноз к положительным значениям, а синяя - из других.

В вашем случае (классификатор) число, выделенное полужирным шрифтом, будет тем, которое находится непосредственно перед сигмоидальной функцией, которая будет ограничивать выходное значение от нуля до единицы (один класс или другой). Так что не пугайтесь, если в некоторых случаях оно будет больше единицы или будет отрицательным.

Размер сегментов показывает, насколько этот элемент влияет на прогноз, а под сегментами вы видите название объекта (например, LSTAT) и его фактическое значение (например, 4.98). Таким образом, в этом случае LSTAT является средней характеристикой, которая приводит прогноз для этого элемента набора данных к значению 24,41 (число, выделенное жирным шрифтом).

Наслаждайтесь!

Винченцо Лаворини
источник
9

Вы можете использовать библиотеку ELI5, чтобы объяснить вклад функций в отдельные прогнозы для моделей XGBoost.

См. Объяснение прогнозов в документах, скопированных ниже:

Чтобы лучше понять, как работает наш классификатор, давайте рассмотрим отдельные прогнозы с помощью eli5.show_prediction():

from eli5 import show_prediction
show_prediction(clf, valid_xs[1], vec=vec, show_feature_values=True)

введите описание изображения здесь

Имран
источник