И почему XGBoost так хорошо показал себя в недавнем исследовании

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

Это сложно из-за многомерности (например, цветов, кроя, материалов, узоров, принтов, возрастных и размерных диапазонов, стилей, а также культурных, географических и социально-экономических различий) (Paton, 2018). Традиционно спрос на товары чаще всего пытаются спрогнозировать с использованием статистики временных рядов на основе исторических продаж одного и того же товара; однако этот подход не позволяет предсказать сдвиги спроса более высокого порядка, чтобы предсказать будущие тенденции или популярные товары (Singh, 2019).

Наконец, огромную ценность имеет возможность минимизировать задержку - временные задержки - между определением спроса на новые продукты (например, модной тенденции) и их поступлением в продажу. Например, сравнительное исследование семи популярных алгоритмов прогнозирования машинного обучения в середине 2019 года по набору данных из 26 762 предметов модной одежды от Myntra, индийского розничного продавца электронной коммерции, показало, что XGBoost (XGB) неизменно показывает лучшие или почти лучшие результаты, прогнозировать спрос на новые модные тенденции. Он сравнивал случайные леса (RF), деревья регрессии с градиентным усилением (GBRT), машину светового градиента (LGBM), CatBoost (CB), XGBoost (XGB), встраивание атрибутов + многослойный персептрон
(MLP). , и встраивание атрибутов + долговременная краткосрочная память (LSTM).

Критерии, по которым каждый из них измерялся по отношению к потерянной функции, можно увидеть в следующей таблице (Singh, 2019).

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

Краткое описание победителя: Extreme Gradient Boosting (XGBoost)

Экстремальное градиентное усиление (XGBoost) описывается разработчиками SageMaker, собственной облачной платформы машинного обучения Amazon, как «популярная и эффективная реализация алгоритма градиентных деревьев с открытым исходным кодом… алгоритма контролируемого обучения, [который] пытается точно прогнозировать целевую переменную, комбинируя оценки набора более простых и более слабых моделей »(Amazon SageMaker, 2019) (Chen, XGBoost: масштабируемая система повышения качества дерева, 2016). XGBoost - это один из инструментов в наборе инструментов сообщества распределенного машинного обучения (DMLC), который также распространяет библиотеку глубокого обучения MXNet. DMLC описывает XGBoost как «библиотеку программного обеспечения с открытым исходным кодом, [которая] предоставляет структуру повышения градиента для C ++, Java, Python, R,… Julia» и JVM, которая «обеспечивает параллельное усиление дерева». Впервые он был выпущен в марте 2014 года; Самая последняя версия - 0,90 от мая 2019 г. (XGBoost, 2019). XGBoost выиграл или почти выиграл больше конкурсов по классификации и регрессионному прогнозированию данных, ориентированных на структурированные или табличные наборы данных, чем любой другой алгоритм машинного обучения (Brownlee, 2016).

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

XGBoost часто путают с повышением градиента (GB), стохастическим градиентным спуском и деревьями с градиентным усилением (GBT) (Tseng, 2018). Более того, поскольку GB и GBT, возможно, являются предпосылками для XGBoost, а стохастический градиентный спуск, возможно, является альтернативой, различие между ними - отличный способ также объяснить применение XGBoost.

Пакетный градиентный спуск (BGD)

Градиентный спуск - это метод математической оптимизации, который можно использовать с многочисленными алгоритмами машинного обучения. На самом высоком уровне он используется для определения значений параметров или коэффициентов функции, которая минимизирует стоимость, часто ошибку прогнозирования. В традиционной математике значения этих коэффициентов вычисляются аналитически с помощью линейной алгебры. Когда значения этих коэффициентов неизвестны, алгоритм градиентного спуска максимизирует эффективность их поиска, чтобы оптимизировать алгоритм машинного обучения. Или, чтобы сделать его более точным при прогнозировании, потому что он нашел комбинацию коэффициентов (весов, параметров), которые минимизируют ошибку (Brownlee, Gradient descent for machine learning, 2016).

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

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

Затем вычисляется производная стоимости, которая представляет собой концепцию исчисления, указывающую наклон линии в любой заданной точке, которая будет указывать направление, в котором нам нужно двигаться для следующего предположения коэффициента для оптимизации результатов; производная стоимости часто представлена ​​как заглавная буква греческой буквы дельта (Δ): дельта = производная (стоимость). Первая производная может быть обозначена двумя способами: y ’(обозначение Ньютона) или (y) (обозначение Лейбница). Таким образом, это также можно записать в виде Δ = y ’(Стоимость). Как только наклон известен, он указывает направление, в котором должна быть сделана следующая оценка-предположение коэффициента.

Величина, на которую коэффициент может измениться при каждом итеративном обновлении, определяется как альфа (α) и пропорциональна стоимости или ошибке.89 Таким образом, окончательный расчет для алгоритма для `` обучения '' следующий: Новый коэффициент = Старый коэффициент - (Дельта x Alpha) или (Δ * α) (Браунли, Градиентный спуск для машинного обучения, 2016). Это правило «обновления» также называется правилом обновления наименьших средних квадратов (LMS) или правилом обучения Уидроу-Хоффа (Ng, 2018).

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

Стохастический градиентный спуск (SGD)

Мать необходимости развития градиентного спуска и изобретения чего-то нового была привязана в первую очередь к скорости. Поскольку градиентный спуск требует, чтобы этот итеративный процесс запускался и повторялся для всего набора обучающих данных, для больших данных он может быть очень интенсивным в вычислительном отношении и медленным для вычисления. Таким образом, началась эволюция,
называемая стохастическим градиентным спуском (Браунли, Градиентный спуск для машинного обучения, 2016).

Стохастический градиентный спуск (SGD) - это разновидность и альтернатива пакетному градиентному спуску. SGD разбивает эти итеративно-корректирующие оценки до каждой точки данных после их случайного упорядочивания, вместо того, чтобы каждый раз проходить через весь набор обучающих данных, прежде чем предпринимать какие-либо шаги по настройке. Перефразируя значком машинного обучения Эндрю Нг, SGD «многократно прогоняет [s] обучающий набор, и каждый раз, когда [он] сталкивается с [s] обучающим примером, [он] обновляет [s] параметры) в соответствии с градиентом ошибка [стоимость] только в отношении этого единственного обучающего примера »(Ng, 2018). Результаты определяются намного быстрее, и редко требуется более 1–10 проходов по всему набору данных для оптимизации функции затрат (Браунли,
Градиентный спуск для машинного обучения, 2016).

Повышение градиента (ГБ)

Важным предположением при использовании стохастического градиентного спуска (SGD) является фиксированная архитектура модели. Таким образом, цель состоит в том, чтобы оптимизировать коэффициенты (которые являются параметрами в классификации или задачах линейной или многомерной регрессии или весами в логистической регрессии). Так что, если архитектурная модель не зафиксирована? Следовательно, изобретение повышения градиента (Tseng, 2018).

Градиентная загрузка - это подход к ансамблевому машинному обучению, основанный на аддитивном моделировании. Идея состоит в том, чтобы сформировать более точную модель, сложив несколько моделей и усреднив их (Mahto, 2019). Цель повышения градиента - найти лучшие параметры и функцию (функция не определяется заранее, как в пакетном и SGD). Цель определения лучших параметров и функций экспоненциально увеличивает сложность и количество возможных комбинаций, которые необходимо анализировать, искать и пытаться узнать, какие из них являются оптимальными. Для повышения эффективности градиентное усиление делает это, используя множество простых пробных функций и комбинируя их (Tseng, 2018). Однако отличие от бустинга заключается в том, что простые базовые модели, которые будут объединены, обучаются последовательно, одна за другой, а не параллельно или в одно и то же время (Mahto, 2019).

Экстремальное усиление градиента (XGBoost)

XGBoost стал легендарным в машинном обучении. Среди его достижений: (1) 17 из 29 задач на сайте конкурса машинного обучения Kaggle в 2015 году были выиграны с XGBoost, восемь использовали исключительно XGBoost и девять использовали XGBoost в ансамблях с нейронными сетями; и (2) на KDD Cup 2016, ведущем соревновании по машинному обучению на основе конференций, все 10 лучших мест размещения использовали XGBoost (Chen, XGBoost: A scaleable tree boosting system, 2016).

По сути, XGBoost - это супероптимизированный алгоритм градиентного спуска и повышения, который необычайно быстр и точен. Эта «супероптимизация» происходит путем комбинирования функции пакетного градиентного спуска, как описано здесь выше, и штрафа за сложность модели (также известную как функция дерева регрессии); однако обычно это применимо только к одному типу модели машинного обучения -
деревьям решений (более формально известным как деревья категоризации и регрессии или CART) (Amazon SageMaker, 2019).

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

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