Наука о данных: классификатор AdaBoost

Введение:

Повышение - это метод ансамбля, который используется для создания сильного классификатора из ряда слабых классификаторов. Одним из хорошо известных примеров техники ансамбля является случайный лес, который использует несколько деревьев решений для создания случайного леса. Некоторые из хорошо известных методов повышения, помимо Adaboost, - это градиентное усиление, XGBoost и т. Д.

Интуиция:

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

Концепция AdaBoost проста:

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

Мы передадим набор данных (как показано ниже, все строки) в Базовый учащийся 1. Все ошибочно классифицированные записи Базовым учащимся 1 (строки 5, 6 и 7 неверно классифицированы) будут будут переданы базовому учащемуся 2, и аналогичным образом все неправильно классифицированные записи базового учащегося 2 будут переданы базовому учащемуся 3. Наконец, на основе большинства голосов каждым Базовым учеником мы классифицируем новые рекорды.

Рассмотрим пошаговую реализацию классификаторов AdaBoost:

Шаг 1: возьмите набор данных и присвойте начальный вес всем выборкам (строкам) в данном наборе данных.

W = 1 / n = ›1/7, где n - количество отсчетов.

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

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

Шаг 3: нам нужно выбрать любую базовую модель учащегося (базовый учащийся 1, созданный для функции 1, базовый учащийся 2, созданный для функции 2, базовый учащийся 3, созданный для функции 3) на основе значения энтропия или коэффициенты джинни для каждой функции (я уже обсуждал джинни и энтропию в моей статье о дереве решений).

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

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

Мы должны найти общую ошибку для всех неправильно классифицированных, допустим, если мы правильно классифицировали 4 записи и неправильно классифицировали 1 запись

Общая ошибка = Общая сумма весов выборок для неправильно классифицированных записей.

Поскольку у нас только 1 ошибка, наша общая ошибка = 1/7

Шаг 5: проверьте эффективность пня по приведенному ниже уравнению.

Когда мы введем в эту формулу общую ошибку, мы получим значение 0,895 (не поленитесь ввести значения и вычислить)

Обновите веса выборки для правильно и неправильно классифицированных выборок (строк) по приведенному ниже уравнению.

Новый вес образца для неправильно классифицированных образцов =

Новый вес выборки для правильно классифицированных выборок =

Примечание. Мы предполагаем, что строка 3 неправильно классифицирована.

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

Сумма обновленных весов 0,68.

Шаг 7. Мы создадим набор данных, удалив функции «вес выборки» и «обновленный вес», и назначим каждую выборку (строки) под сегментом.

Шаг 8. Создайте НОВЫЙ НАБОР ДАННЫХ. Для этого мы должны случайным образом выбрать значения от 0 до 1 (для каждой выборки (строки)) и выбрать эту выборку, она попадает под Bucket и сохранить эту выборку в NEW DATASET. Поскольку неправильно классифицированные записи имеют больший размер корзины, вероятность выбора этой записи очень высока.

Здесь мы видим, что неправильно классифицированная запись (Row3) была выбрана в нашем наборе данных 3 раза, поскольку ее размер корзины больше, чем у других строк.

Шаг 9. Используйте этот НОВЫЙ НАБОР ДАННЫХ для следующих этапов (Базовый учащийся 2, Базовый учащийся 3) и выполните шаги с 1 по 8 для всех функций.

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

Пошаговый код Python для классификаторов Adaboost:

Преимущества классификаторов AdaBoost:

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

Недостатки:

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

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

Надеюсь, вам понравится моя статья. Пожалуйста, хлопните в ладоши (до 50 раз), что побудит меня написать больше.

Хотите подключиться:

Linked In: https://www.linkedin.com/in/anjani-kumar-9b969a39/

Если вам нравятся мои сообщения здесь, на Medium, и вы хотите, чтобы я продолжал эту работу, подумайте о поддержке меня на patreon