Лінійні базові алгоритми
Тепер, коли ви використали дерева як базові моделі в 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. - Натисніть "Submit Answer", щоб переглянути 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))