Не несмотря на то, что градиентный бустинг используется повсеместно, многие практики до сих пор относятся к нему, как к сложному алгоритму в черном ящике и просто запускают готовые модели из предустановленных библиотек. Вот представьте, вы находитесь перед этим "черным ящиком" и задумываетесь, как бы вы его открыли и посмотрели, как он работает. Ну, именно это и будет нашей целью в этой статье!
Пристегните ремни, дорогие читатели "Аналитик Шоу", ведь сегодня мы отправляемся в увлекательное путешествие в мир градиентного бустинга. На этом этапе нашего разбора осветим "vanilla" GMB. Итак, погнали!
Ансамбли, бэггинг и бустинг Когда мы пытаемся предсказать целевую переменную с помощью алгоритма машинного обучения, мы боремся с тремя главными "неприятелями" - noise, variance и bias. Noise, как вечный шумный сосед, нам, кажется, не подвластен. Но что же делать с variance и bias? Ведь именно они могут вывести нашу модель из строя и заставить нас грести по воде ведром.
И тут на помощь приходит ансамбль! Этот супергерой мира машинного обучения помогает нам уменьшить вариацию и смещение в наших моделях (за исключением noise — это неуменьшаемая величина). Давайте разберемся, каким образом он это делает и какие еще секреты у этого чудо-алгоритма.
Ансамбль
Ансамбль - это как команда супергероев, которая объединяется, чтобы решить сложную задачу. В данном случае, ансамбль представляет собой группу предсказателей, которые работают сообща, чтобы дать нам один ответ (как будто бы собирают свои силы, чтобы спасти мир). Почему же мы используем ансамблирование? Потому что несколько предсказателей, работающих вместе, могут предоставить более точный результат, чем одиночный предсказатель. Это как будто бы команда супергероев, где каждый имеет свои сильные стороны, и вместе они неуязвимы.
Теперь, давайте разберемся, какие у нас есть два основных стиля ансамблирования - Бэггинг и Бустинг. Подготовьтесь к тому, чтобы узнать, какие секреты скрываются за этими захватывающими методами!
Бэггинг
Бэггинг - это как собирание команды супергероев, но каждый из них сражается в одиночку, а потом их силы объединяются, чтобы победить зло. Это простая техника, в которой мы строим несколько независимых моделей и затем комбинируем их, используя некую модель усреднения. Это может быть взвешенное среднее, голосование большинства или обычное арифметическое среднее.
Что делает бэггинг таким мощным? Он берет случайные подвыборки данных для каждой модели, что делает каждую модель немного уникальной. Так, все они как бы тренируются в условиях небольших изменений. Более того, выборка данных осуществляется с возвращением, что делает ее некоррелированной между моделями. Именно такая особенность делает бэггинг отличным способом снижения variance.
Давайте представим бэггинг как команду супергероев, где каждый супергерой обучается на своей части данных и затем собирается вместе, чтобы сразиться с преступностью. И, конечно же, примером бэггинга является наш любимый Random Forest, который как раз и является отличным примером команды супергероев в мире машинного обучения!
Бустинг
Бустинг - это как тренировка супергероя, который учится на своих ошибках и становится все сильнее с каждой тренировкой.
В отличие от бэггинга, где модели обучаются независимо, в бустинге предсказатели строятся последовательно, как будто бы каждый следующий супергерой учится на ошибках предыдущего. Они имеют неравные шансы появления в следующей модели, и чаще выбираются те, которые дали наибольшую ошибку, чтобы исправить их.
Предсказатели в бустинге могут быть выбраны из разных моделей, как деревья решений, линейная регрессия, классификаторы и так далее. Однако главная идея заключается в том, что они учатся на ошибках предыдущих предсказателей. Это позволяет им быстро приближаться к правильному ответу. Но важно выбирать критерии остановки осторожно, чтобы избежать переобучения. Градиентный бустинг - это один из самых ярких примеров бустинга, и он действительно умеет учиться на ошибках, как настоящий супергерой мира машинного обучения!
Алгоритм градиентного бустинга
Градиентный бустинг- это как сборка команды гений, которые работают вместе, чтобы решить невероятно сложные головоломки. В этом случае, команда состоит из слабых предсказателей, как будто бы группа замечательных друзей, которые объединяют свои силы, чтобы помочь вам.
Но давайте перейдем к математике градиентного бустинга. Представьте, что нашей задачей является минимизация функции потерь, которая в данном случае может быть представлена как среднеквадратичная ошибка (MSE). Мы хотим, чтобы наши предсказания были как можно ближе к реальным значениям, и чтобы MSE была как можно меньше.
Для этого мы используем градиентный спуск - это как поиск оптимального пути через горный ландшафт с помощью шагов в нужном направлении. Мы обновляем наши предсказания с учетом скорости обучения (learning rate) так, чтобы постепенно приближаться к минимуму MSE. Это можно представить, как будто бы мы постоянно учимся на своих ошибках и стараемся сделать наши предсказания более точными.
И вот, по мере обучения, наши предсказания становятся всё точнее, как будто бы команда гениев продолжает улучшать свои навыки и помогать вам решать задачи.
Интуиция за градиентным бустингом
Логика, что стоит за градиентым бустингом, проста, ее можно понять интуитивно, без математического формализма. Предполагается, что читатель знаком с простой линейной регрессией.
Первое предположение линейной регресии, что сумма отклонений = 0, т.е. отклонения должны быть случайно распределены в окрестности нуля.
Нормальное распределение выборки отклонений со средним 0 Нормальное распределение выборки отклонений со средним 0 Теперь давайте думать о отклонениях, как об ошибках, сделанных нашей моделью. Хотя в моделях основанных на деревьях не делается такого предположения, если мы будем размышлять об этом предположении логически (не статистически), мы можем понять, что увидив принцип распределения отклонений, сможем использовать данный паттерн для модели.
Итак, интуиция за алгоритмом градиентного бустинга — итеративно применять паттерны отклонений и улучшать предсказания. Как только мы достигли момента, когда отклонения не имеют никакого паттерна, мы прекращаем достраивать нашу модель (иначе это может привести к переобучению). Алгоритмически, мы минимизируем нашу функцию потерь.
В итоге,
Сначала строим простые модели и анализируем ошибки; Определяем точки, которые не вписываются в простую модель; Добавляем модели, которые обрабатывают сложные случаи, которые были выявлены на начальной модели; Собираем все построенные модели, определяя вес каждого предсказателя. Начало формы
Шаги построения модели градиентного спуска: Иллюстрировано не слишком умной, но веселой собакой
1. Начнем с установки модели. Для нашего примера возьмем дерево решений, потому что оно нам так симпатично выглядит. (Да, собаки не очень разбираются в машинном обучении, но давайте им подыграем!)
2. Теперь вычисляем ошибки. Это как когда ваша собака пытается достать мяч, но не может его поймать. Ошибка - это разница между фактическим местоположением мяча и тем, где ваша собака думает, что он находится.
3. Далее создаем новую модель для этих ошибок и даем ей имя "e1_predicted". Для собаки это, возможно, новая трюковая команда.
4. Добавляем предсказанные ошибки к предыдущим прогнозам. Это как когда ваша собака делает новый трюк и добавляет его к своей репертуарной программе.
5. Повторяем процесс: вычисляем новые ошибки и создаем новую модель. Как только мы видим, что собака начинает изучать все трюки наизусть и переобучается, останавливаемся.
Мы можем видеть, что наши прогнозы становятся лучше с каждой итерацией, но после некоторого времени наша собака начинает слишком увлекаться и пытается выучить все трюки на свете. Поэтому, иногда лучше остановиться на определенном этапе, когда мы видим, что достигли нужного уровня точности.
И вот, наша не совсем умная, но очень милая собака успешно пройдет через этот урок о градиентном бустинге. btech.expert Конец статьи!