Бэггинг (Бутстрэп-агрегирование) – это алгоритм, предназначенный для улучшения стабильности и точности алгоритмов Машинного обучения (ML), используемых для задач Классификации (Classification) и Регрессии (Regression).
Прежде чем мы перейдем к основному понятию статьи, давайте кратко рассмотрим важный базовый прием Науки о данных (Data Science) – Бутстрап (Bootstrap).
Бутстрап – это мощный статистический метод оценки характеристик Признака (Feature) на основе Выборки (Sample). Мы поймем понятие, определив, является ли вычисленное Среднее арифметическое (Mean) или Стандартное отклонение (Standard Deviation) показательным с помощью этого метода.
Предположим, у нас есть выборка из массива данных на 100 значений, и мы хотим оценить, показательно ли среднее значение ее относительно Популяции (Population).
Мы можем вычислить среднее непосредственно классическим способом, разделив сумму значений на их количество:
Мы знаем, что наша выборка мала и среднее значение непоказательно. Улучшим оценку нашего среднего, используя бутстрэп:
- Создадим множество (например, 1000) случайных выборок нашего набора данных (мы можем выбрать одно и то же значение несколько раз)
- Рассчитаем среднее значение каждой выборки
- Вычислим среднее значение всех собранных нами средних значений и используем его в качестве наиболее показательного среднего.
Например, мы сформировали три выборки из популяции и получили средние значения 2.3, 4.5 и 3.3. Взяв среднее от этой троицы, получим наиболее правдивое значение 3,367. Этот прием можно использовать для оценки других величин, таких как стандартное отклонение, и даже величин, используемых в алгоритмах Машинного обучения.
Бутстрэп-агрегирование или бэггинг
Бэггинг – это простой и очень мощный ансамблевый метод, который объединяет прогнозы из нескольких методов Машинного обучения вместе, чтобы предсказывать более точно, чем любая отдельная модель.
Бутстрэп-агрегирование – это процедура, которая используется для сокращения чрезмерной дисперсии (Variance) алгоритмов – Деревьев решений (Decision Tree), таких как Алгоритм классификации и регрессии (CART).
Деревья решений чувствительны к конкретным данным, на которых обучаются. Если Тренировочные данные (Train Data) изменены (например, обучение производится на подмножестве), результирующее дерево может быть совершенно другим, и прогнозы могут быть совершенно разными для каждого такого подмножества.
Предположим, у нас есть набор из 1000 экземпляров, и мы используем алгоритм CART. Тогда бэггинг будет работать следующим образом:
- Создадим множество (например, 100) случайных выборок нашего набора данных с возможностью переиспользования Наблюдений (Observation)
- Обучим модель CART на каждом из сэмплов
- Рассчитаем среднее значение для каждой модели.
Например, если бы у нас было 5 деревьев решений, которые использовали следующую выборку: синий, синий, красный, синий и красный, мы бы предсказали наиболее распространенный класс “синий”.
При бэггинге с деревьями решений мы меньше беспокоимся о том, чтобы отдельные деревья достигали Переобучения (Overfitting) обучающими данными. По этой причине и для повышения эффективности отдельные деревья решений выращиваются глубоко (например, несколько обучающих выборок в каждом листовом узле дерева), и деревья не обрезаются. Эти деревья будут иметь как высокую дисперсию, так и низкую погрешность. Это важные характеристики моделей при объединении прогнозов.
Единственные параметры при объединении деревьев решений – это количество выборок и, следовательно, количество включаемых деревьев. До тех пор, пока точность не прекратит улучшаться, можно тренировать новые и новые деревья. Большое число моделей потребует времени, но переобучения не будет.
Как и сами деревья решений, Bagging можно использовать для задач классификации и регрессии.
Случайный лес
Случайные леса (Random Forest) являются апгрейдом деревьев решений с бэггингом.
Проблема с деревьями решений, такими как CART, заключается в жадности: они выбирают, какую переменную использовать, используя “жадный” алгоритм, сводящий к минимуму ошибки. Таким образом, даже при использовании бэггинга деревья решений могут иметь много структурных сходств и, в свою очередь, иметь высокую корреляцию в своих прогнозах.
Объединение прогнозов из нескольких моделей в ансамбли способствует взрывному росту эффективности, если прогнозы из подмоделей некоррелированы или в лучшем случае слабо коррелированы.
Случайный лес изменяет алгоритм способа обучения поддеревьев, так что результирующие прогнозы из всех их имеют меньшую корреляцию.
В CART при выборе точки разделения алгоритму разрешено просматривать все переменные и их значения, чтобы выбрать наиболее оптимальную точку разделения. Алгоритм случайного леса изменяет эту процедуру таким образом, чтобы ограничиваться случайной выборкой функций, по которым выполняется поиск.
Количество признаков, которые могут быть найдены в каждой точке разделения, должно быть указано в качестве параметра алгоритма. Вы можете попробовать разные значения и настроить их с помощью Кросс-валидации (Cross Validation):
- Для классификации хорошее значение по умолчанию равно sqrt (p)
- Для регрессии хорошее значение по умолчанию равно p / 3, где
m – количество случайно выбранных объектов, которые можно искать в точке разделения,
p – количество входных переменных.
Например, если в наборе данных было 25 входных переменных для задачи классификации, то:
m = sqrt (25) = 5
Расчетная производительность
Когда выборка сформирована, всегда найдутся наблюдения, не попавшие в нее. Эти записи называются Out-Of-Bag или OOB.
Производительность каждой модели на ее OOB-наблюдениях при усреднении может обеспечить некую точность бэггинг-моделей. Эту оценку производительности часто называют оценкой производительности OOB.
Эти показатели производительности представляют собой надежную оценку ошибки тестирования и хорошо коррелируют с оценками перекрестной проверки.
Бэггинг и Scikit-learn
Бэггинг легко продемонстрировать с помощью соответствующей функции Scikit-learn. Для начала импортируем необходимые библиотеки:
Сгенерируем набор данных из 100 наблюдений и 4 признаков случайным образом:
Применим Метод опорных векторов (SVM) в качестве метода оценки бэггинга:
Предскажем класс для наблюдения:
Для записи, где каждый из четырех признаков равен нулю, класс будет равен единице:
Ноутбук, не требующий дополнительной настройки на момент написания статьи, можно скачать здесь.
Автор оригинальной статьи: Jason Brownlee
Фото: Unsplash@wilstewart3
Понравилась статья? Поддержите нас, поделившись статьей в социальных сетях и подписавшись на канал. И попробуйте наши курсы по Машинному обучению на Udemy.