Выбор дерева решений XGBoost

#python #decision-tree #xgboost

#python #дерево решений #xgboost

Вопрос:

У меня есть вопрос относительно того, из какого дерева решений мне следует выбирать 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:

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

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

Вы можете прочитать больше о GBDT здесь

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

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

Комментарии:

1. Спасибо. Так правда ли, что чем больше раундов мы позволяем модели повторяться, тем лучше дерево? Итак, нам нужно рассмотреть компромисс между временем, затраченным на обучение модели, и точностью модели.

2. Нет — неверно. Если вы продолжите тренироваться, через некоторое время вы начнете переобучаться, и ваша модель потеряет способность к прогнозированию, потому что она становится все хуже и хуже при обобщении. Вы можете прочитать больше здесь en.wikipedia.org/wiki/Overfitting