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

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

Итак, как именно работает Adaboost?

AdaBoost начинает с присвоения всем обучающим образцам в наборе данных одинаковых весов. Затем он обучает плохого ученика, иногда называемого «базовым учеником», используя данные. Базовым учащимся может быть любой простой классификатор, такой как пень решения (одноуровневое дерево решений).

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

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

Рассмотрим набор данных с тремя независимыми функциями (f1, f2, f3) и одной зависимой переменной (y). Набор данных содержит десять строк обучающих выборок. Каждому образцу будет присвоен начальный вес 1/10. Предположим, что один из образцов был неправильно идентифицирован после первого раунда обучения, что дало нам общую ошибку в одну десятую.

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

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

Затем веса нормализуются так, чтобы сумма весов для всех выборок равнялась 1.

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

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

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

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

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

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

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