Как наставник по науке о данных, я рад углубиться в другую важную тему обучения ансамблю — стекирование. Стекирование, также известное как обобщение с накоплением, представляет собой мощный метод, который объединяет прогнозы нескольких моделей путем обучения метамодели на их прогнозах. Стекирование использует сильные стороны различных базовых моделей для повышения точности прогнозов и стало популярным методом в соревнованиях по машинному обучению и в реальных приложениях. В этом блоге мы рассмотрим основы стекирования, его математические концепции и пример реализации кода с использованием библиотеки sci-kit-learn в Python.

Стекирование :

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

Математические понятия:

  1. Базовые модели. В стекинге используется несколько базовых моделей, таких как деревья решений, машины опорных векторов или нейронные сети, для прогнозирования набора обучающих данных. Каждая базовая модель обучается на одном и том же обучающем наборе данных и выдает свои собственные прогнозы. Прогнозы базовых моделей используются в качестве входных данных для обучения метамодели.
  2. Метамодель. Метамодель, также известная как модель стека, обучается на прогнозах базовых моделей. Прогнозы базовых моделей служат входными данными для метамодели, а целевая переменная совпадает с исходным набором обучающих данных. Метамодель учится комбинировать прогнозы базовых моделей, чтобы сделать окончательный прогноз.
  3. Процесс укладки. Процесс укладки обычно включает следующие этапы:
  • Разделение исходного набора данных для обучения на наборы для обучения и проверки.
  • Обучение нескольких базовых моделей на обучающем наборе.
  • Использование обученных базовых моделей для прогнозирования проверочного набора.
  • Использование прогнозов базовых моделей в качестве входных признаков для обучения метамодели на проверочном наборе.
  • Наконец, использование обученной метамодели для прогнозирования набора тестов для оценки.

Пример стека:

Давайте рассмотрим пример стекирования с использованием класса StackingClassifier из библиотеки sci-kit-learn в Python. Мы будем использовать популярный набор данных рака молочной железы для классификации и продемонстрируем, как суммирование может повысить точность прогнозов.

# Importing necessary libraries
from sklearn.ensemble import StackingClassifier
from sklearn.tree import DecisionTreeClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

# Loading the dataset
from sklearn.datasets import load_breast_cancer
X, y = load_breast_cancer(return_X_y=True)

# Splitting the dataset into training and testing sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# Creating base models - Decision Tree and Logistic Regression
base_model1 = DecisionTreeClassifier(random_state=42)
base_model2 = LogisticRegression(random_state=42)

# Creating a StackingClassifier ensemble model with base models and a meta-model
stacking_model = StackingClassifier(estimators=[('base_model1', base_model1), ('base_model2', base_model2)],
                                    final_estimator=LogisticRegression(), cv=5)

# Training the ensemble model
stacking_model.fit(X_train, y_train)

# Making predictions
y_pred = stacking_model.predict(X_test)