НачатьНачать бесплатно

Деревья с градиентным бустингом: построение модели

Градиентный бустинг — это метод повышения точности моделей. Идея состоит в следующем: сначала обучается простая и быстро вычисляемая слабая модель. Затем значения отклика заменяются остатками этой модели и обучается новая модель. «Сложив» исходную модель прогнозирования отклика и новую модель прогнозирования остатков, вы получаете более точную модель. Этот процесс можно повторять многократно: каждый раз строится новая модель для предсказания остатков предыдущей, а результаты суммируются. С каждой итерацией качество итоговой модели улучшается.

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

Деревья решений подробно рассматриваются в курсах Supervised Learning in R: Classification и Supervised Learning in R: Regression. Второй курс также охватывает тему градиентного бустинга.

Чтобы запустить модель деревьев с градиентным бустингом в sparklyr, вызовите функцию ml_gradient_boosted_trees(). Использование этой функции обсуждалось в первом упражнении данной главы.

Это упражнение является частью курса

Введение в Spark с sparklyr на R

Посмотреть курс

Инструкции к упражнению

Подключение к Spark уже создано и доступно как spark_conn. Tibble, привязанный к объединённым и отфильтрованным метаданным треков и данным о тембре, хранящимся в Spark, предопределён как track_data_to_model_tbl.

  • Получите названия столбцов, содержащих строку "timbre", чтобы использовать их в качестве признаков.
    • С помощью colnames() получите названия столбцов track_data_to_model_tbl. Обратите внимание: функция names() не даст нужного результата.
    • С помощью str_subset() отфильтруйте нужные столбцы.
    • В качестве аргумента pattern передайте fixed("timbre").
    • Сохраните результат в переменную feature_colnames.
  • Создайте formula для модели с помощью reformulate().
    • Аргумент termlabels (входные переменные формулы) должен быть равен feature_colnames.
    • Аргумент response (выходная переменная формулы) должен быть равен "year".
    • Сохраните результат в переменную year_formula.
    • Такой вызов reformulate() объединяет все переменные из feature_colnames знаком +, формируя правую часть formula. В итоге получается формула вида year ~ timbre1 + timbre2 + ... + timbre12, которая описывает зависимости между переменными, включёнными в модель.
  • Запустите модель с градиентным бустингом.
    • Вызовите ml_gradient_boosted_trees(), передав единственным аргументом созданную формулу year_formula.
    • Сохраните результат в переменную gradient_boosted_trees_model.

Интерактивное практическое упражнение

Попробуйте выполнить это упражнение, дополнив этот пример кода.

# track_data_to_model_tbl has been pre-defined
track_data_to_model_tbl

feature_colnames <- track_data_to_model_tbl %>%
  # Get the column names
  ___ %>%
  # Limit to the timbre columns
  ___(___(___))

feature_colnames

# Create the formula for the model
year_formula <- ___

gradient_boosted_trees_model <- track_data_to_model_tbl %>%
  # Run the gradient boosted trees model
  ___
Редактировать и запускать код