Найти в Дзене

AdaBoost в Машинном обучении простыми словами

AdaBoost (Adaptive Boosting) – классифицирующая Модель (Model), которая объединяет несколько слабых классификаторов для повышения точности. Является Ансамблем (Ensemble). Алгоритм предложен Йоавом Фройндом (Yoav Freund) и Робертом Шапире (Robert Schapire) в 1996 году. Комбинируя несколько неэффективных классификаторов, мы получаем сильный классификатор высокой точности. Основная концепция заключается в установке весов классификаторов и обучении выборки данных на каждой итерации, чтобы обеспечить точные предсказания необычных наблюдений. Любой алгоритм Машинного обучения (ML) может использоваться в качестве базового классификатора, если он принимает веса в обучающем наборе. AdaBoost должен соответствовать двум условиям: Чтобы построить классификатор AdaBoost, представьте, что в качестве первого базового классификатора мы обучаем алгоритм Дерева решений (Decision Tree) для прогнозирования наших обучающих данных. Теперь, следуя методологии, вес неверно классифицированных обучающих экземп

AdaBoost (Adaptive Boosting) – классифицирующая Модель (Model), которая объединяет несколько слабых классификаторов для повышения точности. Является Ансамблем (Ensemble).

Алгоритм предложен Йоавом Фройндом (Yoav Freund) и Робертом Шапире (Robert Schapire) в 1996 году. Комбинируя несколько неэффективных классификаторов, мы получаем сильный классификатор высокой точности.

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

AdaBoost должен соответствовать двум условиям:

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

Чтобы построить классификатор AdaBoost, представьте, что в качестве первого базового классификатора мы обучаем алгоритм Дерева решений (Decision Tree) для прогнозирования наших обучающих данных. Теперь, следуя методологии, вес неверно классифицированных обучающих экземпляров увеличен. Второй классификатор обучается, принимает обновленные веса и повторяет процедуру снова и снова. В конце каждого прогноза мы в конечном итоге увеличиваем веса неправильно классифицированных экземпляров, чтобы следующая модель лучше справлялась с ними, и так далее.

AdaBoost добавляет в ансамбль Предикторы (Predictor Variable), постепенно улучшая его. Большим недостатком этого алгоритма является то, что модель не может быть распараллелена, поскольку каждый предиктор может быть обучен только после того, как предыдущий был обучен и оценен.

AdaBoost на scikit-learn

Давайте посмотрим, как AdaBoost реализован в SkLearn. Для начала импортируем необходимые библиотеки:

-2

Импортируем датасет о раке груди и разделим Признаки (Feature) на предикторы и Целевой признак (Target Variable):

-3

Закодируем целевые метки значениями от 0 до значения [число классов – 2], то есть возможными значениями являются 0 и 1:

-4

Разделим датасет на тренировочную и тестовую части функцией train_test_split и применим перемешивание (random_state = 1):

-5

Создадим объект-классификатор и обучим его Тренировочными данными (Train Data):

-6

Система демонстрирует параметры модели по умолчанию. К примеру, в качестве базового Алгоритма (Algorithm) будет использоваться Дерево решений (Decision Tree) (base_estimator=DecisionTreeClassifier):

-7

Сгенерируем предсказания для Тестовых данных (Test Data):

-8

Проверим модель с помощью Матрицы ошибок (Confusion Matrix):

-9

На главной диагонали – крупные числа (в сравнении с остальными элементами матрицы), а это означает, что количество верно классифицированных истинных и ложных случаев значительно превышает неверные (96,5%):

-10

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

Автор оригинальной статьи: Prashant Banerjee

Фото: @davealmine