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

XGBoost

XGBoost — это очень гибкий, переносимый и эффективный алгоритм, основанный на дереве решений для ансамблевого обучения для машинного обучения, в котором используется распределенная структура повышения градиента. Алгоритмы машинного обучения реализованы с помощью XGBoost в рамках бустинга Gradient. XGBoost способен точно решать проблемы науки о данных за короткое время с помощью параллельного повышения дерева, которое также называется Gradient Boosting Machine (GBM), Gradient Boosting Decision Trees (GBDT). Он чрезвычайно переносим и кросс-платформен, так что один и тот же код может выполняться в различных основных распределенных средах, таких как Hadoop, MPI и SGE, и позволяет решать проблемы с более чем миллиардами примеров.

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

Прежде всего, если мы разберем само название, XGBoost означает eXtreme Gradient Boosting. Он был создан Tianqi Chen и Carlos Guestrin в Вашингтонском университете в 2014 году. Со временем многочисленные разработчики внесли свой вклад в эту библиотеку с открытым исходным кодом, создав основу для ряда языков программирования, таких как Python, R, C++, Java, Julia, Perl и Scala, для всех основных операционных систем, таких как Windows, Linux и другие. макОС. Он начинался как исследовательский проект для группы сообщества распределенного (глубокого) машинного обучения и с годами стал предпочтительным алгоритмом для команд, участвующих в соревнованиях по машинному обучению.

Чтобы получить представление о широком использовании XG Boost, согласно блогу Kaggle, среди победивших решений в конкурсе Kaggle Competition 17 из 29 победивших решений использовали XGBoost. 8 из них полностью использовали XGBoost для обучения модели, а другие объединяли XGBoost в ансамбле с нейронной сетью. По сравнению со вторым по популярности методом глубокой нейронной сети его использовали только 11 решений. Только представьте разницу между решениями 11 и 29, использующими XGBoost, по сравнению со вторым наиболее часто используемым подходом. Это демонстрирует эффективность XGBoost и его превосходные возможности вывода.

Понимание основы XGBoost по аналогии с реальным миром

Давайте интуитивно разберемся с XG Boost. Для этого мы возьмем серию примеров, используя выборы в США в качестве аналогии, чтобы понять основные концепции, лежащие в основе XGBoost.

Древо решений

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

Бэггинг (объединение Bootstrap)

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

Случайный лес

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

Повышение

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

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

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

XGBoost

Вы видите X в XGBoost, верно? Это буквально означает экстремальное повышение градиента; в основном, Gradient Boosting, но все закручено в стероидах; таким образом, вызывая Extreme Gradient Boosting по какой-то причине. XGBoost помогает значительно снизить количество ошибок и в то же время требует минимального количества вычислительных ресурсов в кратчайшие сроки благодаря этому прекрасному комбинированному подходу к методам оптимизации как программного, так и аппаратного обеспечения.

ансамблевое обучение

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

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

Методы ансамбля в машинном обучении

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

Почему XGBoost так хорош?

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

XGBoost наказывает за переоснащение методами регуляризации L1 и L2, то есть регрессией лассо и регрессией гребня. Он также может обрабатывать отсутствующие значения, что является одним из основных недостатков большинства других алгоритмов. Эта осведомленность о разреженности также помогает ему превзойти другие алгоритмы. Кроме того, развертывание распределенного взвешенного алгоритма Quantile Sketch помогает в эффективном расчете предложений для оптимальных точек разделения в наборах данных. Кроме того, отсутствует требование о специальном объявлении количества итераций повышения, поскольку об этом позаботится перекрестная проверка, встроенная в алгоритм. Эти многочисленные подходы в XG Boost помогают ему выделиться алгоритмически.

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

Читайте полную статью в Уголке C#: