Как работает самая популярная у дата саентистов модель машинного обучения: градиентный бустинг (XGBoosting) на пальцах

Привет, vc.ru! Меня зовут Александр Троицкий, я автор канала AI для чайников, и сегодня я расскажу про самую популярную у дата саентистов модель машинного обучения - градиентный бустинг.

Что это за модель?

Если брать определение из словарика, то градиентный бустинг - модель машинного обучения, решающая задачи классификации и регрессии. Она состоит из ансамбля более слабых моделей (чаще всего дерево решений) и учится последовательно на ошибках предыдущей модели.

Но здесь я хочу упростить все сложные статьи с кучей математических терминов, коих в интернете немало, поэтому просто предлагаю разобрать это определение бустинга простыми словами:

  • "Решает задачи регрессии и классификации" - это значит, что модель может выбирать из нескольких заранее готовых ответов (котик на фото или пёсик - это классификация), так и угадывать какое-то число (сколько стоит квартира от млн рублей до млрд рублей - это регрессия).
  • "Состоит из ансамбля более слабых моделей" - это значит, что внутри нее сидит не одна модель, а множество. И вместе они каким-то образом принимают решение как ответить окончательно. В случае с бустингом модели принимают решения и исправляют ответы предыдущих последовательно. Что это за последовательность я подробно покажу на примере ниже.
  • "Чаще всего состоит из деревьев решений". Дерево решений - это простой алгоритм машинного обучения. Для наглядности давайте представим, что у нас есть 4 квартиры, на основании которых мы хотим научиться оценивать стоимость квартиры. Само собой, в реальности мы бы делали модель на основании миллионов примеров стоимости квартир, но для упрощения мы возьмем 4 шутки:
Пример с квартирами
Пример с квартирами

Вот какие выводы (примерно) сделал бы наш просто алгоритм дерева решений:

Результаты модели "дерево решений" на примере с квартирами
Результаты модели "дерево решений" на примере с квартирами
  • "Учится последовательно на ошибках предыдущей модели" - это значит, что мы сначала обучаем какую-то простую модель, потом смотрим, где мы ошиблись, и обучаем новую модель поверх первой, которая исправляет изначальные значения первой модели. Так повторяется какое-то количество раз, и в итоге мы складываем значения всех итераций (при регрессии). Давайте разберемся на примере с квартирами.

Как работает и обучается модель градиентного бустинга (XGBoosting) на примере?

Для начала наша модель предсказала всем квартирам одинаковую стоимость (очень слабая модель).

Всем предсказали стоимость 2.250.000 рублей
Всем предсказали стоимость 2.250.000 рублей

Таким образом, вычтя из реальной стоимости квартиры предсказанную нашей моделью величину, мы получаем ошибки нашей модели.

Ошибки после 1 шага, на них будем обучать 2 шаг
Ошибки после 1 шага, на них будем обучать 2 шаг

Именно на них будет обучаться следующая модель. Ее цель - уменьшить эти ошибки. При этом модель будет обучаться на тех же факторах, что и первая модель (местоположение и число квадратных метров). Во время следующей итерации наша модель решила добавить к изначально предсказанной стоимости 200.000 рублей квартирам в центре и вычесть 200.000 рублей квартирам на окраине.

Как изменили предсказания после 2 шага
Как изменили предсказания после 2 шага

Таким образом, у нас получилась новая предсказанная стоимость квартир и новые ошибки.

Результаты после 2 шага и ошибки б
Результаты после 2 шага и ошибки б

Дальше мы проводим еще один шаг обучения. На этот раз бустинг решил уменьшить предсказанную стоимость квартирам на окраине с площадью меньше 40 метров. Уменьшил он эту стоимость на 500.000 рублей.

Результаты после 3 шага обучения
Результаты после 3 шага обучения

Ну и после 4 шага обучения алгоритм решил увеличить стоимость на 500.000 рублей квартирам площадью больше или равной 70 метрам в центре . Вот что получилось.

Результаты после 4 шага обучения
Результаты после 4 шага обучения

Итак, в итоге у нас получилась модель, которая обучилась на 4 шагах и в итоге предсказывает стоимость квартиры с погрешностью в 50.000 рублей.

Наш финальный алгоритм выглядит таким образом:

  1. Базово оцени квартиру в 2.250.000 рублей
  2. Если квартира в центре, добавь 200.000 рублей. Если она на окраине, вычти 200.000 рублей.
  3. Если эта квартира на окраине и ее площадь меньше 40 метров, вычти еще 500.000 рублей.
  4. Если квартира в центре и она больше или равна 70 метрам, добавь к стоимости 500.000 рублей.

Этот пример иллюстративный. Он описывает механику работы градиентного бустинга. В реальной жизни, конечно, этот пример бустинг решил бы с мЕньшей ошибкой за первое же обучение из-за маленького количества наблюдений.

Что еще стоит знать про модели бустинга?

У градиентного бустинга есть два основных гиперпараметра. Гиперпараметр - это то, что вы задаете модели как ограничение. С помощью них дата саентисты могут изменять модель, ничего не меняя в принципах ее работы. В основном тюнинг гиперпараметров используется, чтобы не дать модели переобучиться и показать хорошую предсказательную силу.

В нашем примере, переобучение модели - это когда модель хорошо предсказывает стоимость конкретно этих 4 квартир, но если ей дать другую квартиру, то она предскажет ее стоимость отвратительно.

Так вот у градиентного бустинга в качестве основных гиперпараметров есть learning rate и количество шагов обучения. Разберем каждый из них:

  1. Количество шагов обучения - это сколько раз мы дообучаем модель на ошибках предыдущей. В нашем примере мы сделали 4 шага. Чем больше выборка, тем больше шагов обучения допустимо делать.
  2. Learning rate - это то, на сколько мы можем исправлять предсказания предыдущего алгоритма. В нашем примере мы не ограничивали этот параметр, но часто рекомендуют ставить его меньше 0.2. Чем меньше этот параметр, тем больше возможностей вы оставляете для будущих шагов для улучшения качества модели.

Заключение

Поздравляю! Вы узнали про то как работает градиентный бустинг!

Если вам интересно знать про ИИ и машинное обучение больше, чем рядовой человек, но меньше, чем data scientist, то подписывайтесь на мой канал в Телеграм. Я пишу редко, но по делу: AI для чайников. Подписывайтесь!

3
Начать дискуссию