Выбор дерева решений XGBoost - PullRequest
1 голос
/ 22 марта 2019

У меня есть вопрос относительно того, какое дерево решений мне следует выбрать XGBoost.

Я буду использовать следующий код в качестве примера.

#import packages
import xgboost as xgb
import matplotlib.pyplot as plt

# create DMatrix
df_dmatrix = xgb.DMatrix(data = X, label = y)

# set up parameter dictionary
params = {"objective":"reg:linear", "max_depth":2}

#train the model
xg_reg = xgb.train(params = params, dtrain = df_dmatrix, num_boost_round = 10)

#plot the tree
xgb.plot_tree(xg_reg, num_trees = n) # my question related to here

Я создаю 10 деревьев в модели xg_reg и могу построить любое из них, установив n в своем последнем коде, равном индексу дерева.

Мой вопрос: как мне узнать, какое дерево лучше всего объясняет набор данных? Это всегда последний? Или я должен определить, какие объекты я хочу включить в дерево, а затем выбрать дерево, которое содержит объекты?

1 Ответ

0 голосов
/ 22 марта 2019

Мой вопрос заключается в том, как мне узнать, какое дерево лучше всего объясняет набор данных?

XGBoost - это реализация деревьев решений с градиентным усилением (GBDT).Грубо говоря, GBDT - это последовательность деревьев, каждое из которых улучшает прогноз предыдущего с использованием остаточного форсирования.Таким образом, дерево, которое лучше всего объясняет данные: n - 1 тыс.

Подробнее о GBDT можно прочитать здесь

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

Все деревья обучаются с одинаковыми базовыми объектами, они просто добавляются residuals на каждой итерации повышения.Таким образом, вы не можете определить лучшее дерево таким образом.В этом видео есть интуитивное объяснение остатков.

...