Бэггинг и бустинг - это два метода, которые можно использовать для повышения точности деревьев классификации и регрессии (CART). В этом посте я начну с моего единого дерева классификации вин из 90 пунктов, разработанного в предыдущей статье, и сравним его точность классификации с двумя новыми алгоритмами с пакетом и усилением.
Поскольку для каждого из них используются наборы классификаторов, их называют "ансамблевыми" методами. Ни один из них не является самостоятельным типом классификатора - скорее, каждый из них производит прогнозы класса путем агрегирования прогнозов нескольких других подклассификаторов.
Я снова воспользуюсь данными обзора вин, взятыми из журнала WineEnthusiast, который находится в свободном доступе по адресу https://www.kaggle.com/zynicide/wine-reviews. Он содержит баллы для 150 000 проверенных вин, а также их цену за бутылку, винодельню, регион выращивания, сорта и другую информацию. В этом проекте я буду использовать только вина, выращенные в США.
Для начала я обучу единое дерево классификации на 70% моих данных (обучающая выборка) с помощью DecisionTreeClassifier из sci-kit learn без настройки гиперпараметров. Это послужит базой для будущего ансамблевого выступления:
Упаковка
Bagging использует простой подход, который снова и снова проявляется в статистическом анализе - улучшите оценку одного, комбинируя оценки многих. Bagging строит n деревьев классификации с использованием начальной выборки обучающих данных, а затем объединяет их прогнозы для получения окончательного мета-прогноза.
Реализация набора пакетов в Sci-kit learn - это BaggingClassifier, который принимает в качестве входных данных обозначение базового классификатора, который набор пакетов будет повторять n раз. Первичный гиперпараметр настройки BaggingClassifier - это количество базовых классификаторов, созданных и агрегированных в мета-предсказании.
Вот как работает ансамбль мешков при изменении (1) количества базовых оценок и (2) размера базовых оценок (количества листьев):
Как показано выше, точность прогнозирования упаковки может зависеть от ограничений, накладываемых на базовый оценщик. На практике ограничение размера базового оценщика в ансамбле мешков несколько излишне, поскольку бутстраповская выборка дает тот же результат, что и ограничение базовых деревьев.
Еще одно ключевое наблюдение заключается в том, что производительность ансамбля пакетов не превышает единичный эталонный тест CART, пока количество оценщиков не превысит пороговый уровень. Точность ансамбля пакетов с одним деревом немного хуже, чем с одним CART - если вы спрашиваете, как это может быть, это объясняется выборкой начальной загрузки: базовая оценка в ансамбле упаковки с одним деревом не использует 100% обучающих данных за счет начальной загрузки. Выборка начальной загрузки - это настраиваемые параметры BaggingClassifier.
Повышение
Чтобы продемонстрировать эффективность метода повышения, я воспользуюсь AdaBoost, который реализован в учебном пособии как AdaBoostClassifier. Этот тип ансамбля создает n базовых оценщиков, как и упаковка, но делает это итеративно следующим образом:
- Обучите базовый оценщик №1 обычным методом
- Наблюдайте за образцами обучающих данных, которые базовый оценщик № 1 предсказывает неправильно, и создайте вес D ›1.0 для этих образцов.
- Обучайте базовый оценщик №2, применяя вес D к выборкам при расчете показателя однородности джини / энтропии
- Повторить n раз.
Таким образом, повышение создает последовательные базовые классификаторы, которым предлагается уделять больше внимания ошибочно классифицированным выборкам из обучающих данных. Как и при упаковке в пакеты, результаты всех повышения базовых классификаторов агрегируются для создания мета-прогноза.
По сравнению с бэггингом, точность повышающего ансамбля быстро повышается с увеличением количества базовых оценок. Кроме того, независимо от того, являются ли базовые оценщики конечными пнями или полными деревьями, точность всех повышающих ансамблей сходится, чтобы превысить исходную точность CART. оценщики = 15+ в моем примере.
Повышение и упаковка - это два ансамблевых метода, способных выжать дополнительную точность прогнозирования из алгоритмов классификации. При использовании любого метода необходимо выполнить тщательную настройку гиперпараметров, чтобы найти оптимальный баланс гибкости модели, эффективности и улучшения прогнозирования.