В этом блоге я собираюсь рассказать об AdaBoost. Одна из известных техник бустинга. Повышение помогло во многих соревнованиях Kaggle и хакатонах. Бустирование — это ансамблевая техника. AdaBoost — один из первых алгоритмов бустинга.

Что такое ансамблевая техника?

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

Существует 2 типа техник ансамбля: Бэггинг и Бустинг.

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

· AdaBoost содержит несколько деревьев решений

· Эти деревья решений, как правило, представляют собой единое разделение, называемое пнями решений.

· Мы можем использовать AdaBoost как для классификации, так и для регрессии

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

Что такое тупик решения?

Деревья решений с одним уровнем, что означает деревья решений только с 1 разделением. Такие деревья называются пнями решений.

Как он учится на ошибках?

Шаг 1: Инициализируйте веса каждой точки данных одинаково. Если 1000 точек данных, то вес каждой точки данных будет 1/1000=0,001.

Шаг 2: Создайте культ решения для каждой функции. Рассчитайте индекс Джини каждого дерева. Дерево с наименьшим индексом Джини будет первым пнем.

Шаг 3: Теперь передайте этот набор данных в дерево решений.

Шаг 4: Рассчитайте взвешенную ошибку (e) дерева решений (сумма всех выборочных весов ошибочно классифицированных точек данных). Если ошибок в предсказании больше, то и взвешенная ошибка (е) будет больше.

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

Шаг 5: Рассчитайте вес дерева решений (dw). Чем больше e, тем меньше решающая сила дерева.

dw = скорость обучения * log (1-e/e)

Шаг 5: Обновите веса точек данных

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

· если прогноз модели для точки данных неверен, новый вес этой точки = старый вес * np.exp(dw)

Шаг 6: Повторите шаг 2 для всех деревьев ансамбля.

Как только мы выполним вышеуказанные шаги, наша модель будет обучена.

Выполнение

Библиотека машинного обучения scikit-learn Python предоставляет реализацию ансамблей AdaBoost для машинного обучения. В scikit-learn у нас есть классы AdaBoostRegressor и AdaBoostClassifier.

Здесь я привожу пример AdaBoostClassifier. Аналогичным образом можно использовать и AdaBoostRegressor.

Во-первых, в этом примере мы использовали функцию make_classification() для создания данных задачи синтетической бинарной классификации с 1000 примерами и 20 входными функциями. Выполнив приведенное ниже, мы получим форму: (1000, 20) (1000,)

Теперь оцените модель с помощью перекрестной проверки RepeatedStratifiedKFold. Мы узнаем среднее значение и стандартное отклонение точности модели по всему повторению.

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

Гиперпараметры AdaBoost

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

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

2) Глубина каждого дерева (base_estimators): базовая оценка определяет каждого слабого ученика для AdaBoost. По умолчанию это Нет. Если None, то каждая базовая оценка является деревом решений с max_depth = 1. Мы можем изменить эти базовые оценки. Мы можем использовать более умелое дерево в качестве базовой оценки (с ma_depth ›1). Это может обеспечить лучший результат.

3) Скорость обучения: вес, применяемый к каждому классификатору на каждой повышающей итерации. Более высокая скорость обучения увеличивает вклад каждого классификатора. Значение по умолчанию — 1,0.

Заключение

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

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