#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