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

Что такое XGBoost

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

Мудрость толпы

Усиление основано на идее мудрости толпы, когда мнения достаточно большой группы могут быть более точными или сильными, чем мнение эксперта. Например, если вы находитесь на аукционе произведений искусства и пытаетесь доказать, что картина является подделкой, вы бы предпочли иметь 100 любителей искусства с вероятностью 60% правильно предсказать, настоящее ли произведение искусства, или одного эксперта с вероятностью 80%? . Это пример теоремы Кондорсе, где мы видим на этом графике, что мудрость толпы преобладает.

По мере увеличения размера вашей группы, даже если вероятность чуть выше случайного (50%) при достаточном количестве людей, решение группы, скорее всего, будет правильным. Вот почему у нас в жюри есть группа людей, а не один человек.

Повышение

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

Повышение градиента

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

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

Как это работает

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

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

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

Какое приложение лучше

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

Вывод

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