что такое градиентный бустинг

Быстрый градиентный бустинг с CatBoost

Привет, хабровчане! Подготовили перевод статьи для будущих учеников базового курса Machine Learning.

что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустинг

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

что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустинг
Источник

CatBoost — это библиотека градиентного бустинга, созданная Яндексом. Она использует небрежные (oblivious) деревья решений, чтобы вырастить сбалансированное дерево. Одни и те же функции используются для создания левых и правых разделений (split) на каждом уровне дерева.

что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустинг
Источник

По сравнению с классическими деревьями, небрежные деревья более эффективны при реализации на процессоре и просты в обучении.

Работа с категориальными признаками

Наиболее распространенными способами обработки категориальных данных в машинном обучении является one-hot кодирование и кодирование лейблов. CatBoost позволяет использовать категориальные признаки без необходимости их предварительно обрабатывать.

При использовании CatBoost мы не должны пользоваться one-hot кодированием, поскольку это влияет на скорость обучения и на качество прогнозов. Вместо этого мы просто задаем категориальные признаки с помощью параметра cat_features.

Преимущества использования CatBoost

Есть несколько причин подумать об использовании CatBoost:

Параметры обучения

Давайте рассмотрим общие параметры в CatBoost:

Пример с регрессией

CatBoost в своей реализации использует стандарт scikit-learn. Давайте посмотрим, как мы можем использовать его для регрессии.

Первый шаг, как всегда, импортировать регрессор и создать его экземпляр.

При обучении модели CatBoost также позволяет нам визуализировать его, установив plot=true:

что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустинг

Также мы можем выполнять кроссвалидацию и визуализировать процесс:

что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустинг

Аналогично вы можете выполнить grid search и визуализировать его:

что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустинг

Также мы можем использовать CatBoost для построения дерева. Вот график первого дерева. Как вы видите из дерева, листья разделяются при одном и том же условии, например, 297, значение > 0.5.

что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустинг

CatBoost дает нам словарь со всеми параметрами модели. Мы можем вывести их, как словарь.

что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустинг

В этой статье мы рассмотрели преимущества и ограничения CatBoost, а также ее основные параметры обучения. Затем мы реализовали простую регрессию с помощью scikit-learn. Надеюсь, вы получили достаточно информации об этой библиотеке, чтобы самостоятельно продолжить ее исследование.

Источник

Пишем XGBoost с нуля — часть 2: градиентный бустинг

что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустинг

В прошлой статье мы разбирались, как устроены решающие деревья, и с нуля реализовали
алгоритм построения, попутно оптимизируя и улучшая его. В этой статье мы реализуем алгоритм градиентного бустинга и в конце создадим свой собственный XGBoost. Повествование будет идти по той же схеме: пишем алгоритм, описываем его, в заверешение подводим итоги, сравнивая результаты работы с аналогами из Sklearn’а.

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

Бустинг строится очень похожим способом. Во-первых, нам нужно ввести определение «лунки», то есть цели, к которой мы будем стремиться. Во-вторых, нам нужно научится понимать, в какую сторону нужно бить клюшкой, чтобы попасть ближе к цели. В-третьих, с учётом всех этих правил нужно придумать правильную последовательность ударов, чтобы каждый последующий сокращал расстояние между мячом и лункой.

Теперь дадим чуть более строгое определение. Введём модель взвешенного голосования:

что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустинг

Здесь что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустинг— это пространство, из которого берём объекты, что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустинг— это коэффицент перед моделью и непосредственно сама модель, то есть дерево решений. Допустим, что уже на каком-то шаге с помощью описанных правил удалось добавить в композицию что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустингслабый алгоритм. Чтобы научиться понимать, какой-именно должен быть алгоритм на шаге что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустинг, введем функцию ошибки:

что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустинг

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

Непосредственно перед реализацией вставлю ещё пару слов о том, как именно у нас всё будет устроено. Как и в прошлой статье, в качестве лосса возьмем MSE. Посчитаем её градиент:

что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустинг

Таким образом, вектор антиградиента будет равен что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустинг. На шаге что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустингмы считаем ошибки алгоритма, полученного на прошлых итерациях. Далее обучаем наш новый алгоритм на этих ошибках, а затем со знаком минус и каким-то коэффициентом добавляем к нашему ансамблю.

Теперь приступим к реализации.

1. Реализация обычного класса градиентного бустинга

Построим теперь кривую лосса на обучающей выборке, чтобы убедиться, что при каждой итерации у нас действительно происходит его уменьшение.

что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустинг

2. Бэггинг над решающими деревьями

Отлично, перед тем как сравнивать результаты, давайте поговорим ещё и о процедуре бэггинга над деревьями.

Тут вс просто: мы хотим защититься от переобучения, и поэтому с помощью выборок с возращением будем усреднять наши предсказания, чтобы случайно не напороться на выбросы (почему это так работает — лучше почитайте по ссылке).

Отлично, теперь в качестве базового алгоритма можем использовать не одно дерево, а бэггинг из деревьев — так мы, опять же, защитимся от переобучения.

3. Результаты

Сравним результаты наших алгоритмов.

что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустинг

Мы пока не можем победить аналог из Sklearn, потому что опять не учитываем очень много параметров, которые используются в этом методе. Однако мы видим, что бэггинг чуть-чуть помогает.

Не будем отчаиваться, и перейдём к написанию XGBoost’а.

4. XGBoost

Прежде чем читать дальше, очень советую сначала ознакомиться со следующим видео, в нём очень хорошо объясняется теория.

Вспомним, какую ошибку мы минимизируем в обычном бустинге:

что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустинг

XGBoost явно добавляет регуляризацию в этот функционал ошибки:

что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустинг

Как считать этот функционал? Сначала приближаем его с помощью ряда Тейлора второго порядка, где новый алгоритм рассматривается как приращение, вдоль которого мы будем двигаться, и дальше уже расписываем в зависимости от того, какой у нас лосс:

что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустинг

Необходимо определить, какое дерево мы будем считать плохим, а какое хорошим.

Вспомним, на каком принципе построена с регрессия с что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустинг-регуляризацией — чем больше по норме значения коэффициентов перед регрессией, тем хуже, поэтому нужно, чтобы они были как можно меньше.

В XGBoost идея очень похожа: дерево штрафуется, если сумма нормы значений в листьях в нём очень большая. Поэтому сложность дерева здесь вводится следующим образом:

что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустинг

что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустинг— значения в листьях, что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустинг— количество листьев.

В видео есть переходные формулы, мы их здесь выводить не будем. Всё сводится к тому, что новое разбиение мы будем выбирать, максимизируя gain:

что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустинг

Здесь что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустинг— это числовые параметры регуляризации, а что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустинг— соответствующие суммы из первых и вторых производных при данном разбиении.

Всё, теория очень кратко изложена, ссылки даны, теперь поговорим, какими будут производные, если мы работает с MSE. Всё просто:

что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустинг

Когда будем считать суммы что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустинг, к первой просто прибавляем что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустинг, а ко второй — просто количество.

Небольшое уточнение: чтобы формулы в деревьях с gain’ом были красивее, в бустинге обучаем таргет со знаком минус.

Слегка модифицируем наш бустинг, сделаем некоторые параметры адаптивными. Например, если замечаем, что лосс начал выходить на плато, то уменьшаем learning rate и увеличиваем max_depth у следующих эстиматоров. Также добавим новый бэггинг — теперь сделаем бустинг над бэггингами из деревьев с gain’ом:

5. Результаты

По традиции, сравним результаты:

Картинка будет следующая:

что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустинг

Самая низкая ошибка у XGBoost, но у XGBooBag ошибка более скученная, что определённо лучше: алгоритм более устойчив.

На этом всё. Очень надеюсь, что материал, изложенный в двух статьях, был полезен, и вы смогли узнать для себя что-то новое. Особую благодарность выражаю Дмитрию за всестороннюю обратную связь и исходники, Антону — за советы, Владимиру — за сложные задания по учебе.

Источник

Открытый курс машинного обучения. Тема 10. Градиентный бустинг

что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустинг

Всем привет! Настало время пополнить наш с вами алгоритмический арсенал.

Сегодня мы основательно разберем один из наиболее популярных и применяемых на практике алгоритмов машинного обучения — градиентный бустинг. О том, откуда у бустинга растут корни и что на самом деле творится под капотом алгоритма — в нашем красочном путешествии в мир бустинга под катом.

UPD: теперь курс — на английском языке под брендом mlcourse.ai со статьями на Medium, а материалами — на Kaggle (Dataset) и на GitHub.

Видеозапись лекции по мотивам этой статьи в рамках второго запуска открытого курса (сентябрь-ноябрь 2017).

1. Введение и история появления бустинга

Большинство людей, причастных к анализу данных, хоть раз слышали про бустинг. Этот алгоритм входит в повседневный «джентльменский набор» моделей, которые стоит попробовать в очередной задаче. Xgboost и вовсе часто ассоциируется со стандартным рецептом для победы в ML соревнованиях, породив мем про «стакать xgboost-ы». А еще бустинг является важной частью большинства поисковых систем, иногда выступая еще и их визитной карточкой. Давайте для общего развития посмотрим, как бустинг появился и развивался.

История появления бустинга

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

Утвердительный математический ответ на этот вопрос нашелся довольно быстро, что само по себе было важным теоретическим результатом (редкость в ML). Однако, потребовалось несколько лет до появления работоспособных алгоритмов и Adaboost. Их общий подход заключался в жадном построении линейной комбинации простых моделей (базовых алгоритмов) путем перевзвешивания входных данных. Каждая последующая модель (как правило, дерево решений) строилась таким образом, чтобы придавать больший вес и предпочтение ранее некорректно предсказанным наблюдениям.

По-хорошему, нам следовало бы последовать примеру большинства остальных курсов по машинному обучению, и перед градиентным бустингом тщательно разобрать его предтечу — Adaboost. Однако, мы решили сразу перейти к самому интересному, так как Adaboost все равно в итоге слился с GBM, когда стало понятно, что это просто его частная вариация.

Сам алгоритм имеет очень наглядную визуальную интерпретацию стоящей за ним интуиции взвешивания наблюдений. Рассмотрим игрушечный пример задачи классификации, в которой мы будем пробовать на каждой итерации Adaboost разделить данные деревом глубины 1 (так называемым «пнем»). На первых двух итерациях мы увидим следующую картинку:

что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустинг

Размер точки соответствует полученному ей весу за ошибочное предсказание. И мы видим, как на каждой итерации эти веса растут — пни не могут в одиночку справиться с такой задачей. Однако, когда мы произведем взвешенное голосование ранее построенных пней, мы получим искомое нами разделение:

что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустинг

Более подробный пример работы Adaboost, на котором в течение серии итераций видно последовательное увеличение точек, особенно на границе между классами:

Adaboost работал хорошо, но из-за того, что обоснований работы алгоритма с его надстройками было мало, вокруг них возник полный спектр спекуляций: кто-то считал его сверх-алгоритмом и волшебной пулей, кто-то был скептичен и разделял мнение, что это малоприменимый подход с жесткой переподгонкой (overfitting). Особенно сильно это касалось применимости на данных с мощными выбросами, к которым Adaboost оказался неустойчив. К счастью, когда за дело взялась профессура Стэнфордской кафедры статистики, уже принесшая миру Lasso, Elastic Net и Random Forest, в 1999 году от Jerome Friedman появилось обобщение наработок алгоритмов бустинга — градиентный бустинг, он же Gradient Boosting (Machine), он же GBM. Этой работой Friedman сразу задал статистическую базу для создания многих алгоритмов, предоставив общий подход бустинга как оптимизации в функциональном пространстве.

Вообще, команда Стэнфордской кафедры статистики причастна и к CART, и к bootstrap, и еще ко многим вещам, заранее внеся свои имена в будущие учебники статистики. По большому счету значительная часть нашего повседневного инструментария появилась именно там, и кто знает, что еще появится. Или уже появилось, но еще не нашло достаточного распространения (как, например, glinternet).

С самим Friedman-ом не так много видеозаписей. Однако, с ним есть очень интересное интервью про создание CART, и вообще про то, как решали статистические задачки (которые мы бы отнесли к анализу данных и data science) 40+ лет назад:

Из серии познавательной истории анализа данных, есть также лекция от Hastie с ретроспективой анализа данных от одного из участников создания наших с вами ежедневно используемых методов:

По сути, произошел переход от инженерно-алгоритмических изысканий в построении алгоритмов (так свойственных в ML) к полноценной методологии, как такие алгоритмы строить и изучать. С точки зрения математической начинки, на первый взгляд изменилось не так много: мы всё также добавляем (бустим) слабые алгоритмы, наращивая наш ансамбль постепенными улучшениями тех участков данных, где предыдущие модели «не доработали». Но при построении следующей простой модели, она строится не просто на перевзвешенных наблюдениях, а так, чтобы лучшим образом приближать общий градиент целевой функции. На концептуальном уровне это дало большой простор для фантазии и расширений.

История становления GBM

Свое место в «джентльменском наборе» градиентный бустинг занял не сразу — на это потребовалось больше 10 лет с момента появления. Во-первых, у базового GBM появилось много расширений под разные статистические задачи: GLMboost и GAMboost как усиление уже имеющихся GAM моделей, CoxBoost для кривых дожития, RankBoost и LambdaMART для ранжирования. Во-вторых, появилось много реализаций того же GBM под разными названиями и разных платформах: Stochastic GBM, GBDT (Gradient Boosted Decision Trees), GBRT (Gradient Boosted Regression Trees), MART (Multiple Additive Regression Trees), GBM как Generalised Boosting Machines и прочие. К тому же, сообщества machine learner-ов были достаточно разобщены и занимались всем подряд, из-за этого отследить успехи бустинга достаточно сложно.

В то же время бустинг начали активно применять в задачах ранжирования выдачи поисковых систем. Эту задачу выписали с точки зрения функции потерь, которая штрафует за ошибки в порядке выдачи, так что стало удобно просто вставить ее в GBM. Одними из первых внедрили бустинг в ранжирование AltaVista, а вскоре за ними последовали Yahoo, Yandex, Bing и другие. Причем, говоря о внедрении, речь шла о том, что бустинг на годы вперед становился основным алгоритмом внутри работающих движков, а не еще одной взаимо-заменяемой исследовательской поделкой, живущей в рамках пары научных статей.

что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустингГлавную роль в популяризации бустинга сыграли ML соревнования, в особенности kaggle. Исследователям давно не хватало общей платформы, где было бы достаточно участников и задач, чтобы в открытой борьбе за state of the art соревновались люди с их алгоритмами и подходами. Сумрачным немецким гениям, вырастившим у себя в гараже очередной чудо-алгоритм стало нельзя все списывать на закрытые данные, а реальные прорывные библиотеки наоборот получали отличную площадку для развития. Именно это и произошло с бустингом, который прижился на kaggle почти сразу (стоит искать GBM в интервью победителей с 2011 года), а xgboost как библиотека быстро завоевал популярность вскоре после своего появления. При этом xgboost — это не какой-то новый уникальный алгоритм, а просто крайне эффективная реализация классического GBM с некоторыми дополнительными эвристиками.

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

2. GBM алгоритм

Постановка ML задачи

Мы будем решать задачу восстановления функции в общем контексте обучения с учителем. У нас будет набор пар признаков что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустинги целевых переменных что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустинг, что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустинг, на котором мы будем восстанавливать зависимость вида что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустинг. Восстанавливать будем приближением что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустинг, а для понимания, какое приближение лучше, у нас также будет функция потерь что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустинг, которую мы будем минимизировать:

что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустинг

что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустинг

Пока что мы не делаем каких-либо предположений ни о типе зависимости что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустинг, ни о модели наших приближений что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустинг, ни о распределении целевой переменной что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустинг. Разве что функция что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустингдолжна быть дифференцируемой. Так как задачу надо решать не на всех данных в мире, а только на имеющихся в нашем распоряжении, перепишем все в терминах матожиданий. А именно, будем искать наши приближения что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустингтак, чтобы в среднем минимизировать функцию потерь на тех данных, что есть:

что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустинг

К сожалению, функций что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустингв мире не просто много — само их функциональное пространство бесконечномерно. Поэтому чтобы хоть как-то решить задачу, в машинном обучении обычно ограничивают пространство поиска каким-нибудь конкретным параметризованным семейством функций что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустинг. Это сильно упрощает задачу, так как она сводится к уже вполне решаемой оптимизации значений параметров:

что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустинг

Аналитические решения для получения оптимальных параметров что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустингв одну строку существуют достаточно редко, поэтому параметры обычно приближают итеративно. Сначала нам надо выписать эмпирическую функцию потерь что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустинг, показывающую, насколько хорошо мы их оценили по имеющимся у нас данных. Также выпишем наше приближение что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустингза что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустингитераций в виде суммы (и для наглядности, и чтобы начать привыкать к бустингу):

что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустинг

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

что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустинг

Функциональный градиентный спуск

Расширим сознание: представим на секунду, что мы можем проводить оптимизацию в функциональном пространстве и итеративно искать приближения что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустингв виде самих функций. Выпишем наше приближение в виде суммы инкрементальных улучшений, каждое из которых является функцией. Для удобства сразу будем считать эту сумму, начиная с начального приближения что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустинг:

что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустинг

Магии пока не случилось, мы просто решили, что будем искать наше приближение что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустингне в виде одной большой модели с кучей параметров (как, например, нейросеть), а в виде суммы функций, делая вид, что таким образом мы двигаемся в функциональном пространстве.

Чтобы решить задачу, нам все равно придется ограничить свой поиск каким-то семейством функций что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустинг. Но, во-первых, сумма моделей может быть сложнее чем любая модель из этого семейства (сумму двух деревьев-пней глубины 1 уже не приблизить одним пнем). Во-вторых, общая задача все еще происходит в функциональном пространстве. Сразу учтем, на каждом шаге для функций нам понадобится подбирать оптимальный коэффициент что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустинг. Для шага что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустингзадача выглядит следующим образом:

что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустинг

А вот теперь время магии. Мы выписывали все наши задачи в общем виде, словно мы можем просто так брать и обучать какие угодно модели что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустинготносительно каких угодно функций потерь что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустинг. На практике это крайне сложно, поэтому был придуман простой способ свести задачу к чему-то решаемому.

Зная выражение градиента функции потерь, мы можем посчитать его значения на наших данных. Так давайте обучать модели так, чтобы наши предсказания были наиболее скоррелированными с этим градиентом (со знаком минус). То есть будем решать задачу МНК-регрессии, пытаясь выправлять предсказания по этим остаткам. И для классификации, и для регрессии, и для ранжирования под капотом мы все время будем минимизировать квадрат разности между псевдо-остатками что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустинги нашими предсказаниями. Для шага что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустингитоговая задача выглядит следующим образом:

что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустинг

что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустинг

Классический GBM алгоритм Friedman-а

Теперь у нас есть все необходимое, чтобы наконец выписать GBM алгоритм, предложенный Jerome Friedman в 1999 году. Мы все так же решаем общую задачу обучения с учителем. На вход алгоритма нужно собрать несколько составляющих:

Единственный момент, который остался без внимания — начальное приближение что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустинг. Для простоты, в качестве инициализации используют просто константное значение что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустинг. Его, а также оптимальный коэффициент что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустингнаходят бинарным поиском, или другим line search алгоритмом относительно исходной функции потерь (а не градиента). Итак, GBM алгоритм:

Пошаговый пример работы GBM

Попробуем на игрушечном примере разобраться, как работает GBM. Будем с его помощью восстанавливать зашумленную функцию что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустинг.

что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустинг

Это задача регрессии на вещественную целевую переменную, поэтому воспользуемся средне-квадратичной функцией потерь. Самих пар наблюдений мы сгенерируем 300 штук, а приближать будем деревьями решений глубины 2. Соберем вместе все, что нам нужно для применения GBM:

У среднеквадратичной ошибки все просто и с инициализацией что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустинги с коэффициентами что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустинг. А именно, инициализировать GBM мы будем средним значением что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустинг, а все что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустингравны 1.

Запустим GBM и будем рисовать два типа графиков: актуальное приближение что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустинг(синий график), а также каждое построенное дерево что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустингна своих псевдо-остатках (зеленый график). Номер графика соответствует номеру итерации:

что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустинг

Заметим, что ко второй итерации наши деревья повторили основную форму функции. Однако, на первой итерации мы видим, что алгоритм построил только «левую ветвь» функции (что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустинг). Так получилось банально потому, что нашим деревьям не хватило глубины, чтобы построить симметричную ветку сразу, а ошибка на левой ветви была больше. Так что, правая ветвь «проросла» только на второй итерации.

В остальном процесс прошел так как мы и ожидали: на каждом шаге наши псевдо-остатки уменьшались, а GBM все ближе приближал исходный косинус. Однако, деревья по построению не могут приблизить непрерывную функцию, поэтому на этом примере GBM полезен, но не идеален. Чтобы самим поиграться с тем, как GBM приближает функции, в блоге Brilliantly wrong есть офигенная интерактивная демка:

что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустинг

3. Функции потерь

Что делать, если мы хотим решать не обычную среднеквадратичную регрессию, а, скажем, задачу бинарной классификации? Нет проблем, надо только выбрать соответствующую задаче и целевой переменной что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустингфункцию потерь что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустинг. Это самый важный верхнеуровневый момент, определяющий что именно мы будем оптимизировать, и какие свойства ожидать от нашей итоговой модели.

Как правило, самим нам ничего придумывать и выписывать не надо — исследователи уже все сделали за нас. Сегодня мы разберем функции потерь двух самых часто встречающихся задач: регрессии что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустинги бинарной классификации что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустинг. Что делать с многоклассовой классификаций, рангами, а также всякими промежуточными случаями вроде целочисленной регрессии, расскажем в другой раз.

Функции потерь регрессии

Сначала разберемся с регрессией что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустинг. Выбирая функцию потерь в этом случае, мы прежде всего решаем, какое именно свойство условного распределения что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустингмы хотим восстановить. Наиболее частые варианты:

Давайте попробуем воспользоваться что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустингфункцией потерь на наших игрушечных данных, пытаясь восстановить условную 75%-квантиль косинуса. Соберем все воедино:

У нас есть очевидное начальное приближение — просто взять нужную нам квантиль что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустинг. Однако, про оптимальные коэффициенты что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустингнам ничего не известно, так что воспользуемся стандартным line search. Посмотрим, что у нас получилось:

что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустинг

Непривычно видеть, что по факту мы обучаем что-то очень непохожее на обычные остатки — на каждой итерации что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустингпринимают только два возможных значения. Однако, результат работы GBM достаточно похож на нашу исходную функцию.

Если оставить алгоритм обучаться на этом игрушечном примере, мы получим почти такой же результат, что и с квадратичной функцией потерь, смещенный на что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустинг. Но если бы мы искали квантили выше 90%, могли бы возникнуть вычислительные трудности. А именно, если соотношение числа точек выше нужной квантили будет слишком мало (как несбалансированные классы), модель не сможет качественно обучиться. Про такие нюансы стоит задумываться, решая нетипичные задачи.

Для задачи регрессии разработано достаточно много функций потерь, в том числе с дополнительными свойствами робастности. Один такой пример — функция потерь Губера, она же Huber loss. Суть функции в том, что на небольших отклонениях она работает как что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустинг, а с заранее заданного порога, начинает работать как что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустинг. Это позволяет уменьшить вклад выбросов и следующих за ними квадратично-больших ошибок на общий вид функции, при этом не акцентируя внимание на мелких неточностях и отклонениях.

Можно посмотреть, как работает эта функция потерь на следующем игрушечном примере. За основу возьмем игрушечные данные функции что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустинг, к которым был добавлен специальный шум: смесь из Гауссовского распределения и распределения Бернулли, выступающего в роли одностороннего генератора выбросов. Сами функции потерь приведены на графиках A-D, а соответствующие им GBM — на графиках F-H (на графике E — исходная функция):

что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустинг

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

По результатам примера, из-за искусственно созданной проблемы с шумом разница между что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустинг, что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустинги Huber loss достаточно заметна. При грамотном подборе параметра Huber loss мы даже получим наилучшую аппроксимацию функции среди наших вариантов. А еще на этом примере хорошо видна разница в условных квантилях (10%, 50% и 90% в нашем случае).

К сожалению, функция Huber loss реализована не во всех современных библиотеках (в h2o реализована, в xgboost еще нет). Это же касается и других интересных функций потерь, включая и условные квантили, и такие экзотические вещи как условные экспектили. Но в целом, достаточно полезно знать о том, что такие варианты существуют и ими можно пользоваться.

Функции потерь классификации

Теперь разберем бинарную классификацию, когда что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустинг. Мы уже видели, что с помощью GBM можно оптимизировать даже не очень дифференцируемые функции потерь. И вообще, можно было бы, не задумываясь, попытаться решить этот случай как еще одну задачу регрессии с каким-нибудь что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустингloss, но это будет не очень правильно (хотя и возможно).

Из-за принципиально другой природы распределения целевой переменной, будем предсказывать и оптимизировать не сами метки классов, а их log-правдоподобие. Для этого переформулируем функции потерь над перемноженными предсказаниями и истинными метками что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустинг(не спроста же мы выбрали метки разных знаков). Наиболее известные варианты таких классификационных функций потерь:

Сгенерируем новые игрушечные данные для задачи классификации. За основу возьмем наш зашумленный косинус, а в качестве классов целевой переменной будем использовать функцию sign. Новые данные выглядят следующим образом (jitter-шум добавлен для наглядности):

что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустинг

Воспользуемся Logistic loss, чтобы посмотреть, что же мы на самом деле бустим. Как и прежде, соберем воедино то, что будем решать:

В этот раз с инициализацией алгоритма все немного сложнее. Во-первых, наши классы несбалансированы и разделены в пропорции примерно 63% на 37%. Во-вторых, аналитической формулы для инициализации для нашей функции потерь неизвестно. Так что будем искать что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустингпоиском:

что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустинг

что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустинг

Алгоритм отработал успешно, восстановив разделение наших классов. Можно видеть, как отделяются «нижние» области, в которых деревья больше уверены в корректном предсказании отрицательного класса, и как формируются две ступеньки, где классы были перемешаны. На псевдо-остатках видно, что у нас есть достаточно много корректно классифицированных наблюдений, и какое-то количество наблюдений с большими ошибками, которые появились из-за шума в данных. Как-то выглядит то, что на самом деле предсказывает GBM в задаче классификации (регрессия на псевдо-остатках логистической функции потерь).

Иногда возникает ситуация, когда для задачи хочется придумать более специфичную функцию потерь. Например, в предсказании финансовых рядов мы можем захотеть придавать больший вес крупным движениям временного ряда, а в задаче предсказания клиентского оттока — лучше предсказывать отток у клиентов с высоким LTV (lifetime value, сколько денег клиент нам принесет в будущем).

что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустинг

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

Вместо этого был придуман очень простой инструмент, о котором редко вспоминают на практике — взвешивание наблюдений и задание весовых функций. Простейший пример такого взвешивания — задание весов для балансировки классов. В общем случае, если мы знаем, что какое-то подмножество данных, как во входных переменных что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустинг, так и в целевой переменной что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустингимеет большую значимость для нашей модели, мы просто задаем им больший вес что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустинг. Главное — выполнить общие требования разумности весов:

Веса позволяют существенно сократить время на подстройку самой функции потерь под решаемую задачу, а также поощряют эксперименты с целевыми свойствами моделей. Как именно задавать эти веса — исключительно наша творческая задача. С точки зрения GBM алгоритма и оптимизации, мы просто добавляем скалярные веса, закрывая глаза на их природу:

что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустинг

Понятно, что для произвольных весов мы не знаем никаких красивых статистических свойств нашей модели. В общем случае, привязывая веса к значениям что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустинг, мы можем прострелить себе колено. Например, использование весов, пропорциональных что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустингв что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустингфункции потерь — не эквивалентно что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустингloss, так как градиент не будет учитывать значения самих предсказаний что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустинг.

Мы обсуждаем все это, чтобы лучше понимать наши возможности. Давайте придумаем какой-нибудь очень экзотический пример весов на наших игрушечных данных. Зададим сильно асимметричную весовую функцию следующим образом:

что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустинг0 \end\right. \end $» data-tex=»display»/>

что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустинг

С помощью таких весов мы ожидаем увидеть два свойства: меньшую детализацию на отрицательных значениях что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустинг, а также форму функции, в большей степени похожую на исходный косинус. Все остальные настройки GBM мы берем из нашего предыдущего примера с классификацией, включая line search для оптимальных коэффициентов. Посмотрим, что у нас получилось:

что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустинг

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

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

4. Итог про теорию GBM

Сегодня мы разобрали основную теорию про градиентный бустинг. GBM — это не просто какой-то конкретный алгоритм, а общая методология, как строить ансамбли моделей. Причем методология достаточно гибкая и расширяемая: можно обучать большое количество моделей с учетом различных функций потерь и при этом еще и навешивать на них разного рода весовые функции.

Как показывает и практика, и опыт соревнований по машинному обучению, в стандартных задачах (все кроме картинок и аудио, а также сильно разреженных данных), GBM очень часто является самым эффективным алгоритмом (не считая stacking-а и верхнеуровневых ансамблей, где GBM почти всегда является неотъемлемой их частью). При этом существуют адаптации GBM под Reinforcement Learning (Minecraft, ICML 2016), а алгоритм Виола-Джонса, до сих пор используемый в компьютерном зрении, основан на Adaboost.

В этой статье мы специально опустили вопросы, связанные с регуляризацией GBM, стохастичностью, а также связанными с ними гиперпараметрами алгоритма. Неспроста мы везде выбирали маленькое число итераций алгоритма, что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустинг. Если бы мы выбрали не 3, а 30 деревьев, и запустили GBM как описали выше, результат вышел бы не таким предсказуемым:

что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустинг

О том, что делать в подобных ситуациях, и как взаимосвязаны друг с другом параметры регуляризации GBM, а также гиперпараметры базовых алгоритмов, мы расскажем в следующей статье. В ней же мы разберем современные пакеты — xgboost, lightgbm и h2o, а также попрактикуемся в их правильной настройке. А пока мы предлагаем вам поиграться с настройками GBM в еще одной очень крутой интерактивной демке Brliiantly wrong:

что такое градиентный бустинг. Смотреть фото что такое градиентный бустинг. Смотреть картинку что такое градиентный бустинг. Картинка про что такое градиентный бустинг. Фото что такое градиентный бустинг

5. Домашнее задание

Актуальные домашние задания объявляются во время очередной сессии курса, следить можно в группе ВК и в репозитории курса.

В качестве упражнения выполните это задание — надо побить простой бейзлайн в соревновании Kaggle Inclass по прогнозированию задержек вылетов.

6. Полезные ссылки

Особая благодарность yorko (Юрию Кашницкому) за ценные комментарии, а также bauchgefuehl (Анастасии Манохиной) за помощь с редактированием.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *