Введение

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

Что именно повышает?

Повышение – это контролируемая стратегия машинного обучения, которая объединяет прогнозы нескольких слабых моделей (базовых моделей) для создания мощной ансамблевой модели. Повышение, в отличие от классических ансамблевых подходов, таких как бэггинг или усреднение, фокусируется на последовательном обучении базовых моделей таким образом, чтобы выделялись неправильно классифицированные выборки из предыдущих итераций. Цель состоит в том, чтобы приоритизировать образцы, которые были неправильно классифицированы в предыдущих итерациях, позволяя модели учиться на своих ошибках и итеративно улучшать свою производительность.

Как работает повышение?

Boosting — это стратегия машинного обучения, которая объединяет множество слабых учеников в сильных учеников для повышения точности модели. Ниже приведены шаги алгоритма бустинга:

  1. Инициализация весов. В начале процесса каждому обучающему примеру присваивается одинаковый вес.
  2. Обучение слабого ученика. Взвешенные данные обучения используются для обучения слабого ученика. Слабый ученик — это простая модель, которая лишь незначительно превосходит случайное угадывание. Дерево решений с несколькими уровнями, например, можно использовать в качестве слабого ученика.
  3. Вычисление ошибки: вычисляется ошибка слабого ученика на обучающих данных. Взвешенная сумма неправильно классифицированных случаев составляет ошибку.
  4. Обновить веса. Веса обновляются в соответствии с частотой ошибок в обучающих примерах. Неправильно классифицированным примерам присваивается более высокий вес, тогда как правильно классифицированным примерам присваивается более низкий вес.
  5. Повторить. Шаги 2–4 повторяются несколько раз. Новый слабый ученик обучается на обновленных весах обучающих примеров в каждом цикле.
  6. Объединить слабых учеников. Окончательная модель состоит из всех слабых учеников, обученных на предыдущих этапах. Точность каждого слабого ученика взвешивается, и окончательный прогноз основан на взвешенной сумме слабых учеников.
  7. Прогноз. Готовая модель используется для прогнозирования меток класса новых экземпляров.

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

Различные методы улучшения

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

  1. AdaBoost (адаптивное повышение). AdaBoost — один из наиболее широко используемых алгоритмов повышения. Он присваивает веса каждой точке данных в обучающем наборе на основе точности предыдущих моделей, а затем обучает новую модель, используя обновленные веса. AdaBoost очень полезен для задач классификации.
  2. Повышение градиента. Повышение градиента работает путем подгонки новых моделей к остаточным ошибкам предыдущих моделей. Он минимизирует функцию потерь с помощью градиентного спуска и может применяться как к задачам регрессии, так и к задачам классификации. К популярным реализациям повышения градиента относятся XGBoost и LightGBM.
  3. Стохастическое повышение градиента. Как и повышение градиента, стохастическое повышение градиента соответствует каждой новой модели со случайными подмножествами обучающих данных и случайными подмножествами функций. Это помогает избежать переобучения и может привести к повышению производительности.
  4. LPBoost (линейное программирование повышения): LPBoost – это повышающий алгоритм, который минимизирует экспоненциальную функцию потерь с помощью линейного программирования. Он способен обрабатывать широкий спектр функций потерь и может применяться как к проблемам регрессии, так и к задачам классификации.
  5. TotalBoost (Total Boosting): TotalBoost — это метод повышения AdaBoost и LPBoost. Он работает за счет минимизации смеси потерь экспоненциального и линейного программирования и может повысить точность для определенных типов задач.

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

Сравнение алгоритмов повышения: примеры и сильные стороны

Здесь сравниваются различные типы алгоритмов повышения с примерами и их сильными сторонами:

🤖 «AdaBoost является наиболее широко используемым алгоритмом повышения, хотя также широко используются градиентное повышение и стохастическое повышение градиента. ”

Преимущества бустинга

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

  1. Улучшенная производительность. Так как бустинг объединяет прогнозы любых базовых моделей, он эффективно снижает систематическую ошибку и дисперсию, что приводит к более точным и надежным прогнозам.
  2. Возможность обработки сложных данных. Ускорение может обрабатывать сложные шаблоны данных, включая нелинейные корреляции и взаимодействия, что делает его подходящим для широкого спектра приложений машинного обучения, таких как классификация, регрессия и ранжирование.
  3. Устойчивость к шуму. По сравнению с другими методами машинного обучения бустинг менее чувствителен к шуму в обучающих данных, поскольку он фокусируется на неправильно классифицированных выборках и придает им больший вес, эффективно снижая влияние зашумленных выборок на окончательные прогнозы.
  4. Гибкость. Алгоритмы повышения универсальны и могут использоваться с различными базовыми моделями и функциями потерь, что позволяет настраивать и адаптировать их к различным проблемным областям.
  5. Интерпретируемость. Хотя модели бустинга часто называют моделями «черного ящика», они, тем не менее, могут обеспечивать некоторую интерпретируемость благодаря ранжированию важности функций, которое может помочь в понимании относительной ценности различных признаков в процессе прогнозирования.

Приложения бустинга

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

  1. Идентификация изображений и объектов. Ускорение используется в приложениях компьютерного зрения для задач идентификации изображений и объектов, таких как распознавание лиц, распознавание жестов и обнаружение объектов. Ускоряющие алгоритмы могут успешно изучать сложные шаблоны на фотографиях и повышать точность моделей распознавания, что приводит к их применению в биометрии, наблюдении и автономных транспортных средствах.
  2. Обработка текста и естественного языка. Ускорение использовалось в таких задачах, как анализ тональности, классификация текста и распознавание именованных сущностей при обработке текста и естественного языка. Методы усиления могут успешно обрабатывать многомерные и разреженные текстовые данные, улучшая производительность модели в таких приложениях, как анализ настроений для анализа настроений в социальных сетях, обнаружение спама и категоризация текста.
  3. Обнаружение мошенничества. Ускорение используется для выявления мошенничества в различных отраслях, включая финансы, страхование и электронную коммерцию. Ускоряющие алгоритмы могут выявлять модели мошеннического поведения в больших и сложных наборах данных, повышая точность обнаружения мошенничества и уменьшая количество ложных срабатываний/отрицательных результатов в системах обнаружения мошенничества.
  4. Медицинская диагностика. Бустинг использовался в задачах медицинской диагностики, таких как классификация заболеваний, прогнозирование результатов лечения и разработка лекарств. Алгоритмы повышения могут учиться на больших наборах медицинских данных, таких как клинические данные, медицинские изображения и генетические данные, для повышения точности моделей диагностики и прогнозирования, тем самым прокладывая путь к персонализированной медицине и здравоохранению.
  5. Системы рекомендаций. Ускорение используется в системах рекомендаций для предоставления персонализированных предложений, таких как рекомендации продуктов в электронной коммерции, рекомендации фильмов на потоковых платформах и рекомендации контента на новостных порталах. Алгоритмы повышения могут записывать пользовательские предпочтения и модели поведения, чтобы предлагать точные предложения и повышать вовлеченность пользователей.
  6. Анализ временных рядов. Бустинг использовался в приложениях для анализа временных рядов, таких как прогнозирование фондового рынка, прогнозирование погоды и прогнозирование спроса. Алгоритмы ускорения могут эффективно фиксировать временные отношения и закономерности в данных временных рядов, что приводит к повышению точности прогнозов и принятию решений в таких областях, как финансы, сельское хозяйство и управление цепочками поставок.

Внедрение повышения в машинном обучении

Пример: Идентификация изображения и объекта

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

Шаг 1. Сбор данных

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

from sklearn.datasets import load_digits
from sklearn.model_selection import train_test_split

# Load dataset
digits = load_digits()

# Split dataset into training and testing sets
X_train, X_test, y_train, y_test = train_test_split(digits.data, digits.target, test_size=0.3, random_state=42)

Шаг 2: Извлечение признаков

Чтобы извлечь основные элементы из наших фотографий, мы будем использовать технику, известную как извлечение признаков. Это важно, поскольку необработанные данные изображения обычно слишком обширны и сложны, чтобы их можно было использовать для классификации напрямую. Чтобы извлечь функции из наших фотографий, мы можем использовать такие подходы, как Гистограмма ориентированных градиентов (HOG) или Масштабно-инвариантное преобразование признаков (SIFT).

from skimage.feature import hog
from skimage.transform import resize

# Resize input images to (64, 64)
X_train_resized = [resize(image, (64, 64)) for image in X_train]
X_test_resized = [resize(image, (64, 64)) for image in X_test]

# Extract HOG features from images
X_train_hog = []
for image in X_train_resized:
    hog_features = hog(image, block_norm='L2-Hys')
    X_train_hog.append(hog_features)

X_test_hog = []
for image in X_test_resized:
    hog_features = hog(image, block_norm='L2-Hys')
    X_test_hog.append(hog_features)

Шаг 3: Разработайте слабые классификаторы

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

from sklearn.tree import DecisionTreeClassifier

# Train multiple decision trees as weak classifiers
weak_classifiers = []
for i in range(5):
    dtc = DecisionTreeClassifier(max_depth=3, random_state=42)
    dtc.fit(X_train_hog, y_train)
    weak_classifiers.append(dtc)

Шаг 4: Тренировка с отягощениями

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

from sklearn.ensemble import AdaBoostClassifier

# Train AdaBoostClassifier using weak classifiers
ada = AdaBoostClassifier(base_estimator=DecisionTreeClassifier(max_depth=3, random_state=42),
                         n_estimators=5,
                         algorithm='SAMME.R',
                         learning_rate=0.5,
                         random_state=42)
ada.fit(X_train_hog, y_train)

Шаг 5: объединение слабых классификаторов

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

# Combine predictions of weak classifiers to make final prediction
y_pred = ada.predict(X_test_hog)

Шаг 6: Тестирование

На тестовом наборе мы проанализируем производительность нашего алгоритма бустинга. Чтобы оценить его производительность, мы вычислим такие показатели, как точность, достоверность, полнота и оценка F1.

from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score

# Evaluate performance of AdaBoostClassifier
print('Accuracy:', accuracy_score(y_test, y_pred))
print('Precision:', precision_score(y_test, y_pred, average='weighted'))
print('Recall:', recall_score(y_test, y_pred, average='weighted'))
print('F1-score:', f1_score(y_test, y_pred, average='weighted'))

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

Затем мы использовали метод извлечения признаков HOG, чтобы извлечь важные признаки из наших изображений и обучили несколько деревьев решений как слабые классификаторы. Мы использовали алгоритм AdaBoostClassifier для обучения и взвешенного объединения наших слабых классификаторов для создания сильного классификатора. Наконец, мы оценили производительность нашего алгоритма на тестовом наборе, используя такие показатели, как точность, воспроизводимость и балл F1.

Что именно представляет собой метод извлечения признаков HOG?

HOG – это сокращение от Гистограмма ориентированных градиентов. Это известный метод извлечения признаков для извлечения основных признаков из изображений в компьютерном зрении и обработке изображений.

👉“ HOG = Гистограмма ориентированных градиентов”

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

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

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

Что такое масштабно-инвариантное преобразование признаков (SIFT)

Масштабно-инвариантное преобразование признаков (SIFT) — это алгоритм компьютерного зрения, используемый для распознавания объектов и сопоставления изображений. Он был разработан Дэвидом Лоу в 1999 году.

👉 «SIFT = масштабно-инвариантное преобразование признаков»

Масштабно-инвариантное преобразование признаков (SIFT) – это метод компьютерного зрения, используемый для определения и сопоставления определенных элементов изображения. Он может идентифицировать эти функции, даже если изображение повернуто, масштабировано или имеет изменения в освещении. Этот метод работает путем определения областей изображения с уникальными характеристиками, а затем описания этих областей с помощью гистограмм локальных градиентов. Эти описания используются для сравнения и сопоставления функций на разных фотографиях. SIFT использовался для широкого спектра приложений компьютерного зрения, таких как распознавание изображений, трехмерная реконструкция и многое другое.

SIFT против HOG

Заключение

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

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

Введение: 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 || Линкедин || Сводка профиля