Привет, Хабр! Меня зовут Александр Троицкий, я автор канала AI для чайников, и сегодня я расскажу про самую популярную у дата саентистов модель машинного обучения - градиентный бустинг.
Что это за модель?
Если брать определение из словарика, то градиентный бустинг - модель машинного обучения, решающая задачи классификации и регрессии. Она состоит из ансамбля более слабых моделей (чаще всего дерево решений) и учится последовательно на ошибках предыдущей модели.
Но здесь я хочу упростить все сложные статьи с кучей математических терминов, коих в интернете немало, поэтому просто предлагаю разобрать это определение бустинга простыми словами:
"Решает задачи регрессии и классификации" - это значит, что модель может выбирать из нескольких заранее готовых ответов (котик на фото или пёсик - это классификация), так и угадывать какое-то число (сколько стоит квартира от млн рублей до млрд рублей - это регрессия).
"Состоит из ансамбля более слабых моделей" - это значит, что внутри нее сидит не одна модель, а множество. И вместе они каким-то образом принимают решение как ответить окончательно. В случае с бустингом модели принимают решения и исправляют ответы предыдущих последовательно. Что это за последовательность я подробно покажу на примере ниже.
"Чаще всего состоит из деревьев решений". Дерево решений - это простой алгоритм машинного обучения. Для наглядности давайте представим, что у нас есть 4 квартиры, на основании которых мы хотим научиться оценивать стоимость квартиры. Само собой, в реальности мы бы делали модель на основании миллионов примеров стоимости квартир, но для упрощения мы возьмем 4 шутки:
Вот какие выводы (примерно) сделал бы наш просто алгоритм дерева решений:
"Учится последовательно на ошибках предыдущей модели" - это значит, что мы сначала обучаем какую-то простую модель, потом смотрим, где мы ошиблись, и обучаем новую модель поверх первой, которая исправляет изначальные значения первой модели. Так повторяется какое-то количество раз, и в итоге мы складываем значения всех итераций (при регрессии). Давайте разберемся на примере с квартирами.
Как работает и обучается модель градиентного бустинга (XGBoosting) на примере?
Для начала наша модель предсказала всем квартирам одинаковую стоимость (очень слабая модель).
Таким образом, вычтя из реальной стоимости квартиры предсказанную нашей моделью величину, мы получаем ошибки нашей модели.
Именно на них будет обучаться следующая модель. Ее цель - уменьшить эти ошибки. При этом модель будет обучаться на тех же факторах, что и первая модель (местоположение и число квадратных метров). Во время следующей итерации наша модель решила добавить к изначально предсказанной стоимости 200.000 рублей квартирам в центре и вычесть 200.000 рублей квартирам на окраине.
Таким образом, у нас получилась новая предсказанная стоимость квартир и новые ошибки.
Дальше мы проводим еще один шаг обучения. На этот раз бустинг решил уменьшить предсказанную стоимость квартирам на окраине с площадью меньше 40 метров. Уменьшил он эту стоимость на 500.000 рублей.
Ну и после 4 шага обучения алгоритм решил увеличить стоимость на 500.000 рублей квартирам площадью больше или равной 70 метрам в центре . Вот что получилось.
Итак, в итоге у нас получилась модель, которая обучилась на 4 шагах и в итоге предсказывает стоимость квартиры с погрешностью в 50.000 рублей.
Наш финальный алгоритм выглядит таким образом:
Базово оцени квартиру в 2.250.000 рублей
Если квартира в центре, добавь 200.000 рублей. Если она на окраине, вычти 200.000 рублей.
Если эта квартира на окраине и ее площадь меньше 40 метров, вычти еще 500.000 рублей.
Если квартира в центре и она больше или равна 70 метрам, добавь к стоимости 500.000 рублей.
Этот пример иллюстративный. Он описывает механику работы градиентного бустинга. В реальной жизни, конечно, этот пример бустинг решил бы с мЕньшей ошибкой за первое же обучение из-за маленького количества наблюдений.
Что еще стоит знать про модели бустинга?
У градиентного бустинга есть два основных гиперпараметра. Гиперпараметр - это то, что вы задаете модели как ограничение. С помощью них дата саентисты могут изменять модель, ничего не меняя в принципах ее работы. В основном тюнинг гиперпараметров используется, чтобы не дать модели переобучиться и показать хорошую предсказательную силу.
В нашем примере, переобучение модели - это когда модель хорошо предсказывает стоимость конкретно этих 4 квартир, но если ей дать другую квартиру, то она предскажет ее стоимость отвратительно.
Так вот у градиентного бустинга в качестве основных гиперпараметров есть learning rate и количество шагов обучения. Разберем каждый из них:
Количество шагов обучения - это сколько раз мы дообучаем модель на ошибках предыдущей. В нашем примере мы сделали 4 шага. Чем больше выборка, тем больше шагов обучения допустимо делать.
Learning rate - это то, на сколько мы можем исправлять предсказания предыдущего алгоритма. В нашем примере мы не ограничивали этот параметр, но часто рекомендуют ставить его меньше 0.2. Чем меньше этот параметр, тем больше возможностей вы оставляете для будущих шагов для улучшения качества модели.
Заключение
Поздравляю! Вы узнали про то как работает градиентный бустинг!
Если вам интересно знать про ИИ и машинное обучение больше, чем рядовой человек, но меньше, чем data scientist, то подписывайтесь на мой канал в Телеграм. Я пишу редко, но по делу: AI для чайников. Подписывайтесь!
skoder
Мда, модель решила добавить 200, зачем почему? Как это она решила? У нас есть дерево решений по которому мы однозначно можем цену определить, как мы от нее пришли к модели которая - плохая. Столько текста только для рекламы канала.
troimc Автор
слушай я не тренировал модель на датасете из 4 наблюдений, тут я пытался показать суть как она работает. я не хочет раскрывать модель дерева, тут про бустинг и принципы его работы на условном примере. и в тексте есть несколько указаний на это.