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

Повышение

Часто люди при использовании бустинга (AdaBoost, Gradient boosting) думают, что это алгоритмы машинного обучения, но это не так. Вместо этого Boosting — это методология, которая применяется к уже существующему алгоритму машинного обучения, в основном применяемому к DT, поскольку они дают наилучшие результаты (мы также можем использовать их в других моделях ML). Их также называют метаобучением.

F(x) = αt*(ht(x))

Здесь h(x) = Stump (слабый ученик)

α ∈ R

Пень

Пень — это наименьшее возможное дерево решений, которое имеет только один узел и два листа.

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

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

AdaBoost

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

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

Разделим процесс адаптивного бустинга на шаги и обсудим каждый шаг,

  1. Выберите данные (x1,x2,x3…..xn, это точки данных) и установите веса каждой точки данных
  2. Создание пней
  3. Вычислить общую ошибку
  4. обновить веса
  5. Создание нового набора данных
  6. Повторите процесс с первого шага

Шаг 1. Выборка и добавление начальных весов

Рассмотрим приведенный выше набор данных, который имеет 10 точек данных, сначала мы добавим вес к каждой строке данных.

Начальный вес = 1/n

Где n — количество строк, так как имеется 10 строк, к которым мы добавили 1/10 в качестве начальных весов.

Почему мы добавляем веса к точкам данных?

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

Здесь используется тот же метод, помните, что бустинг — это методология, а не сам алгоритм.

Шаг 2. Постройте культю (слабый ученик)

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

f(x) — — -› y(1) (выход)

Шаг 3: Рассчитайте общую ошибку

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

Общая ошибка представляет собой сумму всех ошибок в классифицированной записи для весов выборки. В нашем случае есть только 1 ошибка, поэтому Total Error (TE) = 1/10.

После расчета TE нам нужно найти производительность пня, которая является альфой (α)

Производительность Stump(α) = 1/2 (ln (1-TE/TE))

Альфа = 1/2 (ln(1–1/10)/1/10))

α = 1,09 (приблизительно)

Шаг 4: обновите веса

Нам нужно обновить веса индивидуально для неправильной классификации и правильной классификации.

За неправильную классификацию,

Новый вес выборки = начальный вес выборки * e^(α)

Новый вес выборки = 1/10 * 2,97

Новый вес выборки = 0,297

Для правильной классификации

Новый вес выборки = исходный вес выборки * e^- (α)

Новый вес выборки = 1/10 * 0,336

Новый вес образца = 0,0336

[Примечание: сумма всех весов всегда должна быть равна единице]

Поэтому, когда мы суммируем все новые веса, они не будут равны единице, поэтому мы складываем новые веса и делим каждый новый вес выборки на общие веса.

Например, возьмем вес первой строки 0,297, разделим его на общий вес 0,5994, получим 0,056, что и видно в таблице. Продолжайте процесс для каждого веса. Когда мы добавим новые веса, сумма будет равна 1.

Шаг 5. Создание нового набора данных

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

Процесс группирования прост: мы делим каждую строку на определенный диапазон, начиная с 0 до первого веса, а затем добавляем следующий вес строки к диапазону и продолжаем процесс до последней строки, которая показана ниже.

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

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

Шаг 6. Повторение процесса

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

AdaBoost на данных тестирования

Для обучения адаптивный бустер реализует эти шаги, а как насчет тестирования? Как AdaBoost будет работать с данными тестирования?

Этот процесс аналогичен процессу упаковки в мешки.

  1. Добавляются веса образцов
  2. Данные обрабатываются пнем
  3. Пень производит вывод.

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

Заключение

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