стекинг, бэггинг, бустинг / Хабр
Что такое ансамбли моделей?
Из названия можно догадаться, что ансамбль — это просто несколько алгоритмов машинного обучения, собранных в единое целое. Такой подход часто используется для того, чтобы усилить «положительные качества» отдельно взятых алгоритмов, которые сами по себе могут работать слабо, а вот в группе — ансамбле давать хороший результат. При использовании ансамблевых методов алгоритмы учатся одновременно и могут исправлять ошибки друг друга. Типичными примерами методов, направленных на объединение «слабых» учеников в группу сильных являются (рис. 1):
Стекинг. Могут рассматриваться разнородные отдельно взятые модели. Существует мета-модель, которой на вход подаются базовые модели, а выходом является итоговый прогноз.
Бэггинг. Рассматриваются однородные модели, которые обучаются независимо и параллельно, а затем их результаты просто усредняются. Ярким представителем данного метода является случайный лес.
Бустинг. Рассматриваются однородные модели, которые обучаются последовательно, причем последующая модель должна исправлять ошибки предыдущей. Конечно, в качестве примера здесь сразу приходит на ум градиентный бустинг.
Три этих способа и будут детальнее рассмотрены далее.
Стекинг
Из трех вариантов стекинг является наименее популярным. Это можно проследить и по числу готовых реализаций данного метода в программных библиотеках. В том же sklearn.ensemble в python куда чаше используют AdaBoost, Bagging, GradientBoosting, чем тот же самый Stacking (хотя его реализация там тоже есть).
Стекинг выделяется двумя основными чертами: он может объединить в себе алгоритмы разной природы в качестве базовых. Например, взять метод опорных векторов (SVM), k-ближайших соседей (KNN) в качестве базовых и на основе их результатов обучить логистическую регрессию для классификации. Также стоит отметить непредсказуемость работы метамодели. Если в случае бэггинга и бустинга существует достаточно четкий и конкретный ансамблевый алгоритм (увидим далее), то здесь метамодель может с течением времени по-разному обучаться на входных данных.
Алгоритм обучения выглядит следующим образом (рис. 2):
Делим выборку на k фолдов (тот же смысл, что и в кросс-валидации).
Для объекта из выборки, который находится в k-ом фолде, делается предсказание слабыми алгоритмами, которые были обучены на k-1 фолдах. Этот процесс итеративен и происходит для каждого фолда.
Создается набор прогнозов слабых алгоритмов для каждого объекта выборки.
На сформированных низкоуровневыми алгоритмами прогнозах в итоге обучается метамодель.
Рисунок 2
Ссылки на библиотеки для использования метода приведены ниже:
Классификатор
Регрессия
Бэггинг
Бэггинг является уже более популярным подходом и зачастую при упоминании этого термина вспоминается алгоритм построения случайного леса, как наиболее типичного его представителя.
При данном методе базовые алгоритмы являются представителями одного и того же семейства, они обучаются параллельно и почти независимо друг от друга, а финальные результаты лишь агрегируются. Нам необходимо, чтобы на вход слабым алгоритмам подавались разные данные, а не один и тот же набор, ведь тогда результат базовых моделей будет идентичен и смысла в них не будет.
Для того, чтобы понять, каким образом исходный датасет делится для формирования входных выборок для слабых алгоритмов, используется понятие бутстрэпа. При использовании бутстрэпа из исходной выборки берется один случайный элемент, записывается в обучающую выборку, затем возвращается обратно. Так делается n раз, где n — желаемый размер обучающей выборки. Существует правило, что в обучающей выборке в итоге будет ~ 0.632*n разных объектов. Таким образом, должны сформироваться m обучающих выборок для m слабых алгоритмов.
Бутстрэп выборки являются в значительной степени независимыми. Отчасти поэтому и говорят, что базовые алгоритмы обучаются на выборках независимо.
Что касается агрегации выходов базовых алгоритмов, то в случае задачи классификации зачастую просто выбирается наиболее часто встречающийся класс, а в случае задачи регрессии выходы алгоритмов усредняются (рис. 3). В формуле под ai подразумеваются выходы базовых алгоритмов.
Рисунок 3Общий процесс приведен на рисунке ниже (рис. 4):
Рисунок 4Случайный лес
Бэггинг направлен на уменьшение разброса (дисперсии) в данных, и зачастую данный прием предстает в виде алгоритма случайного леса, где слабые модели — это довольно глубокие случайные деревья. Однако, при построении случайного леса используется еще один прием, такой как метод случайных подпространств. Мало того, что благодаря бутсрэпу выбираются некоторые объекты нашего датасета, так еще и выбирается случайное подмножество признаков. В итоге, наша условная матрица признаков уменьшается как по строкам, так и столбцам (рис. 5). Это помогает действительно снизить корреляцию между слабыми учениками.
Ссылки на библиотеки для использования метода приведены ниже:
Классификация
Регрессия
Бустинг
В данном случае, модели уже не обучаются отдельно друг от друга, а каждая следующая правит ошибки предыдущей. То есть можно сказать, что если один слабый алгоритм не смог выявить какую-либо закономерность в данных, так как это было для него сложно, то следующая модель должна сделать это. Но из данного подхода вытекает недостаток: работу алгоритма трудно распараллелить из-за зависимости предыдущего и последующего шагов.
Бустинг направлен скорее на уменьшение смещения в данных, чем на снижение разброса в них. Поэтому в качестве базовых алгоритмов могут браться модели с достаточно высоким смещением, например, неглубокие случайные деревья.
Рисунок 6Типичными представителями бустинга являются две модели: градиентный бустинг и AdaBoost. Обе по-разному решают одну и ту же оптимизационную задачу по поиску итоговой модели, представляющей собой взвешенную сумму слабых алгоритмов (рис. 6).
Градиентный бустинг использует типичный алгоритм градиентного спуска для решения задачи. Когда приходит время добавить новый слабый алгоритм в ансамбль делается следующее:
Находится оптимальный вектор сдвига, улучшающий предыдущий ансамбль алгоритмов.
Этот вектор сдвига является антиградиентом от функции ошибок работы предыдущего ансамбля моделей
Благодаря вектору сдвигов мы знаем, какие значения должны принимать объекты обучающей выборки
А поскольку нам надо найти очередной алгоритм в композиции, то находим тот, при использовании которого минимизируется отклонение ответов от истинных
Градиентный бустинг — это в своем роде обобщение AdaBoost, поэтому, возможно, зачастую его и изучают первым. На самом деле, два данных алгоритма следует рассматривать куда подробнее, выделяя отдельную статью.
Ссылки на библиотеки для использования метода приведены ниже:
Классификация градиентным бустингом, классификация AdaBoost-ом
Регрессия градиентным бустингом, регрессия AdaBoost-ом
Заключение
Таким образом, мы увидели, что для того, чтобы улучшить качество функционирования отдельно взятых моделей машинного обучения, существует ряд техник их объединения в ансамбли. Эти техники уже заложены в программные продукты и ими можно пользоваться, улучшая свое решение. Однако, с моей точки зрения, при решении задачи не стоит сразу же браться за них. Лучше сначала попробовать одну простую, отдельную модель, понять, как она функционирует на конкретных данных, а уже дальше использовать ансамбли.
Ансамбли в машинном обучении
Представим, что у вас есть несколько моделей, обученных на ваших данных. Можно ли придумать процедуру, которая позволит использовать все имеющиеся модели и при этом получить на тестовых данных качество выше, чем могла показать каждая из этих моделей в отдельности?
Некоторые картинки в тексте кликабельны. Это означает, что они были заимствованы из какого-то источника, и при клике вы сможете перейти к этому источнику.
Смещение и разброс
Предположим, что мы решаем задачу регрессии с квадратичной функцией потерь. При использовании квадратичной функции потерь для оценки качества работы алгоритма $a$ можно использовать следующий функционал:
$$Q(a) = \mathbb{E}_x \mathbb{E}_{X, \epsilon} [y(x, \epsilon) — a(x, X)]^2,$$
где
Для $Q(a)$ существует разложение на три компоненты — шум, смещение и разброс. 2
$$
- неустранимый шум в данных.
Раз нам известно, что ошибка алгоритма раскладывается на шум, смещение и разброс, можно подумать над способом сократить ошибку. Будет разумно попытаться сначала уменьшить одну из составляющих. Понятно, что с шумом уже ничего не сделать — это минимально возможная ошибка. Какую можно придумать процедуру, чтобы, например, сократить разброс, не увеличивая смещение?
Пример приходит из жизни древних греков. Если много древних греков соберутся на одном холме и проголосуют независимо друг от друга, то вместе они придут к разумному решению несмотря на то, что опыт каждого из них субъективен. Аналогом голосования в мире машинного обучения является бэггинг.
Бэггинг
Идея бэггинга (bagging

$$a(x) = \frac{1}{k}(b_1(x) + \dots + b_k(x)).$$
Процесс генерации подвыборок с помощью семплирования с возвращением называется бутстрепом (bootstrap), а модели $b_1(x), \ldots, b_k(x)$ часто называют базовыми алгоритмами (хотя, наверное, лучше было бы назвать их базовыми моделями). Модель $a(x)$ называется ансамблем этих моделей.
Посмотрим, что происходит с качеством предсказания при переходе от одной модели к ансамблю. Сначала убедимся, что смещение ансамбля не изменилось по сравнению со средним смещением отдельных моделей. Будем считать, что когда мы берём матожидание по всем обучающим выборкам $X$, то в эти выборки включены также все подвыборки, полученные бутстрепом.
$$ \color{#348FEA}{\text{bias}_X a(x, X) =} f(x) — \mathbb{E}_X[a(x, X)] = f(x) — \mathbb{E}_X \left[ \frac{1}{k} \sum_{i = 1}^k b(x, X^i) \right] = $$
$$ = f(x) — \frac{1}{k} \sum_{i = 1}^k \mathbb{E}_X \left[ b(x, X^i) \right] = f(x) — \frac{1}{k} \sum_{i = 1}^k \mathbb{E}_X \left[ b(x, X) \right] = f(x) — \mathbb{E}_X b(x, X) $$
$$ = f(x) — \mathbb{E}_X b(x, X) \color{#348FEA}{= \text{bias}_X b(x, X)} $$
Получили, что смещение композиции равно смещению одного алгоритма. k \mathbb{V}_X b(x, X) \color{#348FEA}{= \frac{1}{k} \mathbb{V}_X b(x, X)}
$$
Получилось, что в этом случае дисперсия композиции в $k$ раз меньше дисперсии отдельного алгоритма.
Пример: бэггинг над решающими деревьями
Пусть наша целевая зависимость $f(x)$ задаётся как
$$ f(x) = x \sin x, $$
и к ней добавляется нормальный шум $\epsilon \sim \mathcal{N}(0, 9)$. Пример семпла из таких данных:
Попробуем посмотреть, как выглядят предсказания решающих деревьев глубины 7 и бэггинга над такими деревьями в зависимости от обучающей выборки. Обучим решающие деревья 100 раз на различных случайных семплах размера 20. Возьмём также бэггинг над 10 решающими деревьями глубины 7 в качестве базовых классификаторов и тоже 100 раз обучим его на случайных выборках размера 20. Если изобразить предсказания обученных моделей на каждой из 100 итераций, то можно увидеть примерно такую картину:
По этому рисунку видно, что общая дисперсия предсказаний в зависимости от обучающего множества у бэггинга значительно ниже, чем у отдельных деревьев, а в среднем предсказания деревьев и бэггинга не отличаются.
Чтобы подтвердить это наблюдение, мы можем изобразить смещение и разброс случайных деревьев и бэггинга в зависимости от максимальной глубины:
На графике видно, как значительно бэггинг сократил дисперсию. На самом деле, дисперсия уменьшилась практически в 10 раз, что равняется числу базовых алгоритмов ($k$), которые бэггинг использовал для предсказания:
Код для отрисовки картинок и подсчёта смещения и разброса можно найти в этом ноутбуке.
Random Forest
В предыдущем разделе мы сделали предположение, что базовые алгоритмы некоррелированы, и за счёт этого получили очень сильное уменьшение дисперсии у ансамбля относительно входящих в него базовых алгоритмов. Однако в реальной жизни добиться этого сложно: ведь базовые алгоритмы учили одну и ту же зависимость на пересекающихся выборках. Поэтому будет странно, если корреляция на самом деле нулевая. Но на практике оказывается, что строгое выполнение этого предположения не обязательно. i$ того же размера, что и $X$.
б. В процессе обучения каждого дерева в каждой вершине случайно выбираются $n < N$ признаков, где $N$ — полное число признаков (метод случайных подпространств), и среди них ищется оптимальный сплит. Такой приём как раз позволяет управлять степенью скоррелированности базовых алгоритмов.
Чтобы получить предсказание ансамбля на тестовом объекте, усредняем отдельные ответы деревьев (для регрессии) или берём самый популярный класс (для классификации).
Profit. Мы построили Random Forest (случайный лес) — комбинацию бэггинга и метода случайных подпространств над решающими деревьями.
Внимательный читатель мог заметить, что при построении случайного леса у специалиста по машинному обучению есть несколько степеней свободы. Давайте обсудим их подробнее.
Какая должна быть глубина деревьев в случайном лесе?
Ошибка модели (на которую мы можем повлиять) состоит из смещения и разброса. Разброс мы уменьшаем с помощью процедуры бэггинга. На смещение бэггинг не влияет, а хочется, чтобы у леса оно было небольшим. Поэтому смещение должно быть небольшим у самих деревьев, из которых строится ансамбль. У неглубоких деревьев малое число параметров, то есть дерево способно запомнить только верхнеуровневые статистики обучающей подвыборки. Они во всех подвыборках будут похожи, но будут не очень подробно описывать целевую зависимость. Поэтому при изменении обучающей подвыборки предсказание на тестовом объекте будет стабильным, но не точным (низкая дисперсия, высокое смещение). Наоборот, у глубоких деревьев нет проблем запомнить подвыборку подробно. Поэтому предсказание на тестовом объекте будет сильнее меняться в зависимости от обучающей подвыборки, зато в среднем будет близко к истине (высокая дисперсия, низкое смещение). Вывод: используем глубокие деревья.
Сколько признаков надо подавать дереву для обучения?
Ограничивая число признаков, которые используются в обучении одного дерева, мы также управляем качеством случайного леса.
Сколько должно быть деревьев в случайном лесе?
Выше было показано, что увеличение числа элементарных алгоритмов в ансамбле не меняет смещения и уменьшает разброс. Так как число признаков и варианты подвыборок, на которых строятся деревья в случайном лесе, ограничены, уменьшать разброс до бесконечности не получится. Поэтому имеет смысл построить график ошибки от числа деревьев и ограничить размер леса в тот момент, когда ошибка перестанет значимо уменьшаться.
Вторым практическим ограничением на количество деревьев может быть время работы ансамбля. Однако есть положительное свойство случайного леса: случайный лес можно строить и применять параллельно, что сокращает время работы, если у нас есть несколько процессоров.
Бустинг
Бустинг (boosting) — это ансамблевый метод, в котором так же, как и в методах выше, строится множество базовых алгоритмов из одного семейства, объединяющихся затем в более сильную модель. Отличие состоит в том, что в бэггинге и случайном лесе базовые алгоритмы учатся независимо и параллельно, а в бустинге — последовательно:
Каждый следующий базовый алгоритм в бустинге обучается так, чтобы уменьшить общую ошибку всех своих предшественников. Как следствие, итоговая композиция будет иметь меньшее смещение, чем каждый отдельный базовый алгоритм (хотя уменьшение разброса также может происходить). Поскольку основная цель бустинга — уменьшение смещения, в качестве базовых алгоритмов часто выбирают алгоритмы с высоким смещением и небольшим разбросом. Например, если в качестве базовых классификаторов выступают деревья, то их глубина должна быть небольшой — обычно не больше 2-3 уровней. Ещё одной важной причиной для выбора моделей с высоким смещением в качестве базовых является то, что такие модели, как правило, быстрее учатся. Это важно для их последовательного обучения, которое может стать очень дорогим по времени, если на каждой итерации будет учиться сложная модель. На текущий момент основным видом бустинга с точки зрения применения на практике является градиентный бустинг, о котором подробно рассказывается в соответствующей главе. Хотя случайный лес — мощный и достаточно простой для понимания и реализации алгоритм, на практике он чаще всего уступает градиентному бустингу. Поэтому градиентный бустинг сейчас — основное продакшн-решение, если работа происходит с табличными данными (в работе с однородными данными — картинками, текстами — доминируют нейросети).
Стекинг
Стекинг (stacking) — алгоритм ансамблирования, основные отличия которого от предыдущих состоят в следующем:
- он может использовать алгоритмы разного типа, а не только из какого-то фиксированного семейства.
- результаты базовых алгоритмов объединяются в один с помощью обучаемой мета-модели, а не с помощью какого-либо обычного способа агрегации (суммирования или усреднения)
Обучение стекинга проходит в несколько этапов:
- общая выборка разделяется на тренировочную и тестовую
- тренировочная выборка делится на $n$ фолдов. Затем эти фолды перебираются тем же способом, что используется при кросс-валидации: на каждом шаге фиксируются $(n — 1)$ фолдов для обучения базовых алгоритмов и один — для их предсказаний (вычисления мета-факторов). Такой подход нужен для того, чтобы можно было использовать всё тренировочное множество, и при этом базовые алгоритмы не переобучались
- на полученных мета-факторах обучается мета-модель. Кроме мета-факторов, она может принимать на вход и фичи из исходного датасета. Выбор зависит от решаемой задачи

Если данных достаточно много, то можно просто разделить обучающие данные на две непересекающиеся части: ту, на которой учатся базовые алгортимы, и ту, на которой они делают свои предсказания и обучается мета-модель. Использование такого простого разбиения вместо кросс-валидации на тренировочных данных иногда называют блендингом (blending). Если данных совсем много, то тестовое множество тоже можно разделить на две части: тестовую и валидационную, и использовать последнюю для подбора гиперпараметров моделей-участников 🙂
С точки зрения смещения и разброса стекинг не имеет прямой интерпретации, так как не минимизирует напрямую ни ту, ни другую компоненту ошибки. Удачно работающий стекинг просто уменьшает ошибку, и, как следствие, её компоненты тоже будут убывать.
Список литературы
- Лекция Евгения Соколова про bias-variance decomposition и бэггинг
- Блог-пост про ансамбли от Joseph Rocca
- Блог-пост про стекинг и блендинг от Steven Yu
Стекирование в машинном обучении — Javatpoint
следующий → ← предыдущая Существует множество способов объединения моделей в машинном обучении, таких как бэггинг, бустинг и суммирование. В этом разделе « Stacking in Machine Learning » мы обсудим несколько важных концепций, связанных со стеком, общую архитектуру стеков, важные ключевые моменты для реализации стеков и чем стеки отличаются от пакетов и повышения . в машинном обучении. Прежде чем приступить к этой теме, сначала разберитесь с концепциями ансамбля в машинном обучении. Итак, начнем с определения ансамблевого обучения в машинном обучении. Что такое ансамблевое обучение в машинном обучении? Ансамблевое обучение — это один из самых мощных методов машинного обучения, который использует комбинированный результат двух или более моделей/слабых учеников и решает конкретную задачу вычислительного интеллекта. Обучение ансамблю в основном используется для улучшения характеристик модели, таких как классификация, предсказание, аппроксимация функций и т. д. Проще говоря, мы можем резюмировать обучение ансамбля следующим образом: «Модель в ансамбле — это модель машинного обучения, которая объединяет прогнозы двух или более моделей». В машинном обучении есть 3 наиболее распространенных метода ансамблевого обучения. Это следующие:
Тем не менее, мы в основном будем обсуждать стекирование в этой теме. 1. Упаковка в мешкиБэггинг — это метод ансамблевого моделирования, который в основном используется для решения задач контролируемого машинного обучения. Как правило, он выполняется в два этапа следующим образом:
Пример: В методе случайного леса прогнозы из нескольких деревьев решений объединяются параллельно. Кроме того, в задачах регрессии мы используем среднее значение этих прогнозов, чтобы получить окончательный результат, тогда как в задачах классификации в качестве прогнозируемого класса выбирается модель. 2. Повышение Boosting — это ансамблевый метод, который позволяет каждому участнику учиться на ошибках предыдущего участника и делать более точные прогнозы на будущее. В отличие от метода бэггинга, при бустинге все базовые ученики (слабые) располагаются в последовательном формате, чтобы они могли учиться на ошибках предыдущего ученика. У нас есть базовое понимание методов ансамбля в машинном обучении и двух их распространенных методов, т. е. бэггинга и бустинга. Теперь давайте обсудим другую парадигму ансамблевого обучения, то есть суммирование. 3. ШтабелированиеСтекирование — один из популярных методов ансамблевого моделирования в машинном обучении. Различные слабые ученики объединены в ансамбль таким образом, что, объединяя их с Мета-учащимися, мы можем предсказывать лучшие прогнозы на будущее. Этот метод ансамбля работает, применяя входные данные комбинированных прогнозов нескольких слабых учеников и мета-обучающихся, чтобы можно было достичь лучшей выходной модели прогнозирования. При стекинге алгоритм принимает выходные данные подмоделей в качестве входных данных и пытается научиться наилучшим образом комбинировать входные прогнозы, чтобы получить лучший выходной прогноз. Stacking также известен как обобщение с накоплением и представляет собой расширенную форму метода ансамбля усреднения моделей, в котором все подмодели в равной степени участвуют в соответствии с их весовыми коэффициентами производительности и строят новую модель с лучшими прогнозами. Эта новая модель установлена поверх других; по этой причине это называется штабелированием. Архитектура стекирования Архитектура модели наложения разработана таким образом, что она состоит из двух или более базовых моделей/моделей обучаемого и метамодели, которая объединяет предсказания базовых моделей. Эти базовые модели называются моделями уровня 0, а метамодель известна как модель уровня 1. Таким образом, метод ансамблевого стекирования включает в себя исходных (обучающих) данных, модели первичного уровня, прогнозирование первичного уровня, модель вторичного уровня и 9 окончательного прогнозирования.0011 . Базовую архитектуру стекирования можно представить, как показано ниже на изображении.
Шаги по внедрению моделей стекирования:Есть несколько важных шагов для реализации моделей стекирования в машинном обучении. Это следующие:
Семейство штабелируемых комплектовСуществуют и другие методы ансамбля, которые можно считать предшественниками метода суммирования. Для лучшего понимания мы разделили их на различные рамки основного стека, чтобы мы могли легко понять различия между методами и уникальность каждой техники. Давайте обсудим несколько часто используемых ансамблевых методов, связанных со стекированием. Голосующих ансамблей: Это один из самых простых методов стекирования ансамбля, в котором используются разные алгоритмы для индивидуальной подготовки всех элементов. Это важно для решения задач регрессии, когда нам нужно предсказать среднее значение или медиану прогнозов на основе базовых моделей. Кроме того, это также полезно в различных задачах классификации в соответствии с общим количеством голосов, полученных за прогноз. Метка с большим количеством голосов называется жестким голосованием, тогда как метка, получившая наибольшую сумму вероятности или меньшее количество голосов, называется мягким голосованием. Ансамбль для голосования отличается от ансамбля стекирования взвешиванием моделей на основе производительности каждого члена, поскольку здесь считается, что все модели имеют одинаковый уровень навыков. Оценка участников: Предполагается, что в группе голосования все участники обладают одинаковыми навыками. Объединить с моделью: Вместо использования комбинированного прогноза от каждого члена он использует простую статистику для получения окончательного прогноза, например, среднего или медианы. Средневзвешенный ансамбль Ансамбль средневзвешенных значений считается следующим уровнем ансамбля голосования, в котором в качестве участников используется разнообразный набор типов моделей. Этот метод использует некоторые обучающие наборы данных, чтобы найти средний вес каждого члена ансамбля на основе их производительности. Улучшение по сравнению с этим наивным подходом заключается в том, чтобы взвешивать каждого члена на основе его производительности в наборе данных удержания, таком как набор проверки или предсказания вне сгиба во время перекрестной проверки k-кратного размера. Кроме того, это может также включать настройку весовых коэффициентов для каждой модели с использованием алгоритма оптимизации и производительности в наборе данных удержания. Оценка участников: В методе средневзвешенного ансамбля используется производительность участников на основе обучающего набора данных. Объединить с моделью: Учитывает средневзвешенное значение прогноза для каждого члена отдельно. Смесительный комплект:Смешивание — это аналогичный подход к укладке с определенной конфигурацией. Это считается методом суммирования, который использует k-кратную перекрестную проверку для подготовки прогнозов вне выборки для метамодели. В этом методе набор обучающих данных сначала разбивается на разные обучающие наборы и проверочные наборы, а затем мы обучаем модели учащихся на обучающих наборах. Кроме того, делаются прогнозы на проверочном наборе и наборе выборок, где проверочные прогнозы используются в качестве признаков для построения новой модели, которая позже используется для окончательных прогнозов на тестовом наборе с использованием значений прогноза в качестве признаков. Предсказания элементов: Ансамбль смешивания стекирования использует предсказания вне выборки в проверочном наборе. Комбинировать с моделью: Линейная модель (например, линейная регрессия или логистическая регрессия). Ансамбль суперучеников:Этот метод очень похож на смешивание, которое имеет определенную конфигурацию ансамбля наложения. Он использует нестандартные прогнозы моделей учащегося и готовит метамодель. Тем не менее, это считается модифицированной формой смешивания, которая отличается только выбором способа подготовки прогнозов вне выборки для мета-обучения. Краткий обзор ансамбля штабелирования Stacking — это ансамблевый метод, который позволяет модели научиться использовать комбинирование прогнозов, данных обучающимися моделями, с метамоделями и подготовить окончательную модель с точным прогнозом. Основное преимущество стекового ансамбля заключается в том, что он может защитить возможности ряда хорошо работающих моделей для решения задач классификации и регрессии. Кроме того, это помогает подготовить лучшую модель с лучшими прогнозами, чем все отдельные модели. Next TopicНаивный байесовский алгоритм дополнения (CNB) ← предыдущая следующий → |
Глубокое погружение в машинное обучение ансамбля стекирования — часть I | Грэм Харрисон
Как эффективно использовать стек в машинном обучении, полностью понимая, что такое стек и как он работает
Фото Тима Уайлдсмита на Unsplash на Kaggle и на других веб-сайтах, найденных с помощью поиска в сети.Из прочитанного и исследования стало ясно, что наложение может повысить точность алгоритмов прогнозирования и улучшить результаты таблицы лидеров на Kaggle, а также точность и влияние алгоритмов машинного обучения в реальном мире.
Основная проблема заключалась в том, что ничего из того, что я читал, не объясняло, что такое стекирование на самом деле или как оно работает. Другая проблема заключалась в том, что статьи, блоги, книги и документация были противоречивы в подробном объяснении и реализации стекирования.
Это оставило меня желать узнать больше, чтобы удовлетворить собственное любопытство, а также дать мне возможность узнать, когда стек как метод является подходящим, а когда его следует избегать.
Так начался период чтения и исследований, а также практических экспериментов с использованием Python и Jupyter Notebooks. Вот несколько наиболее полезных источников, которые я обнаружил в ходе расследования:
- Kaggle (https://www.kaggle.com/).
- Научный комплект
изучает документацию
(https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.StackingClassifier.html). - Различные учебные пособия в разделе «Мастерство машинного обучения» (https://machinelearningmastery.com/).
- Книга Абхисека Тхакура «Подход к (почти) любой проблеме машинного обучения» (https://www.amazon.co.uk/Approaching-Almost-Machine-Learning-Problem-ebook/dp/B089P13QHT).
Обзор
Следующий набор шагов является визуальным представлением того, что я нашел наиболее близким к общему мнению из всех различных источников, которые я изучил в отношении стекирования —
Шаг 1. Разделите данные на наборы данных для обучения и тестирования/проверки
Изображение автораПервый шаг заключается в визуализации и воспроизведении общего первого шага в машинном обучении. Данные обучения будут использоваться для построения модели стека, а данные тестирования/проверки будут храниться и использоваться для оценки производительности.
На диаграмме выше прямоугольник, представляющий данные, разделен на две части по вертикальной оси. Большой раздел представляет функции, а меньший раздел / столбец в конце представляет цель.
Шаг 2a: Обучение моделей уровня 0
Стекирование представляет собой двухуровневую модель. На этой диаграмме наглядно показано, что происходит на «Уровне 0», который является первой стадией.
Традиционным примером разработки признаков может быть создание нового столбца под названием «Пройденное расстояние» путем умножения двух ранее существовавших столбцов — «Скорость» и «Время». Возможно, разработка этой новой функции предоставляет релевантную информацию, которая повышает эффективность прогнозирования.
На этапе суммирования уровня 0 набор прогностических моделей используется для независимого прогнозирования значений цели с учетом исходных характеристик обучающего набора данных. Затем эти прогнозы добавляются к обучающим данным как новые функции.
Различные источники расходятся во мнениях о том, как работает этот этап. Абхишек Тхакур утверждает, что обучающие данные должны быть свернуты, чтобы генерировать прогнозы для новых функций, в то время как документация scikit-learn
утверждает обратное —
«Обратите внимание, что оценщики подходят для полного X» (https://scikit-learn.org/stable/modules/generated/sklearn.ensemble. StackingClassifier.html)
На практике я пробовал оба способа и использование подхода scikit-learn значительно повышает эффективность прогнозирования наборов данных, которые я использовал. Я также предпочитаю подход scikit-learn, так как он делает этап 4 более интуитивным.
Шаг 2b: Точная настройка для шага 2a
Последний вопрос, который необходимо рассмотреть, заключается в том, что именно использовать из моделей уровня 0 для преобразования обучающих данных, и существует несколько вариантов.
Первое решение состоит в том, следует ли полностью заменить существующие функции, чтобы обучающие данные состояли только из прогнозов модели уровня 0, или добавить новые функции к обучающим данным.
На приведенной выше диаграмме показаны прогнозы, добавленные к данным, и на практике я обнаружил, что сохранение исходных функций значительно повышает производительность завершенной модели стекирования.
Второе решение — какие именно данные использовать в столбцах предсказания.
В регрессии непрерывные прогнозные значения используются напрямую, но в классификации доступно больше вариантов —
Первый вариант — просто использовать прогнозируемые классы. В двоичной классификации для каждого из столбцов выше (показаны оранжевым, синим и зеленым) каждая строка будет содержать либо 1, либо 0 на основе прогноза модели уровня 0.
Однако оказывается, что если вы используете прогнозируемую вероятность вместо прогноза, производительность модели суммирования значительно улучшается. Для бинарного классификатора можно использовать прогнозируемую вероятность либо для нулевого, либо для первого класса; они совершенно коллинеарны, поэтому для результата не имеет значения, какой из них выбран.
Подводя итоги и основываясь на моих экспериментах, если алгоритм машинного обучения решает бинарную классификацию, выполните точную настройку следующим образом:
- Сохраните исходные функции и добавьте предсказания в качестве дополнительных функций.
- Используйте прогнозируемые вероятности для class=1 в качестве данных и не используйте прямой прогноз.
Шаг 3: Обучение модели уровня 1
Теперь, когда на шагах 1 и 2 были добавлены новые функции, пришло время обучить «Модель уровня 1», также называемую «окончательной оценкой». в некоторых источниках —
Изображение автораЭтот этап очень прост по сравнению с предыдущими шагами, и теперь мы готовы делать прогнозы.
Модель уровня 1 просто подгоняется к преобразованным обучающим данным, и у нас есть обученная модель суммирования.
Шаг 4. Сделайте прогнозы для данных тестирования/проверки
Изображение автораИтак, это выглядит немного пугающе, но на самом деле все довольно просто.
Данные тестирования/проверки, используемые в качестве входных данных для обученной «Модели уровня 1», должны иметь ту же форму (с точки зрения количества и порядка признаков), что и обучающие данные, используемые для ее подбора, но, как это бывает, очень легко сделать.
Обученные/подогнанные «Модели уровня 0» последовательно применяются к данным тестирования/проверки, чтобы добавить предсказания модели в качестве новых функций, и таким образом форма данных обучения и тестирования/проверки будет совпадать.
Обученная «Модель уровня 1» затем применяется к преобразованным тестовым данным, чтобы предоставить окончательный набор прогнозов, полученных с помощью модели суммирования.
Заключение
Стекирование концептуально сложно понять, по крайней мере, таков был мой опыт до того, как я потратил много времени на чтение, исследования и эксперименты.
Однако, как только вы поймете, что такое стекирование, его будет относительно просто применять на практике, и это будет темой для Частей II и III этой серии статей.
Во второй части этой серии статей мы будем использовать библиотеку scikit-learn
для реализации модели стекирования, улучшения нашего понимания и оценки общей производительности.
Как эффективно использовать стекирование в машинном обучении путем реализации стекирования в Python, Jupyter и Scikit-Learn
в направлении datascience. com
В части III будет построен алгоритм стекирования с нуля и в полном объеме, чтобы завершить полное и глубокое понимание стекирования и того, как он работает в деталях.
Final Word
Поначалу я, конечно, изо всех сил пытался полностью понять стек, и я не достиг хорошего понимания, пока не изучил реализацию scikit-learn
, а затем не построил свой собственный алгоритм стекирования с нуля.
Надеемся, что эта статья вместе с частями II и III поможет другим достичь этого понимания без необходимости проводить все исследования, и это позволит сделать осознанный выбор в отношении того, где и как реализовать стек для достижения оптимальной производительности в машине прогнозирования. алгоритмы обучения.
Если вам понравилась эта статья, почему бы не ознакомиться с другими моими статьями на странице https://grahamharrison-86487.medium.com/? Кроме того, я хотел бы услышать от вас, что вы думаете об этой статье, любых других моих статьях или о чем-либо еще, связанном с наукой о данных и анализом данных.