[Перевод] Да здравствует алгоритм XGBoost!

машинное обучение искусственный интеллект Программа перевода самородков алгоритм
[Перевод] Да здравствует алгоритм XGBoost!

Да здравствует алгоритм XGBoost!

Новая королева алгоритмов машинного обучения захватит мир...

(Эта статья иVenkat Anurag Settyзавершено вместе)

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

«Не волнуйтесь! Вам просто нужно понимать модели регрессии!»

Я подумал: «Понятно!» — я понимаю, линейная это регрессия или логистическая регрессия. Босс прав, во время моей работы я специализировался на построении статистических моделей на основе регрессии. Я не одинок, потому что в то время регрессионные модели были бесспорной королевой прогнозной аналитики. Спустя 15 лет эпоха возвращения к модели закончилась, и старая королева отреклась от престола. У новой королевы модное название: XGBoost или Extreme Gradient Boosting.


Что такое XGBoost?

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

Evolution of XGBoost Algorithm from Decision Trees

Алгоритм XGBoost был разработан Вашингтонским университетом в рамках научно-исследовательского проекта.Чен Тяньци и Карлос ГестринОпубликовали свою статью на SIGKDD 2016 и быстро привлекли внимание сообщества машинного обучения. С момента своего запуска XGBoost не только выиграл множество соревнований Kaggle, но и стал основой для некоторых ведущих отраслевых приложений. В результате было сформировано сильное сообщество специалистов по данным, которые в настоящее время вносят свой вклад в XGBoost.GitHubВ проекте XGBoost более 350 участников и более 3600 записей коммитов. Алгоритм XGBoost также выдающийся в следующих аспектах:

  1. Широкий спектр приложений: может использоваться для решения регрессии, классификации, сортировки и других определяемых пользователем задач прогнозирования;
  2. Портативность: без проблем работает в системах Windows, Linux и OS X;
  3. Язык: поддерживает все основные языки программирования, включая C++, Python, R, Java, Scala и Julia;
  4. Интеграция с облаком: поддерживает кластеры AWS, Azure, Yarn и без проблем работает с такими экосистемами, как Flink и Spark.

Как понять XGBoost интуитивно?

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

[rawpixel](https://unsplash.com/photos/cnseVhmbA7k?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText) 供图[Unsplash](https://unsplash.com/search/photos/interview?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText)

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

  1. Древо решений: У каждого HR есть набор критериев, таких как образование, годы работы, результаты собеседования и т. д. Дерево решений похоже на HR, отбирающий кандидатов на основе его критериев.

  2. Bagging: Допустим, теперь есть не один интервьюер, а группа интервьюеров, и каждый интервьюер в группе имеет право голоса. Бэггинг и Bootstrap — это процесс демократического голосования, в ходе которого для принятия окончательного решения объединяются мнения всех интервьюеров.

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

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

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

  6. XGBoost: Можно считать, что XGBoost — это «стимулированное» повышение градиента (отсюда и его полное название «Extreme Gradient Boosting» — экстремальное повышение градиента). Это идеальное сочетание методов оптимизации программного и аппаратного обеспечения для получения отличных результатов с меньшими вычислительными ресурсами в кратчайшие сроки.


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

И XGBoost, и Gradient Boosting Machines (GBM) являются методами ансамблевого дерева, и принцип заключается в использовании архитектуры градиентного спуска для нескольких слабых классификаторов (обычноCARTs) для повышения. Однако XGBoost улучшает структуру GBM за счет оптимизации системы и усиления алгоритмов.

XGBoost 是如何优化标准 GBM 算法的

Оптимизация системы:

  1. Распараллеливание: XGBoost пройденРаспараллеливаниеметод реализации последовательного процесса построения дерева. Это возможно благодаря взаимозаменяемости внутренней части базового обучающего цикла (включая внешний цикл для перебора листьев дерева и внутренний цикл для вычисления признаков); вложенность циклов ограничивает распараллеливание, т.к. новый внешний цикл не может можно начать без завершения двух более дорогих внутренних циклов. Алгоритм XGBoost инициализируется с использованием параллельных потоков для глобального сканирования и сортировки всех экземпляров, что делает порядок циклов коммутативным, сокращая время выполнения. При этом можно компенсировать накладные расходы на распараллеливание и повысить производительность алгоритма.

  2. обрезка деревьев: В структуре GBM критерий прекращения разделения дерева по своей сути является жадным и зависит от значения потери точки разделения. в то время как XGBoost используетmax_depthЭтот параметр, а не метрика, останавливает разделение и запускает обрезку дерева в обратном порядке. Такой подход «сначала в глубину» значительно повышает производительность вычислений.

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

Усовершенствования алгоритма:

  1. Регуляризация: XGBoost проходит как LASSO (L1), так и Ridge (L2)РегуляризацияНакажите слишком сложные модели, чтобы избежать переобучения.

  2. Осведомленность о разреженности: XGBoost автоматически «узнает» пропущенные значения во входных данных на основе потерь при обучении, таким образом, естественным образом получая разреженные функции и обрабатывая различныешаблоны разреженностиДанные.

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

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


Where is the proof?

Мы используем Scikit-learnMake_Classificationdata, создал случайный набор выборок из 1 миллиона точек данных, 20 признаков (в том числе 2 информативных и 2 избыточных) и использовал его для тестирования нескольких алгоритмов: логистической регрессии, случайного леса, стандартного повышения градиента и XGBoost.

XGBoost vs. Other ML Algorithms using SKLearn’s Make_Classification Dataset

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

«Когда вы нерешительны, используйте XGBoost» ——AvitoПо словам Оуэна Чжана, победителя конкурса Kaggle Contextual Ad Click Prediction Contest.


Можем ли мы использовать XGBoost в любой ситуации?

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


Каким будет будущее?

Машинное обучение — очень активная область исследований, и появились различные варианты XGBoost. Microsoft Research недавно предложилаLightGBMФреймворк повышения градиента показывает большой потенциал. Технологии Яндекса разработаныCatBoost, с впечатляющими результатами тестов. Это только вопрос времени, когда появится платформа, которая превзойдет XGBoost по производительности прогнозирования, гибкости, интерпретируемости и полезности. Однако до тех пор, пока не появится этот более сильный соперник, XGBoost продолжит править миром машинного обучения!


Пожалуйста, оставьте свои комментарии ниже. Спасибо Венкату Анурагу Сетти за соавторство в этой статье.

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


Программа перевода самородковэто сообщество, которое переводит высококачественные технические статьи из Интернета сНаггетсДелитесь статьями на английском языке на . Охват контентаAndroid,iOS,внешний интерфейс,задняя часть,блокчейн,продукт,дизайн,искусственный интеллектЕсли вы хотите видеть более качественные переводы, пожалуйста, продолжайте обращать вниманиеПрограмма перевода самородков,официальный Вейбо,Знай колонку.