Boosting (бустинг) — это метод ансамблевого обучения, который улучшает производительность моделей путем последовательного обучения нескольких слабых моделей (например, деревьев решений) и объединения их в одну сильную модель. В процессе бустинга каждая последующая модель фокусируется на ошибках предыдущих моделей, стремясь уменьшить общую ошибку.
В отличие от bagging (например, Random Forest), где модели обучаются параллельно, в бустинге модели обучаются последовательно.
Каждая новая модель пытается исправить ошибки, сделанные предыдущими моделями, обучаясь на данных с учетом этих ошибок.
Примеры, на которых предыдущие модели ошиблись, получают больший вес, чтобы новая модель уделяла им больше внимания.
Один из первых методов бустинга. В AdaBoost каждая новая модель обучается на тех же данных, но с разными весами, которые обновляются в зависимости от ошибок предыдущей модели.
from sklearn.ensemble import AdaBoostClassifier
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
# Загрузка данных
iris = load_iris()
X, y = iris.data, iris.target
# Разделение данных на обучающую и тестовую выборки
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
# Создание и обучение модели AdaBoost
model = AdaBoostClassifier(n_estimators=50, random_state=42)
model.fit(X_train, y_train)
# Предсказание на тестовой выборке
y_pred = model.predict(X_test)
# Оценка точности
accuracy = accuracy_score(y_test, y_pred)
print(f"Точность: {accuracy}")
Более современный и сложный метод, который строит новые модели для предсказания остаточных ошибок (градиентов) предыдущих моделей.
from sklearn.ensemble import GradientBoostingClassifier
# Создание и обучение модели Gradient Boosting
model = GradientBoostingClassifier(n_estimators=100, learning_rate=0.1, random_state=42)
model.fit(X_train, y_train)
# Предсказание на тестовой выборке
y_pred = model.predict(X_test)
# Оценка точности
accuracy = accuracy_score(y_test, y_pred)
print(f"Точность: {accuracy}")
Экстремальный градиентный бустинг — это улучшенная и оптимизированная версия Gradient Boosting, которая обеспечивает более высокую производительность и эффективность.
from sklearn.ensemble import GradientBoostingClassifier
# Создание и обучение модели Gradient Boosting
model = GradientBoostingClassifier(n_estimators=100, learning_rate=0.1, random_state=42)
model.fit(X_train, y_train)
# Предсказание на тестовой выборке
y_pred = model.predict(X_test)
# Оценка точности
accuracy = accuracy_score(y_test, y_pred)
print(f"Точность: {accuracy}")
Бустинг часто превосходит по точности одиночные модели и другие методы ансамблевого обучения.
Может быть использован с различными базовыми моделями и легко адаптируется к различным задачам.
Эффективно работает с большими наборами данных и сложными зависимостями.
Обучение бустинговых моделей может быть медленным, особенно для больших наборов данных.
Бустинг может переобучаться на шумных данных, так как модели пытаются исправить каждую ошибку.
Ставь 👍 и забирай 📚 Базу знаний