"Машинное обучение"

Прогнозирование и обнаружение аномалий продолжительности дорожных заторов

Контекст

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

Представьте.

В 17:30 вы, наконец, уходите с работы после очень напряженного дня. Возможно, вы запланировали ночь, чтобы просто расслабиться и посмотреть любимое шоу, чтобы расслабиться. Вы садитесь в автобус, думая: «Мне просто нужно вытерпеть еще 50 минут, и тогда я буду дома». Но на шоссе случаются неожиданные происшествия, из-за которых вы на несколько часов застреваете в пробке.

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

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

Чтобы предотвратить подобные трагедии, я прошу:

Вопросы

  1. Могу ли я предсказать продолжительность перегрузки, если это произойдет?
  2. Могу ли я обнаружить аномалии в событиях заторов на дорогах?

Чтобы решить эти проблемы, я разработал трекер автобуса в реальном времени для водителей и пассажиров автобусов:

Продукт

Это автобусный трекер в реальном времени для Сиэтла. Справа я постоянно делаю прогнозы продолжительности и уведомляю о перегрузках. Если события нет, цвет ячеек таблицы отсутствует; если есть скопление и это нормально, то цвет ячеек белый, при этом будет сделан прогноз того, как долго будет продолжаться скопление. Но если возникнут аномалии, они будут помечены оранжевым цветом, чего, к сожалению, еще не произошло, пока я запускал трекер.

Это позволяет водителям и водителям автобусов сообщать о нарушениях в дорожную администрацию, чтобы они могли вмешаться до того, как они пройдут полный цикл, предотвращая трагедии, как в контексте.

Теперь поговорим о том, как обучаются модели:

Данные

Первичный источник данных взят из недавно опубликованного исследования. Эти данные содержат 25 миллионов данных о дорожных событиях, а также 6 миллионов данных о погодных явлениях в США с 2016 по 2019 год. Из-за размера я разделил данные с помощью pyspark, и, поскольку я живу в районе Сиэтла, я выбрал штат Вашингтон в качестве центра внимания с учетом масштабируемости. Я также взял некоторые данные о населении на уровне округа из бюро переписи населения США, поскольку предполагал, что плотность населения может быть важной характеристикой.

Затем, с помощью разработки функций, я перешел от исходных 24 функций к 325, а затем вернулся к 20, используя такие методы, как полиномиальные преобразования. Выбраны все последние 20 функций, поскольку они могут повлиять на производительность модели как минимум на 5%.

Если вы хотите узнать, как именно это было сделано, посетите репозиторий GitHub.

Модели

После получения и очистки данных я построил модель контролируемой регрессии для прогнозирования продолжительности перегрузки с помощью XGboost с R2, равным 0,53. Скачок с 0,19 до 0,53 является результатом сочетания разработки функций и поиска по сетке гиперпараметров.

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

Поскольку не существует метрики для оценки обучения без учителя, здесь я взял 3 наблюдения в последовательном порядке. В том же месте, в то же время, но с разницей в несколько минут. Первое наблюдение в 7:33 имело перегрузку и, по прогнозам, продлится в течение 41 минуты, через минуту он дал такой же прогноз, и это считается нормальным. Однако через 9 минут, в 7:43, скопление не только не улучшилось, но и ухудшилось, и это было немедленно отмечено как аномалия.

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

Находки

В целом погода мало влияет на продолжительность пробок в Западной Австралии. Отчасти это связано с тем, что с 2016 по 2019 год погода была довольно мягкой, в целом от хорошей до мягкой.

Построив прогнозирующий показатель продолжительности (регрессия), я обнаружил, что пробки на дорогах самые сильные в летние месяцы, в первые и вторые выходные каждого месяца, понедельник и пятница, а также 10:00, 13:00 и 21:00

Я также обнаружил, что самая важная особенность - это то, как «город» находится (т. Е. Долгота - это то, насколько вы находитесь на востоке или западе. расположен, запад Западной Австралии более городской, чем восточная сторона).

Стоит отметить, что серьезность рассчитывается на основе вашей текущей скорости по сравнению с ограничением скорости (т. Е. Если ваша текущая скорость составляет 50 миль в час, а ограничение скорости 60 миль в час, у вас есть разница в 10 , то это степень серьезности 1; разница 20, степень серьезности 2 и т. д.).

Создав детектор аномалий (классификация), я обнаружил, что аномалии скопления могут произойти в округах с низкой плотностью населения, в весенние месяцы. , по понедельникам и воскресеньям (особенно воскресеньям) и в утренние часы ( С 6 до 12 часов). Это будет полезно для отделов аварийного реагирования на дорожное движение, чтобы более эффективно распределять свои ресурсы для раннего вмешательства.

Наконец, если вы хотите увидеть код, посетите репозиторий GitHub для этого проекта. И не стесняйтесь обращаться по любым вопросам или проблемам!