Повышение — это метод ансамблевого обучения, который объединяет прогнозы нескольких слабых учеников для повышения общей точности модели. Существует несколько типов алгоритмов бустинга, наиболее популярными из которых являются:
AdaBoost (адаптивное повышение)
AdaBoost (сокращение от Adaptive Boosting) — популярный алгоритм повышения, используемый в машинном обучении для повышения точности прогностической модели. Первоначально он был предложен Йоавом Фройндом и Робертом Шапиром в 1996 году.
Идея AdaBoost состоит в том, чтобы итеративно обучать слабого ученика на разных подмножествах обучающих данных. Каждое подмножество взвешивается на основе ошибок, допущенных предыдущим учеником. Окончательная модель представляет собой ансамбль этих слабых учеников.
Алгоритм работы следующий:
- Инициализируйте веса для каждого обучающего примера, чтобы они были равными.
- Обучите слабого ученика (например, дерево решений с глубиной 1) на обучающих данных.
- Вычислите взвешенную ошибку слабого ученика на обучающих данных.
- Обновите веса обучающих примеров. Примеры, которые были неправильно классифицированы слабым учеником, получают больший вес, в то время как примеры, которые были классифицированы правильно, получают меньший вес.
- Повторяйте шаги 2–4 для указанного количества итераций или до тех пор, пока частота ошибок не станет приемлемой.
- Объедините слабых учеников в окончательную модель, используя взвешенное голосование.
Интуиция, лежащая в основе AdaBoost, заключается в том, что каждый слабый ученик сосредотачивается на примерах, которые ранее были неправильно классифицированы предыдущими учениками, постепенно улучшая общую производительность модели. Окончательная модель представляет собой взвешенную комбинацию этих слабых учащихся с весами, присвоенными на основе их индивидуальных результатов.
Известно, что AdaBoost устойчив к переоснащению и может использоваться как для задач классификации, так и для задач регрессии. Однако он может быть чувствителен к зашумленным данным и выбросам и может потребовать настройки своих гиперпараметров (например, количества итераций и скорости обучения).
Повышение градиента
Gradient Boosting — это популярный алгоритм машинного обучения, используемый для повышения точности прогностической модели. Впервые он был предложен Джеромом Фридманом в 1999 году.
Идея Gradient Boosting состоит в том, чтобы итеративно добавлять в модель слабых учеников, при этом каждый ученик пытается исправить ошибки предыдущего ученика. Алгоритм оптимизирует функцию потерь, которая измеряет разницу между прогнозируемыми значениями и фактическими значениями.
Алгоритм работы следующий:
- Инициализируйте модель с постоянным значением, таким как среднее значение целевой переменной.
- Обучите слабого ученика (например, дерево решений с небольшой глубиной) на обучающих данных, используя отрицательный градиент функции потерь в качестве целевой переменной.
- Вычислите прогнозы слабого ученика.
- Обновите модель, добавив прогнозы слабого ученика, взвешенные по скорости обучения (которая контролирует вклад каждого ученика в окончательную модель).
- Повторяйте шаги 2–4 для указанного количества итераций или до тех пор, пока частота ошибок не станет приемлемой.
- Объедините слабых учеников в окончательную модель, используя взвешенное голосование.
Интуиция, лежащая в основе Gradient Boosting, заключается в том, что каждый слабый ученик сосредотачивается на примерах, которые ранее были неправильно классифицированы предыдущими учениками, постепенно улучшая общую производительность модели. Окончательная модель представляет собой взвешенную комбинацию этих слабых учащихся с весами, присвоенными на основе их индивидуальных результатов.
Известно, что Gradient Boosting очень эффективен для многих типов задач, включая задачи регрессии и классификации. Он устойчив к зашумленным данным и выбросам и может обрабатывать самые разные типы входных данных. Однако он может быть чувствителен к переобучению и может потребовать настройки своих гиперпараметров (например, количества итераций, скорости обучения и глубины деревьев решений).
XGBoost
XGBoost (сокращение от «Extreme Gradient Boosting») — это вариант Gradient Boosting, впервые предложенный Тяньци Ченом в 2016 году. Он предназначен для обработки больших наборов данных и может использоваться как для задач классификации, так и для регрессии.
Ключевые отличия XGBoost от традиционного повышения градиента:
- XGBoost использует более эффективный древовидный алгоритм, который поддерживает параллельную обработку, что делает его быстрее, чем традиционное повышение градиента.
- XGBoost включает методы регуляризации для предотвращения чрезмерной подгонки, такие как регуляризация L1 и L2, а также метод под названием «обрезка дерева», который удаляет части дерева, не влияющие на общую производительность.
- XGBoost включает встроенную поддержку отсутствующих данных, что позволяет обрабатывать отсутствующие значения во входных данных.
Алгоритм работы следующий:
- Инициализируйте модель с постоянным значением, таким как среднее значение целевой переменной.
- Обучите слабого ученика (например, дерево решений с небольшой глубиной) на обучающих данных, используя отрицательный градиент функции потерь в качестве целевой переменной.
- Вычислите прогнозы слабого ученика.
- Обновите модель, добавив прогнозы слабого учащегося, взвешенные по скорости обучения (которая контролирует вклад каждого учащегося в окончательную модель) и регуляризованные с помощью регуляризации L1 и L2.
- Повторяйте шаги 2–4 для указанного количества итераций или до тех пор, пока частота ошибок не станет приемлемой.
- Объедините слабых учеников в окончательную модель, используя взвешенное голосование.
Известно, что XGBoost очень эффективен для больших наборов данных и может обрабатывать самые разные типы входных данных. Он также устойчив к зашумленным данным и выбросам и может автоматически обрабатывать пропущенные значения. Однако он может быть чувствителен к переоснащению и может потребовать настройки своих гиперпараметров (например, количества итераций, скорости обучения и глубины деревьев решений).
СветGBM
LightGBM (сокращение от «Light Gradient Boosting Machine») — это платформа для повышения градиента, разработанная Microsoft. Впервые он был предложен Гуолином Ке в 2017 году и разработан, чтобы быть быстрее и эффективнее, чем традиционные алгоритмы повышения градиента.
Основные отличия LightGBM от традиционных алгоритмов повышения градиента:
- LightGBM использует новый алгоритм на основе дерева под названием «Односторонняя выборка на основе градиента» (GOSS), который уменьшает количество точек данных, используемых для обучения каждого дерева. Это снижает вычислительную сложность и требования к памяти алгоритма.
- LightGBM использует другой алгоритм под названием «Эксклюзивное объединение функций» (EFB), который объединяет функции с похожими значениями, чтобы уменьшить количество уникальных значений функций. Это может дополнительно снизить вычислительную сложность и повысить точность алгоритма.
- LightGBM поддерживает параллельную обработку, что позволяет использовать несколько ядер ЦП для более быстрого обучения модели.
Алгоритм работы следующий:
- Инициализируйте модель с постоянным значением, таким как среднее значение целевой переменной.
- Обучите слабого ученика (например, дерево решений с небольшой глубиной) на обучающих данных, используя подмножество данных и функций, выбранных с помощью GOSS и EFB.
- Вычислите прогнозы слабого ученика.
- Обновите модель, добавив прогнозы слабого учащегося, взвешенные по скорости обучения (которая контролирует вклад каждого учащегося в окончательную модель) и регуляризованные с помощью регуляризации L1 и L2.
- Повторяйте шаги 2–4 для указанного количества итераций или до тех пор, пока частота ошибок не станет приемлемой.
- Объедините слабых учеников в окончательную модель, используя взвешенное голосование.
Известно, что LightGBM очень быстр и эффективен и может обрабатывать большие наборы данных со многими функциями. Он также устойчив к зашумленным данным и выбросам и может автоматически обрабатывать пропущенные значения. Однако он может быть чувствителен к переоснащению и может потребовать настройки своих гиперпараметров (например, количества итераций, скорости обучения, глубины деревьев решений и частоты дискретизации).
CatBoost
CatBoost — это фреймворк для повышения градиента, разработанный Яндексом, российской транснациональной технологической компанией. Впервые он был выпущен в 2017 году и предназначен для более эффективной обработки категорийных данных, чем традиционные алгоритмы повышения градиента.
Основные отличия CatBoost от традиционных алгоритмов повышения градиента:
- CatBoost может обрабатывать категориальные функции напрямую, без необходимости быстрого кодирования или других методов предварительной обработки. Он использует алгоритм под названием «Упорядоченное повышение», который может обрабатывать категориальные функции со многими уровнями.
- CatBoost включает встроенную технику под названием «Односторонняя выборка на основе градиента» (GOSS), которая уменьшает количество точек данных, используемых для обучения каждого дерева. Это снижает вычислительную сложность и требования к памяти алгоритма.
- CatBoost включает встроенную поддержку отсутствующих данных, что позволяет обрабатывать отсутствующие значения во входных данных.
- CatBoost включает в себя несколько методов регуляризации для предотвращения переоснащения, таких как регуляризация L1 и L2, а также метод под названием «Расчет важности функций», который удаляет функции, не влияющие на общую производительность.
Алгоритм работы следующий:
- Инициализируйте модель с постоянным значением, таким как среднее значение целевой переменной.
- Обучите слабого ученика (например, дерево решений с небольшой глубиной) на обучающих данных, используя подмножество данных и функций, выбранных с помощью GOSS и расчета важности функций.
- Вычислите прогнозы слабого ученика.
- Обновите модель, добавив прогнозы слабого учащегося, взвешенные по скорости обучения (которая контролирует вклад каждого учащегося в окончательную модель) и регуляризованные с помощью регуляризации L1 и L2.
- Повторяйте шаги 2–4 для указанного количества итераций или до тех пор, пока частота ошибок не станет приемлемой.
- Объедините слабых учеников в окончательную модель, используя взвешенное голосование.
Известно, что CatBoost очень эффективен для категориальных данных и может обрабатывать самые разные типы входных данных. Он также устойчив к зашумленным данным и выбросам и может автоматически обрабатывать пропущенные значения. Однако он может быть чувствителен к переобучению и может потребовать настройки своих гиперпараметров (например, количества итераций, скорости обучения, глубины деревьев решений и параметров регуляризации).
Каждый из этих алгоритмов имеет свои сильные и слабые стороны, и выбор алгоритма зависит от конкретных требований решаемой задачи.