Важность функции XGBoost - показывает только две функции - PullRequest
0 голосов
/ 08 апреля 2020

Я хотел бы видеть все функции в наборе, который я посылаю в модель XGBoost с точки зрения важности. Кажется, я вижу только двоих. Хорошей новостью является то, что это выглядит как 2 набора, которые должны быть определены как важные. Тем не менее, я бы очень хотел увидеть все возможности. Всего в тренировочном наборе 20 функций. Любая помощь будет принята с благодарностью.

По умолчанию для plot_importance показываются все функции (я посмотрел на код для подтверждения).

https://xgboost.readthedocs.io/en/latest/python/python_api.html

max_num_features (int, по умолчанию None) - максимальное количество главных объектов, отображаемых на графике. Если Нет, все функции будут отображаться.

Код для отображения графика:

import shap
import numpy as np
import matplotlib.pylab as pl

xgb.plot_importance(model,max_num_features=None)
pl.title("xgboost.plot_importance(model)")
pl.show()

Когда я смотрю на кортежи или booster.get_scores из модели, я вижу то же самое два:

{'locations': 80, 'avg_loc_dist': 20}

График: enter image description here

Добавлено изображение сюжета: enter image description here

1 Ответ

0 голосов
/ 10 апреля 2020

Мне удалось получить ответ / помощь от людей на форуме XGBoost. Я публикую ответ (и ссылку) здесь для тех, кто может столкнуться с той же проблемой.

Причина, по которой отображаются только две функции, заключается в том, что они являются единственными двумя в разделениях. Они предложили использовать xgb.dump_model () для просмотра этого в дампе, который я смог увидеть. Просто невежество, отсутствие понимания с моей стороны.

Ответ:

Most likely only these two features are being used in the splits. You can verify this by running xgb.dump_model() to get the text representation of the model.

https://discuss.xgboost.ai/t/xgboost-feature-importance-only-shows-two-features/1541/2

...