2 года AI-lab в Ruter — Часть 2
Как наш инновационный центр помогает сделать общественный транспорт лучше
Это вторая часть цикла статей об AI-лаборатории Ruter. В первой итерации AI-lab студенты должны были найти способ помочь команде поддержки клиентов, прочитать часть 1 здесь ! Для итерации 2021 года новой группе из четырех студентов было поручено попытаться предсказать задержки в огромной транспортной сети Ruter.

2021 — прогнозы мобильности и времени в пути
Задержки являются бременем для путешественников, пользующихся общественным транспортом. Путешественники испытывают неуверенность в том, прибудут ли они вовремя. Согласно внутреннему анализу Ruter , задержки в 2,5-6 раз более обременительны для путешественников, чем само время в пути. Поэтому необходимы модели для точного прогнозирования этих задержек в режиме реального времени, и команда из четырех студентов решила использовать модели машинного обучения для достижения этой цели.
Текущий метод расчета предполагаемого времени прибытия использует реактивный подход. Когда на каком-то звене обнаруживается задержка, остальные звенья пути корректируются по этой задержке. Этот метод предполагает, что задержка на канале не усугубляется для нисходящих каналов, но это часто имеет место при большом трафике или в час пик. Цель лаборатории искусственного интеллекта 2021 года состояла в том, чтобы опробовать подход, основанный на данных, для упреждающего прогнозирования этих задержек с использованием машинного обучения. Решение будет иметь потенциал для:
- Улучшите взаимодействие с пользователем, предоставив более точную информацию об экранах дисплея и приложениях.
- Дайте пользователям информацию об ожидаемых задержках при планировании поездки
- Упрощение динамического планирования маршрута
Эта логика может время от времени давать ошибочные данные, которые трудно обнаружить, если не погрузиться в данные и не посмотреть на конкретные маршруты или автобусные остановки, что сложно при обработке миллионов строк. Поэтому значительное количество времени было потрачено на категоризацию автобусных остановок и маршрутов с множеством ошибок, а затем на решение, будет ли полезно просто удалить эти точки данных из нашего набора данных, чтобы улучшить производительность наших моделей машинного обучения.
Весь процесс, которому мы следовали при решении задачи, от сбора данных до анализа и определения лучшей модели машинного обучения, можно свести к следующим основным шагам:

Сбор данных шины.
Перед получением нужных данных нам нужно было получить обзор хранилища данных и различных содержащихся в нем таблиц. Скрипты были написаны на SQL, извлекая данные из базы данных PostgreSQL.
Сбор внешних данных.
Чтобы расширить возможности прогнозирования будущих моделей машинного обучения, мы хотели добавить релевантные внешние данные. Поэтому исторические данные о погоде и трафике были взяты из Интернета и объединены в наш набор данных. Однако, в том числе из-за грубого разрешения станций трафика, эти данные оказали минимальное влияние на наши модели машинного обучения.
Очистка данных:
необработанные данные были в непригодном для использования формате, а также содержали несколько ошибочных регистраций и незавершенных поездок. Отсутствие данных и дубликаты также были проблемой. Чтобы справиться с этим, был разработан скрипт Python, в значительной степени зависящий от библиотеки pandas . Этот сценарий стал результатом длительного процесса проб и ошибок с использованием Jupyter Notebook и AWS Sagemaker.
Разработка функций:
мы обнаружили значительную корреляцию между временем в пути автобуса по определенному маршруту и временем в пути автобуса, который ехал по тому же маршруту ранее. Вдохновившись анализом временных рядов, мы создали несколько функций, которые, по нашему мнению, могли бы помочь модели, в том числе какой маршрут двигался, поскольку категориальная функция казалась естественной. Это означало, что команда столкнулась с «Проклятием размерности», поскольку даже наш небольшой выбор автобусных маршрутов содержал сотни различных отрезков между двумя остановками. Вместо этого было решено включить эту информацию, используя разные средние значения для разных отрезков, а также избежать утечки памяти в нашем наборе данных, в частности убедиться, что средние значения, представленные в качестве признаков, не содержат данных, появившихся позже, чем текущая точка данных.
Обучение моделей машинного обучения.
Было много свободы, связанной с тестированием различных моделей машинного обучения. Нам предложили попробовать обе модели машинного обучения, которые мы знали заранее, и изучить новые модели. Модель линейной регрессии использовалась в качестве базовой линии, и выдержки из моделей, которые были протестированы на ее основе, включают: «Регрессия хребта», «GAM», «Нейронные сети» и «Модели усиленного дерева». Усиленные древовидные модели, такие как XGBoost, дали наилучшие результаты, хотя улучшение по сравнению с базовой моделью линейной регрессии было незначительным. Это произошло из-за большой корреляции между временем в пути и характеристикой «среднее значение последних 10 времен в пути для этой ссылки». Нашими основными инструментами для этой части были Amazon Sagemaker с Python.

Прогноз:
после обучения модели машинного обучения ее можно сохранить и использовать для прогнозирования времени в пути для новых наборов данных. Продолжение нашего задания может включать в себя создание модели с помощью конвейера, который извлекает данные из шины, выполняет преобразование данных и передает данные в модель. Затем прогнозы могут быть отправлены в приложение Ruter и отображаться на экранах.
Анализ ML-модели:
после выбора модели мы углубились в детали прогнозов и остатков модели. Среди прочего, мы хотели узнать, насколько эта модель работает лучше, чем текущее решение, получить визуализацию ошибки для разных звеньев данного автобусного маршрута, найти, где модель работала плохо и почему. Ответы визуализировались через разные сюжеты, и анализ стал главным событием нашей презентации в конце лета.

С лета 2021 года логика оценки задержек была дополнительно оптимизирована, поэтому сегодня сравнения могут выглядеть иначе.
Подводя итоги лета 2021 года, нас было 4 студента, работающих над задачей: «Использование моделей машинного обучения для прогнозирования времени в пути в режиме реального времени». Лето завершилось докладом о новых открытиях, проблемах, результатах и анализе результатов. Наша работа со сбором данных, очисткой данных, результатами и пониманием данных заложила основу для нас двоих, которые продолжали работать стажерами неполный рабочий день. Как стажеры, работающие неполный рабочий день, мы изучали, как работают модели машинного обучения, когда мы опускаем функции, связанные с непосредственным прошлым, и делаем прогнозы на будущее. Стажировка с частичной занятостью завершилась анализом данных с использованием новых методов регистрации прихода и ухода.
В 2022 году у нас было несколько интересных вариантов использования машинного обучения в общественном транспорте, следите за обновлениями в третьей части серии статей AI-lab!
Авторы сценария Синдре Скаугсет Олдеркьяр и Фредрик Вильгельм Батлер Ван