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

Что именно складывается?

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

Что представляет собой процесс укладки?

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

Вот подробное описание того, как работает стек:

  1. Подготовка данных. Первым шагом является подготовка данных для моделирования. Это влечет за собой определение соответствующих функций, очистку данных и разделение их на наборы для обучения и проверки.
  2. Выбор модели.Следующим шагом является выбор базовых моделей, которые будут использоваться в ансамбле стекирования. Обычно выбирают широкий набор моделей, чтобы гарантировать, что они производят разные типы ошибок и дополняют друг друга.
  3. Обучение базовых моделей. После выбора базовых моделей они обучаются на обучающем наборе. Чтобы обеспечить разнообразие, каждая модель обучается с использованием другого алгоритма или набора гиперпараметров.
  4. Предсказания для проверочного набора.После обучения базовых моделей они используются для создания прогнозов для проверочного набора.
  5. Разработка метамодели. Следующим этапом является разработка метамодели, также известной как метаобучение, которая будет принимать прогнозы базовых моделей в качестве входных данных и делать окончательный прогноз. Для создания этой модели можно использовать любой алгоритм, такой как линейная регрессия, логистическая регрессия или даже нейронная сеть.
  6. Обучение метамодели. Затем метамодель обучается с использованием прогнозов, данных базовыми моделями в проверочном наборе. Прогнозы базовых моделей служат функциями для метамодели.
  7. Создание прогнозов набора тестов. Наконец, метамодель используется для создания прогнозов наборов тестов. Прогнозы базовых моделей в тестовом наборе передаются в метамодель, которая затем делает окончательный прогноз.
  8. Оценка модели. На заключительном этапе оценивается производительность ансамбля стекирования. Это достигается путем сравнения прогнозов ансамбля суммирования с фактическими значениями в тестовом наборе с использованием таких показателей оценки, как точность, воспроизводимость, оценка F1 и т. д.

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

Простой способ понять процесс укладки👇

Шаг 1: Разделите набор обучающих данных на две части:

Шаг 2: Обучите несколько базовых моделей на обучающих данных:

Шаг 3: Сделайте прогнозы, используя базовые модели на данных проверки удержания:

Шаг 4: Обучите метамодель на данных проверки удержания, используя прогнозы базовых моделей в качестве входных функций:

Шаг 5: Чтобы сделать прогноз для новых данных:

Последний шаг: оцените производительность модели с накоплением на отдельном наборе тестовых данных, который не использовался во время обучения.

Преимущества стекирования

Стекирование имеет различные преимущества в машинном обучении:

  1. Улучшенная эффективность прогнозирования. Наложение может уменьшить систематическую ошибку и дисперсию в окончательном прогнозе за счет объединения результатов многочисленных базовых моделей, что приводит к повышению эффективности прогнозирования. Стекирование позволяет метамодели учиться на возможностях нескольких базовых моделей и потенциально фиксировать сложные шаблоны, которые отдельные модели не могут фиксировать в одиночку.
  2. Разнообразие моделей. Стекирование способствует использованию различных базовых моделей, которые можно обучать с использованием различных алгоритмов, архитектур и настроек гиперпараметров. Это разнообразие может помочь уменьшить опасность переобучения, а также сделать составной ансамбль более устойчивым к различным типам данных.
  3. Гибкость. Стекирование — это универсальная стратегия, которую можно использовать для решения различных задач машинного обучения, включая классификацию, регрессию и даже прогнозирование временных рядов. Его можно использовать с различными базовыми моделями, включая деревья решений, машины опорных векторов, нейронные сети и другие.
  4. Интерпретируемость. Сложение также может выявить значение многих базовых моделей и их прогнозов для окончательного прогноза. Мы можем лучше понять их относительную важность и интерпретируемость, изучая веса или вклады каждой базовой модели в метамодель.

Лучшие практики стекирования

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

  1. Разнообразие моделей. Разнообразие базовых моделей является преимуществом объединения. Крайне важно использовать различные базовые модели, которые могут допускать разного рода ошибки, поскольку это может помочь ограничить опасность переобучения и повысить производительность многоуровневого ансамбля. В качестве базовых моделей избегайте использования сопоставимых моделей или моделей с аналогичными настройками гиперпараметров, так как это может не привести к значительному повышению производительности.
  2. Утечка данных. При использовании стекирования помните об утечке данных. Когда информация из проверочного или тестового набора используется во время обучения базовых моделей или метамоделей, происходит утечка данных. В результате оценки производительности могут быть слишком оптимистичными, что приводит к плохой производительности обобщения. Убедитесь, что данные правильно разделены на обучающие, проверочные и тестовые наборы, а обучающие данные используются только для обучения базовых моделей и метамоделей.
  3. Оценка производительности. Используя надлежащие меры оценки, оцените производительность составного ансамбля. Чтобы получить достоверные оценки производительности сложенного ансамбля, используйте методы перекрестной или удерживающей проверки. Чтобы убедиться, что комплексный ансамбль действительно повышает эффективность прогнозирования, сравните его производительность с производительностью отдельных базовых моделей.
  4. Выбор метамодели. Поэкспериментируйте со многими метамоделями, чтобы определить, какая из них лучше всего подходит для вашей задачи. Выбранная метамодель может оказать существенное влияние на производительность многоуровневого ансамбля. Логистическая регрессия, деревья решений и даже более сложные модели, такие как нейронные сети или машины повышения градиента, обычно используются в качестве метамоделей. Принимая решение, учитывайте интерпретируемость, сложность и эффективность обобщения метамодели.
  5. Настройка гиперпараметров: Оптимизация гиперпараметров как для базовых, так и для метамоделей. На производительность составного ансамбля может сильно повлиять настройка гиперпараметров. Поэкспериментируйте с различными настройками гиперпараметров как для базовых моделей, так и для метамоделей, чтобы найти наилучшую комбинацию для максимальной эффективности прогнозирования.
  6. Размер ансамбля.Переоснащение и повышенная сложность вычислений могут быть результатом использования слишком большого количества базовых моделей в составном ансамбле. Поэкспериментируйте с различными размерами ансамбля, чтобы определить подходящее количество базовых моделей для оптимальной производительности без потери интерпретируемости модели или эффективности вычислений.
  7. Учитывайте аспекты, специфичные для домена. При использовании стека помните об аспектах, специфичных для домена. Разные домены могут иметь разные характеристики, влияющие на производительность многоуровневого ансамбля. Например, в задачах идентификации изображений использование базовых моделей, которые охватывают несколько типов характеристик (например, цвет, текстуру и форму), может привести к повышению производительности.

Реализуйте стекирование в машинном обучении на реальном примере

Пример: прогноз цен на жилье

Шаг 1: Загрузите набор данных

Мы будем использовать набор данных Scikit-learn Boston Housing. Этот набор данных содержит данные о многочисленных жилых домах в Бостоне, такие как их размер, расположение, количество спален, количество ванных комнат и так далее. Цель состоит в том, чтобы спрогнозировать медианную стоимость жилья, занимаемого владельцами, в тысячах долларов.

from sklearn.datasets import fetch_openml
from sklearn.model_selection import train_test_split

# Load the Boston Housing dataset
boston = fetch_openml(name='boston')

# Split the data into training and validation sets
X_train, X_val, y_train, y_val = train_test_split(boston.data, boston.target, test_size=0.2, random_state=42)

Шаг 2: Обучите базовые модели

Мы будем использовать три разных метода машинного обучения для обучения трех разных базовых моделей: Дерево решений, Случайный лес и Повышение градиента.

from sklearn.tree import DecisionTreeRegressor
from sklearn.ensemble import RandomForestRegressor, GradientBoostingRegressor

# Train the base models
dt = DecisionTreeRegressor(random_state=42)
dt.fit(X_train, y_train)

rf = RandomForestRegressor(random_state=42)
rf.fit(X_train, y_train)

gb = GradientBoostingRegressor(random_state=42)
gb.fit(X_train, y_train)

Шаг 3: Делайте прогнозы на проверочном наборе

Мы будем использовать обученные модели, чтобы делать прогнозы на проверочном наборе.

# Make predictions on the validation set
dt_pred = dt.predict(X_val)
rf_pred = rf.predict(X_val)
gb_pred = gb.predict(X_val)

Шаг 4: Обучите метамодель

Мы будем использовать прогнозы базовых моделей в качестве входных данных для метамодели. Мы будем использовать модель линейной регрессии в качестве метамодели.

from sklearn.linear_model import LinearRegression

# Combine the predictions of the base models into a single feature matrix
X_val_meta = np.column_stack((dt_pred, rf_pred, gb_pred))

# Train the meta-model on the combined feature matrix and the target values
meta_model = LinearRegression()
meta_model.fit(X_val_meta, y_val)

Шаг 5: Делайте прогнозы на основе новых данных

# Make predictions on new data
X_new = np.array([[0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0, 1.1, 1.2, 1.3]])
dt_pred_new = dt.predict(X_new)
rf_pred_new = rf.predict(X_new)
gb_pred_new = gb.predict(X_new)

# Combine the predictions of the base models into a single feature matrix
X_new_meta = np.column_stack((dt_pred_new, rf_pred_new, gb_pred_new))

# Make a prediction using the meta-model
y_new_pred = meta_model.predict(X_new_meta)

print("Predicted median value of owner-occupied homes: ${:.2f} thousand".format(y_new_pred[0]))


###### Result #####
Predicted median value of owner-occupied homes: $49.75 thousand

В этом примере показано, как строить прогнозы на реальном наборе данных с помощью наложения, метода обучения ансамбля. Мы обучили три базовые модели (Дерево решений, Случайный лес и Повышение градиента) и использовали метамодель линейной регрессии для агрегирования их прогнозов. Затем обученные модели и метамодель использовались для прогнозирования дополнительных, ранее невиданных данных. Комбинируя преимущества различных алгоритмов, наложение может помочь повысить точность моделей машинного обучения.

Наиболее часто используемый метод укладки

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

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

Заключение

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

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

Полное руководство по ансамблевому обучению👇

Введение: https://medium.com/@brijeshsoni121272/improving-machine-learning-predictions-with-ensemble-learning-a8646e00be1c

Бэгинг:https://medium.com/@brijeshsoni121272/boost-your-machine-learning-models-with-bagging-a-powerful-ensemble-learning- техника-692bfc4d1a51

Ускорение: https://medium.com/@brijeshsoni121272/understanding-boosting-in-machine-learning-a-comprehensive-guide-bdeaa1167a6

Стэкинг: https://medium.com/@brijeshsoni121272/stacking-to-improve-model-performance-a-comprehensive-guide-on-ensemble-learning- в-питоне-9ed53c93ce28

Если вы найдете мои заметки полезными, я буду признателен за вашу поддержку в создании дополнительного контента аналогичного уровня.

👋👋Оставайтесь с нами и удачного обучения!!👋👋

Найди меня здесь👇

GitHub || Линкедин || Сводка профиля