Анализ задержки рейса со случайным лесом и XGBoost

Авиационная отрасль вносит значительный вклад в экономику Соединенных Штатов. Следовательно, если рейсы задерживаются, изменяются или отменяются, это оказывает финансовое влияние на несколько компаний ежегодно, влияя на экономику. Кроме того, нельзя игнорировать личную потерю времени и денег, а также стресс и разочарование, возникающие из-за задержек. Поэтому в этой статье рассматривается анализ нескольких рейсов для прогнозирования будущих ARRIVAL_DELAYS в соответствии с конкретными авиакомпаниями, что поможет снизить финансовые потери, а также поможет в составлении лучших планов. Основное внимание уделяется построению моделей, а не очистке данных. Кодовая ссылка: https://bit.ly/36Dqhfs

О наборе данных

Набор данных предоставлен Министерством транспорта США и получен через Kaggle по следующей ссылке. Https://www.kaggle.com/usdot/flight-delays. Набор данных состоит из 5 819 079 строк и 30 столбцов. С набором данных возникло несколько проблем. Например, в нем было большое количество пропущенных значений, были проблемы с форматом данных и категориальными значениями, что делало набор данных более нечистым для анализа.

Были использованы следующие переменные -

ARRIVAL_DELAY • DEPARTURE_DELAY • SCHEDULED_TIME • ELAPSED_TIME • AIR_TIME • TAXI_IN • TAXI_OUT • WHEELS_ON • WHEELS_OFF • РАССТОЯНИЕ • ПЕРЕНАПРАВЛЕН • ОТМЕНА • CANCELLATION_REASON • AIR_SYSTEM_DELAY • SECURITY_DELAY • AIRLINE_DELAY 12 • LATE_AIRCRAFT_DELAY • WEATHER_DELAY

Мы будем прогнозировать время ARRIVAL_DELAY для разных авиакомпаний, используя случайный лес и XGBoost.

Случайный лес

Из множества доступных машинных алгоритмов Random Forest - простой в использовании и распространенный вариант. Случайные леса основаны на деревьях решений. Дерево решений - это не что иное, как блок-схема, в которой есть корневой узел, листовой узел и ветви, которые разделяются в зависимости от определенных условий. Никлас Донгес из BuiltInLA утверждает, что случайный лес можно рассматривать как алгоритм, который создает множество деревьев решений и объединяет их все вместе, чтобы дать более точный и стабильный прогноз.

Поскольку случайный лес объединяет результаты нескольких деревьев решений, он называется лесом. Кроме того, поскольку он сочетает в себе множество моделей, он попадает в категорию ансамблевого обучения. Процесс объединения выходных данных деревьев решений выполняется методом под названием Bootstrapping или Bagging. В этом случае был использован самозагрузка. При загрузке создается новый набор данных путем случайной выборки точек данных из исходной базы данных. Например, если исходный набор данных имеет следующие значения {3,2,5,4,6}, то при начальной загрузке будет случайным образом выбрано любое значение и сгенерирован новый набор данных. В этом процессе некоторые значения могут быть опущены, а некоторые значения могут повторяться. Следовательно, следующий возможный набор результатов начальной загрузки - {4,2,5,5,3}. Случайный лес имеет множество преимуществ; однако одним из самых больших плюсов этого метода является то, что он может применяться как для классификации, так и для решения задач регрессии.

Первым шагом в реализации модели является импорт RandomForestRegressor из пакета обучения Sci-Kit. Затем будет создан объект с именем regressor с несколькими параметрами. Случайный лес имеет несколько параметров, как показано ниже:

n_estimators = количество прядей в лесу

max_features = максимальное количество функций, учитываемых для разделения узла

max_depth = максимальное количество уровней в каждом дереве решений

min_samples_split = минимальное количество точек данных, помещаемых в узел перед разделением

min_sample_leaf = минимальное количество точек данных, разрешенных в листовом узле

bootstrap = метод выборки точек данных

random_state = начальное число, используемое генератором случайных чисел (каждый раз дает одно и то же значение o / p)

В этом случае использовались только n_estimators и random_state, а другие параметры гипер настройки были установлены автоматически. Затем объект регрессора применяется к обучающим данным с помощью метода соответствия.

После построения модели прогнозы были сделаны с использованием метода прогноз. Затем прогнозы были объединены с исходным набором данных для получения названий аэропортов отправления и назначения, а также авиакомпаний.

Выходные данные говорят нам, что Alaska Airlines (AS) будет примерно на 21 минуту раньше, а American Airlines будет примерно на 8 минут раньше.

Наконец, модель была оценена путем вычисления значения R-квадрат и RMSE. Значение R-квадрат определялось с использованием метода score. Для RMSE пакет mean_squared_error был импортирован из библиотеки Sklearn и применен к тестовым и прогнозируемым данным.

Значение R-квадрата составляет почти 100%, а RMSE - низкое значение 2,56. Эти оценки указывают на переоснащение и, следовательно, модель не очень хороша.

Экстремальное усиление градиента

Еще один популярный алгоритм машинного обучения - XGBoost, что является аббревиатурой от Extreme Gradient Boosting. Он также может выполнять прогноз регрессии и классификации. В этом случае упор на регресс. XGBoost использует структуру градиентного повышения (GBM) и принадлежит к семейству алгоритмов повышения. Основная идея бустинга заключается в том, что он строит слабую модель, делает выводы о важности и параметрах нескольких функций, а затем на основе этих выводов создает новую, более надежную модель.

Очень важно знать о древовидных ансамблях, которые являются базовыми обучающимися для XGBoost. Ансамбль деревьев - это не что иное, как набор деревьев классификации и регрессии (CART). Деревья генерируются одно за другим, и в следующих итерациях делаются попытки минимизировать ложные классификации. Каждое дерево производит различную оценку прогноза, которая зависит от данных, которые оно видит, и оценки каждого дерева суммируются для получения окончательной оценки.

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

В-третьих, создайте объект регрессора XGBoost, вызвав «XGBRegressor ()» из библиотеки XGBoost.

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

цель: определяет функцию потерь, reg: линейная для регрессии, reg: логистическая для классификации

colsample_bytree: процент функций, используемых в дереве.

Learning_rate: уменьшение размера шага, используемое для предотвращения переобучения. Изменяется от 0 до 1.

max_depth: определяет, насколько глубоко будет расти каждое дерево

альфа: L1 регуляризация весов свинца.

n_estimators: количество деревьев, которые нужно построить.

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

Из прогнозов можно понять, что рейс Alaska Airlines из SEA в ANC будет задержан на девять минут. Это также может означать, что рейс American Airlines из Лос-Анджелеса в PBI будет на 3 минуты раньше.

На последнем этапе для определения точности XGBoost использовались те же метрики оценки, которые использовались для случайного леса. Следовательно, были рассчитаны значения R-квадрат и RMSE.

Для XGBoost значение R в квадрате составляет 70%, а значение RMSE - 22,2, что хорошо, что указывает на отсутствие переобучения. Следовательно, это лучшая модель по сравнению со случайным лесом.

Заключение

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