В настоящее время Boosting является одним из наиболее часто используемых методов машинного обучения для прогнозной аналитики. Его сила зависит от повышения производительности модели за счет объединения так называемых «слабых учеников» для создания надежного и сильного классификатора.

Для этой статьи я использовал набор данных Airlines, чтобы предсказать задержку, составленный Джимсом Чако. Вы можете скачать его на Kaggle.

Проще говоря, Adaptive Boosting или AdaBoost – это комплексный метод, используемый в машинном обучении для прогнозирования значения на основе серии вопросов, учитывающих несколько характеристик. Он основан на принципе построения n отдельных моделей на этапе обучения и последовательной передачи ошибок друг другу, чтобы создать окончательную модель с более сильной способностью предсказывать результат. Если вы хотите узнать более глубокие и технические аспекты AdaBoost, ознакомьтесь с A Guide to AdaBoost: Boosting To Save The Day Вихара Курамы.

Теперь, когда мы только что познакомились с тем, что такое AdaBoost, мы построим нашу собственную прогностическую модель, используя набор данных Airlines, чтобы предсказать задержку Джимса Чакко и классификатора AdaBoost из библиотеки scikit-learn на Python. Идея состоит в том, чтобы создать классификатор, который может прогнозировать, может ли рейс быть задержан, на основе авиакомпании, пункта отправления, пункта назначения, дня недели, времени и продолжительности полета.

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

Теперь, когда мы увидели, как выглядят наши данные, было замечено, что у нас есть столбец «id», который может не иметь отношения к нашей модели, и два столбца, содержащие категориальные данные: «AirportFrom» и «AirportTo». Первый из них мы удалим, а остальные преобразуем в числовые столбцы, поскольку AdaBoost не работает со строковыми типами данных.

Определенно, самое важное, что нужно сделать перед обучением модели, — это выполнить полный анализ наших данных; это идет от просмотра типа данных каждого столбца до оценки наличия пропущенных значений, понимания минимальных и максимальных значений, чтобы решить, нужно ли нам выполнять нормализацию данных и т. д. В этом случае набор данных, который мы использовали, имеет большое удобство использования , поэтому я смог довольно быстро внедрить его на этапе обучения, однако не забывайте, что около 75% времени построения модели машинного обучения будет потрачено на подготовку данных для этого этапа.

При этом следующим и последним шагом является сохранение наших независимых и зависимых функций в отдельных переменных и разделение их для создания наших обучающих и тестовых наборов данных. Обратите внимание, что нашу переменную «y» (столбец задержки) необходимо преобразовать из кадра данных Pandas в серию; используя метод сжатия в этом случае. Как только это будет завершено, мы можем создать экземпляр нашего классификатора AdaBoost и подогнать его к тренировочному набору; затем мы сможем делать прогнозы на тестовом наборе, чтобы определить, будет ли рейс задержан или нет.

В последних двух строках кода мы рассчитали показатель ROC-AUC, чтобы определить, насколько хороша наша модель. Если вы хотите узнать больше об этой метрике, посетите эту запись ускоренного курса по машинному обучению от Google. С оценкой 0,7 мы можем сказать, что наша модель добилась удовлетворительного результата; если требуется более высокий балл, нам нужно будет увеличить количество оценщиков даже до тысяч, однако это приведет к более высокому потреблению вычислительных ресурсов.

Как видите, AdaBoost в основном руководствуется выражением проб и ошибок, чтобы собрать как можно больше знаний и найти оптимальный ответ. Как и все в жизни, чем больше попыток мы предпримем, тем лучших конечных результатов мы достигнем. Если вы хотите узнать больше о том, как настроить классификатор AdaBoost, прочитайте эту историю от Srijani Chaudhury.