Линейные базовые модели
Вы уже использовали деревья в качестве базовых моделей в XGBoost — теперь попробуем другой тип базовой модели: линейный обучающий алгоритм. Хотя он применяется в XGBoost реже, он позволяет построить регуляризованную линейную регрессию с использованием мощного API обучения XGBoost. Однако из-за своей специфики эта модель требует использования собственных функций XGBoost, несовместимых с scikit-learn, — например, xgb.train().
Для этого необходимо создать словарь параметров, описывающий тип бустера, который вы хотите использовать (аналогично тому, как вы создавали словарь в главе 1 при использовании xgb.cv()). Пара ключ–значение, задающая тип бустера (базовой модели), выглядит так: "booster":"gblinear".
После создания модели вы можете использовать методы .train() и .predict() так же, как делали это раньше.
Данные уже разбиты на обучающую и тестовую выборки, поэтому можно сразу приступить к созданию объектов DMatrix, необходимых для API обучения XGBoost.
Это упражнение является частью курса
Экстремальный градиентный бустинг с XGBoost
Инструкции к упражнению
- Создайте два объекта
DMatrix:DM_trainдля обучающей выборки (X_trainиy_train) иDM_testдля тестовой выборки (X_testиy_test). - Создайте словарь параметров, в котором задайте тип
"booster"("gblinear") и минимизируемую"objective"("reg:squarederror"). - Обучите модель с помощью
xgb.train(). Укажите аргументы для следующих параметров:params,dtrainиnum_boost_round. Используйте5раундов бустинга. - Сделайте предсказания меток на тестовой выборке с помощью
xg_reg.predict(), передав емуDM_test. Сохраните результат в переменнуюpreds. - Нажмите «Отправить ответ», чтобы увидеть значение RMSE!
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
# Convert the training and testing sets into DMatrixes: DM_train, DM_test
DM_train = ____
DM_test = ____
# Create the parameter dictionary: params
params = {"____":"____", "____":"____"}
# Train the model: xg_reg
xg_reg = ____.____(____ = ____, ____=____, ____=____)
# Predict the labels of the test set: preds
preds = ____
# Compute and print the RMSE
rmse = np.sqrt(mean_squared_error(y_test,preds))
print("RMSE: %f" % (rmse))