Методы ансамблевого обучения набирают популярность в области машинного обучения. Одним из наиболее широко используемых методов ансамблевого обучения является бэггинг. Это метод, который включает создание нескольких версий обучающего набора данных путем начальной загрузки, а затем использование этих наборов данных для обучения отдельного экземпляра базового алгоритма обучения. Затем прогнозы каждой из этих отдельных моделей каким-либо образом объединяются, например, путем усреднения или голосования, для получения окончательного прогноза. Было показано, что этот подход повышает точность и стабильность моделей машинного обучения.

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

История упаковки

Бэггинг, расшифровывающийся как Bootstrap Aggregating, был впервые представлен Лео Брейманом в 1996 году. Брейман был заинтересован в разработке методики ансамблевого обучения, которая могла бы повысить точность и стабильность моделей машинного обучения. Его идея заключалась в том, чтобы создать несколько версий обучающего набора данных путем начальной загрузки, а затем использовать эти наборы данных для обучения отдельного экземпляра базового алгоритма обучения. Прогнозы каждой из этих отдельных моделей затем будут каким-то образом объединены для получения окончательного прогноза.

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

Реализация упаковки

Техника бэгинга включает в себя следующие этапы:

  1. Начальная загрузка: новый набор данных создается путем случайной выборки точек данных из исходного набора данных с заменой. Новый набор данных будет того же размера, что и исходный набор данных, но некоторые точки данных будут повторяться, а другие будут отсутствовать.
  2. Обучение: базовый алгоритм обучения обучается на новом наборе данных. Тот же алгоритм используется для каждого из новых наборов данных, созданных на шаге 1.
  3. Прогноз: базовый алгоритм обучения используется для прогнозирования тестового набора данных.
  4. Агрегация: прогнозы каждой из отдельных моделей каким-то образом объединяются для получения окончательного прогноза.

Этот процесс повторяется несколько раз, при этом для каждой итерации создается новый набор данных. Затем делается окончательный прогноз путем объединения прогнозов всех отдельных моделей.

Существует несколько вариантов техники мешков, в том числе:

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

Оценка упаковки

Эффективность Бэггинга можно оценить, сравнив производительность отдельных моделей с производительностью модели Бэгинга. Производительность модели Бэгинга можно измерить с помощью таких показателей, как точность, точность, полнота и оценка F1.

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

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

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

Попробуйте!

from sklearn.datasets import load_digits
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import BaggingClassifier
from sklearn.metrics import accuracy_score
digits = load_digits()
X_train, X_test, y_train, y_test = train_test_split(digits.data, digits.target, test_size=0.3, random_state=42)

Далее мы создадим базовый классификатор дерева решений и классификатор упаковки, который будет использовать дерево решений в качестве базовой оценки:

base_estimator = DecisionTreeClassifier(max_depth=5)
bagging = BaggingClassifier(base_estimator=base_estimator, n_estimators=10, random_state=42)

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

Затем мы подгоним классификатор мешков к обучающим данным и сделаем прогнозы по тестовым данным:

bagging.fit(X_train, y_train)
y_pred = bagging.predict(X_test)

Наконец, мы оценим производительность классификатора мешков, рассчитав его точность на тестовых данных:

accuracy = accuracy_score(y_test, y_pred)
print("Bagging accuracy:", accuracy)

Вот и все! Мы успешно внедрили пакетирование в Python с помощью библиотеки scikit-learn.

Если вам понравилось мое объяснение, пожалуйста, похлопайте этой статье 👏 и поделитесь ею со своими друзьями и приятелями по учебе 🫂

контакт: https://atharv4git.github.io/webpage/