1. Learn
  2. /
  3. Курси
  4. /
  5. Кероване навчання в R: регресія

Connected

Вправа

Доберіть оптимальну кількість дерев для gradient boosting machine

У цій вправі ви підготуєтеся до побудови моделі градієнтного бустингу, щоб передбачити кількість орендованих велосипедів за годину залежно від погоди, типу дня та часу доби. Ви тренуватимете модель на даних за липень.

Дані за липень уже завантажено. Пам'ятайте, що в bikesJuly.treat стовпця з виходом більше немає, тож його потрібно взяти з необроблених даних: bikesJuly$cnt.

Ви використаєте пакет xgboost, щоб навчити модель випадкового лісу. Функція xgb.cv() (docs) застосовує крос-валідацію, щоб оцінити позавибіркову помилку навчання під час додавання кожного нового дерева до моделі. Відповідна кількість дерев для фінальної моделі — це та, що мінімізує holdout RMSE.

Для цієї вправи ключові аргументи виклику xgb.cv() такі:

  • data: числова матриця.
  • label: вектор вихідних значень (також числовий).
  • nrounds: максимальна кількість раундів (дерев для побудови).
  • nfold: кількість фолдів для крос-валідації. 5 — гарний вибір.
  • objective: "reg:squarederror" для неперервних виходів.
  • eta: швидкість навчання (learning rate).
  • max_depth: максимальна глибина дерев.
  • early_stopping_rounds: зупинитися після такої кількості раундів без покращення.
  • verbose: FALSE, щоб вимкнути вивід.

Інструкції

100 XP
  • Заповніть пропуски, щоб запустити xgb.cv() на оброблених тренувальних даних; присвойте результат змінній cv.
    • Використайте as.matrix(), щоб перетворити оброблений датафрейм на матрицю.
    • Використайте 50 раундів і 5-фолдну крос-валідацію.
    • Встановіть early_stopping_rounds у 5.
    • Встановіть eta на 0,75, max_depth на 5.
  • Отримайте датафрейм evaluation_log з cv і присвойте його змінній elog. Кожен рядок evaluation_log відповідає додатковому дереву, тож номер рядка вказує кількість дерев у моделі.
  • Заповніть пропуски, щоб отримати кількість дерев з мінальним значенням у стовпцях train_rmse_mean і test_rmse_mean.
    • which.min() (docs) повертає індекс мінімального значення у векторі.
    • Скільки дерев вам потрібно?