В этом блоге я собираюсь рассказать об 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. Вы можете поэкспериментировать, изменив эти гиперпараметры.
Надеюсь, этот блог будет полезен для вас. Пожалуйста, предоставьте свои комментарии.