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

AdaBoost (адаптивное повышение)

AdaBoost (сокращение от Adaptive Boosting) — популярный алгоритм повышения, используемый в машинном обучении для повышения точности прогностической модели. Первоначально он был предложен Йоавом Фройндом и Робертом Шапиром в 1996 году.

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

Алгоритм работы следующий:

  1. Инициализируйте веса для каждого обучающего примера, чтобы они были равными.
  2. Обучите слабого ученика (например, дерево решений с глубиной 1) на обучающих данных.
  3. Вычислите взвешенную ошибку слабого ученика на обучающих данных.
  4. Обновите веса обучающих примеров. Примеры, которые были неправильно классифицированы слабым учеником, получают больший вес, в то время как примеры, которые были классифицированы правильно, получают меньший вес.
  5. Повторяйте шаги 2–4 для указанного количества итераций или до тех пор, пока частота ошибок не станет приемлемой.
  6. Объедините слабых учеников в окончательную модель, используя взвешенное голосование.

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

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

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

Gradient Boosting — это популярный алгоритм машинного обучения, используемый для повышения точности прогностической модели. Впервые он был предложен Джеромом Фридманом в 1999 году.

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

Алгоритм работы следующий:

  1. Инициализируйте модель с постоянным значением, таким как среднее значение целевой переменной.
  2. Обучите слабого ученика (например, дерево решений с небольшой глубиной) на обучающих данных, используя отрицательный градиент функции потерь в качестве целевой переменной.
  3. Вычислите прогнозы слабого ученика.
  4. Обновите модель, добавив прогнозы слабого ученика, взвешенные по скорости обучения (которая контролирует вклад каждого ученика в окончательную модель).
  5. Повторяйте шаги 2–4 для указанного количества итераций или до тех пор, пока частота ошибок не станет приемлемой.
  6. Объедините слабых учеников в окончательную модель, используя взвешенное голосование.

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

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

XGBoost

XGBoost (сокращение от «Extreme Gradient Boosting») — это вариант Gradient Boosting, впервые предложенный Тяньци Ченом в 2016 году. Он предназначен для обработки больших наборов данных и может использоваться как для задач классификации, так и для регрессии.

Ключевые отличия XGBoost от традиционного повышения градиента:

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

Алгоритм работы следующий:

  1. Инициализируйте модель с постоянным значением, таким как среднее значение целевой переменной.
  2. Обучите слабого ученика (например, дерево решений с небольшой глубиной) на обучающих данных, используя отрицательный градиент функции потерь в качестве целевой переменной.
  3. Вычислите прогнозы слабого ученика.
  4. Обновите модель, добавив прогнозы слабого учащегося, взвешенные по скорости обучения (которая контролирует вклад каждого учащегося в окончательную модель) и регуляризованные с помощью регуляризации L1 и L2.
  5. Повторяйте шаги 2–4 для указанного количества итераций или до тех пор, пока частота ошибок не станет приемлемой.
  6. Объедините слабых учеников в окончательную модель, используя взвешенное голосование.

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

СветGBM

LightGBM (сокращение от «Light Gradient Boosting Machine») — это платформа для повышения градиента, разработанная Microsoft. Впервые он был предложен Гуолином Ке в 2017 году и разработан, чтобы быть быстрее и эффективнее, чем традиционные алгоритмы повышения градиента.

Основные отличия LightGBM от традиционных алгоритмов повышения градиента:

  1. LightGBM использует новый алгоритм на основе дерева под названием «Односторонняя выборка на основе градиента» (GOSS), который уменьшает количество точек данных, используемых для обучения каждого дерева. Это снижает вычислительную сложность и требования к памяти алгоритма.
  2. LightGBM использует другой алгоритм под названием «Эксклюзивное объединение функций» (EFB), который объединяет функции с похожими значениями, чтобы уменьшить количество уникальных значений функций. Это может дополнительно снизить вычислительную сложность и повысить точность алгоритма.
  3. LightGBM поддерживает параллельную обработку, что позволяет использовать несколько ядер ЦП для более быстрого обучения модели.

Алгоритм работы следующий:

  1. Инициализируйте модель с постоянным значением, таким как среднее значение целевой переменной.
  2. Обучите слабого ученика (например, дерево решений с небольшой глубиной) на обучающих данных, используя подмножество данных и функций, выбранных с помощью GOSS и EFB.
  3. Вычислите прогнозы слабого ученика.
  4. Обновите модель, добавив прогнозы слабого учащегося, взвешенные по скорости обучения (которая контролирует вклад каждого учащегося в окончательную модель) и регуляризованные с помощью регуляризации L1 и L2.
  5. Повторяйте шаги 2–4 для указанного количества итераций или до тех пор, пока частота ошибок не станет приемлемой.
  6. Объедините слабых учеников в окончательную модель, используя взвешенное голосование.

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

CatBoost

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

Основные отличия CatBoost от традиционных алгоритмов повышения градиента:

  1. CatBoost может обрабатывать категориальные функции напрямую, без необходимости быстрого кодирования или других методов предварительной обработки. Он использует алгоритм под названием «Упорядоченное повышение», который может обрабатывать категориальные функции со многими уровнями.
  2. CatBoost включает встроенную технику под названием «Односторонняя выборка на основе градиента» (GOSS), которая уменьшает количество точек данных, используемых для обучения каждого дерева. Это снижает вычислительную сложность и требования к памяти алгоритма.
  3. CatBoost включает встроенную поддержку отсутствующих данных, что позволяет обрабатывать отсутствующие значения во входных данных.
  4. CatBoost включает в себя несколько методов регуляризации для предотвращения переоснащения, таких как регуляризация L1 и L2, а также метод под названием «Расчет важности функций», который удаляет функции, не влияющие на общую производительность.

Алгоритм работы следующий:

  1. Инициализируйте модель с постоянным значением, таким как среднее значение целевой переменной.
  2. Обучите слабого ученика (например, дерево решений с небольшой глубиной) на обучающих данных, используя подмножество данных и функций, выбранных с помощью GOSS и расчета важности функций.
  3. Вычислите прогнозы слабого ученика.
  4. Обновите модель, добавив прогнозы слабого учащегося, взвешенные по скорости обучения (которая контролирует вклад каждого учащегося в окончательную модель) и регуляризованные с помощью регуляризации L1 и L2.
  5. Повторяйте шаги 2–4 для указанного количества итераций или до тех пор, пока частота ошибок не станет приемлемой.
  6. Объедините слабых учеников в окончательную модель, используя взвешенное голосование.

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

Каждый из этих алгоритмов имеет свои сильные и слабые стороны, и выбор алгоритма зависит от конкретных требований решаемой задачи.