Статус: Проект завершен.
Заказчиком в данном проекте является компания, которая занимается перевозкой пассажиров. В ходе данного проекта была разработана модель машинного обучения для прогнозирования количества заказов такси на следующий час по историческим данным о заказах такси в аэропортах.
Python, pandas, scipy, sklearn, statsmodel, matplotlib, TimeSeriesSplit, LinearRegression, DecisionTreeRegressor, LightGBM.
В ходе данного проекта были изучены данные компании, которая занимается перевозкой пассажиров.
Для начала данные были загружены и ресемплированы по одному часу. В ходе предварительного обзора данных было выяснено, что:
- Названия столбцов менять не надо.
- В данных 26496 строчек и 1 столбец.
- Пропусков нет.
- Тип данных преобразовывать не надо.
- Дата и время расположены в хронологическом порядке.
- Имеются данные за полгода за период с 2018-03-01 00:00:00 до 2018-08-31 23:50:00.
На этапе анализа данных было выявлено:
- Наблюдается растущий тренд спроса заказов с марта по август.
- Количество заказов зависит от дня недели и часа дня. Пиковые нагрузки наблюдаются по четвергам и в 00:00. Минимальное количество заказов по вторникам и в 6 утра.
- Год и месяц в моделировании использовать не будем, т.к. в исходных данных информация только за полгода.
- Исходные данные были также проверены на стационарность. График 14-дневного скользящего среднего и его стандартного отклонения показал относительное постоянство дисперсии, но изменение среднего, что свидетельствует о нестационарности. Однако проведенный тест Дики-Фуллера показал его стационарность.
На этапе обучения были обучены 3 модели: LinearRegression, DesisionTreeRegressor и LightGBM. На модели линейной регрессии было подобрано оптимальное значение максимального размера отставания (max_lag). Оно равно 24 часа. Также во входные признаки было добавлено скользящее среднее, рассчитанное в окне 24 часа. Все эти признаки использовались для всех моделей. С помощью инструмнта кросс-валидации TimeSeriesSplit, который сохраняет временную последовательность данных, были подобраны оптимальные гиперпараметры для всех моделей и рассчитаны метрики RMSE.
На этапе тестирования модель LightGBM была выбрана для получения предсказаний на тестовой выборке, т.к. показала наилучшую метрику при кросс-валидации (RMSE = 26 заказов). RMSE модели LightGBM на тестовых данных оказалась равной 42 заказа, т.е. модель в среднем ошибается в предсказаниях на 42 заказа и она проходит по критерию значение метрики RMSE на тестовой выборке не больше 48. Ее параметры: colsample_bytree=0.9, learning_rate=0.05, min_child_samples=1, n_estimators=150, num_leaves=25, objective='regression', random_state=42.
По графику прогнозных и реальных значений видно, что выбранная модель в целом хорошо прогнозирует характер изменения спроса, но в большинстве случаев недооценивает локальные минимумы и максимумы значений.
Сравнение модели LightGBM с константной также показало лучшие метрики.
Рекомендация: Добавить информацию хотя бы еще за полгода, для того, чтобы проследить сезонные колебания спроса.