БИЗНЕС-ПОНИМАНИЕ

Такси Medallion (желтые) сосредоточены в районе Манхэттена, но их можно поймать в любом месте в пяти районах Нью-Йорка, подняв руку или со стоянки такси.

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

В 2011 году Uber объявила о запуске службы совместного использования поездок в Нью-Йорке, открыв новую эру революционных изменений в сфере услуг такси.

Позволив любому зарегистрироваться в качестве водителя такси на собственном личном транспортном средстве и упростив бронирование поездки одним щелчком мыши в приложении для мобильного телефона, Uber начал создавать новую сеть такси за пределами системы медальонов. Согласно недавним исследованиям. , Покровительство такси значительно сократилось с 2011 года из-за конкуренции со стороны этих служб совместного использования.

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

ПОНИМАНИЕ ДАННЫХ

Для решения любой бизнес-задачи важно понимать сильные и слабые стороны данных, на основе которых будет построено решение. Данные, используемые для создания нашего решения, были собраны и предоставлены Комиссии по такси и лимузинам Нью-Йорка (TLC) поставщиками технологий, авторизованными в рамках программ повышения качества обслуживания пассажиров в такси и ливреях (TPEP/LPEP). Для целей нашего моделирования мы будем использовать данные за январь 2015 года.

Источник данных: https://www1.nyc.gov/site/tlc/about/tlc-trip-record-data.page

ОЧИСТКА ДАННЫХ

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

На этапе очистки данных мы проверяем, попадают ли широта и долгота места съемки в пределы Нью-Йорка, и удаляем те, которые не соответствуют.

ПОДГОТОВКА ДАННЫХ

Хорошая подготовка данных позволяет проводить эффективный анализ и ограничивает ошибки и неточности, возникающие из-за ошибочных данных.

1. Кластеризация и сегментация:

Поскольку частью нашего решения является прогнозирование пикапов в регионе в течение некоторого временного интервала, нам нужно получить регионы и временные интервалы из данных. Давайте начнем с разделения Нью-Йорка на K кластеров, используя широту и долготу пикапов. Используя кластеризацию K-средних, мы группируем точки выдачи в разные регионы.

Поскольку K-Means создает кластеры примерно одинакового размера (кластеры с одинаковым количеством точек), регионы с большим количеством пикапов образуют меньшие и плотные кластеры, тогда как регионы с меньшим количеством пикапов соединяются в более крупные и рыхлые/разреженные кластеры.

Из данных мы видим, что такси может преодолеть до 2 миль за 10 минут. Поэтому мы хотим, чтобы внутреннее расстояние кластера было больше 2 миль, но не меньше 0,5 мили. Оптимальное значение K должно соответствовать этому ограничению. Мы пробовали разные значения кластеров от 30 до 70 кластеров. Попробовав другой диапазон кластеров, мы заметили, что при количестве кластеров 30.

Количество кластеров в радиусе 2 миль: 7,0

Количество кластеров за пределами 2-мильного радиуса: 23,0

· Минимальное межкластерное расстояние: 0,475971

Как видно из графиков, что вышеуказанное условие выполняется, мы выбираем это в качестве оптимального значения k как 30

2. Биндинг по времени

Каждая область разбита на 10-минутный интервал, который соответствует одному временному бину, т. е. каждый временной бин имеет 10 минут. Однако в данных у нас есть время в формате «ГГГГ-ММ-ДД ЧЧ:ММ:СС, которые преобразуются в формат времени Unix, чтобы получить время в формате минут/часов. Количество возможных 10-минутных интервалов: 4464

Общее количество pickup_bins из кластеров: 130567

Количество возможных pickup_bins из всех кластеров: 133920

Теперь, с любым идентификатором региона и 10-минутным интервалом времени, мы можем предсказать количество пикапов.

3. Сглаживание данных

Теперь, когда данные разделены на бины с 10-минутными интервалами, каждый бин должен содержать по крайней мере один пикап. Есть шансы, что временной бин может содержать нулевые срабатывания, что приведет к ошибке функции отношения. Чтобы сгладить этот выброс:

Мы подсчитываем общее количество пикапов в каждом бункере.

Не было бы никакого значения, если бы в ячейке времени не было пикапов. Заполните отсутствующие ячейки времени пикапов 0.

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

4. Временные ряды и преобразования Фурье

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

Для каждого кластера существует шаблон, и с помощью преобразования Фурье мы можем вывести максимальные частоты и амплитуды синусоид, которые составляют наш шаблон из кластера, и использовать их в качестве признаков. Частоты и амплитуды кластера указывают на спрос в этом кластере. Таким образом, их можно использовать в модели для прогнозирования количества пикапов.

Построив амплитуду и частоту синусоидальных составляющих, мы видим, что

1. Паттерн с очень высокой повторяемостью будет иметь высокочастотный компонент и наоборот.

2. Высокая частота в утреннее и вечернее время, так как в часы пик количество пикапов велико. То же самое относится к дню и ночи, но с меньшими частотами.

Мы видим, что при f=0 наблюдается очень высокая амплитуда. Когда частота синусоидальной волны приближается к нулю, синусоида имеет тенденцию быть параллельной оси / линейной, проявляясь как составляющая постоянного тока. Поскольку волна, которую мы преобразовали Фурье, является повторяющейся волной, постоянная составляющая выглядит неоднозначно, поскольку она улавливает информацию предыдущей части волны. Поэтому мы не будем рассматривать его амплитуду и частоту.

МОДЕЛИРОВАНИЕ

Базовые модели

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

1. Использование соотношений данных 2016 г. к данным 2015 г., т. е. отношение = P_2016/P_2015.

2. Использование предыдущих известных значений самих данных за 2016 год для прогнозирования будущих значений.

P_2016 и P_2015 — плотность пикапов для соответствующих лет.

Это наш фрейм данных с плотностью пикапов 2015 и 2016 годов и их соотношениями.

Нашими тремя вариантами были простые скользящие средние, взвешенные скользящие средние и экспоненциально взвешенные скользящие средние. Для каждого из них были рассчитаны коэффициенты и прогнозы для P_2015 и P_2016.

Сравнение различных базовых моделей

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

Разработка функций

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

Ниже приведен список из 14 функций, которые мы используем для моделирования.

· Широта и долгота кластера

· Три верхних амплитуды с соответствующими частотами из преобразования Фурье

· Пять предыдущих плотностей захвата из кластера, для которого должна быть предсказана плотность захвата

· Плотность захвата, предсказанная базовой моделью EMA_PREV.

МОДЕЛИ РЕГРЕССИИ

Тестировать и обучать сплит:

Для тестов и поездов, разделенных по времени, мы берем данные о погрузке за 3 месяца 2016 года и разделяем их таким образом, чтобы для каждого региона у нас было 70% данных в поезде и 30% в тесте. Поскольку это проблема временных рядов, мы должны разделить данные поезда и теста на основе времени.

  1. ЛИНЕЙНАЯ РЕГРЕССИЯ

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

Настройка гиперпараметра выполняется с помощью GridSearchCV(), чтобы найти наилучшую комбинацию значений параметров, т. е. оптимальный параметр. Мы также проводим 3-кратную перекрестную проверку для повышения производительности обобщения.

Измерение эффективности:

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

2. СЛУЧАЙНАЯ РЕГРЕССИЯ ЛЕСА

Следующей моделью, которую мы выбрали, была регрессия случайного леса. Опять же, случайный лес отлично подходит для поддержания точности для большой части данных и не допускает переобучения, если деревьев слишком много. Мы использовали RandomizedSearchCV(), так как он проверяет фиксированное количество настроек параметров, выбранных из указанных дистрибутивов, в отличие от gridsearchcv(), где проверяются все параметры. Мы также проводим 3-кратную перекрестную проверку для повышения производительности обобщения.

Измерение эффективности:

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

3. XGBOOST-РЕГРЕССОР

Наш следующий выбор — XGBoost Regressor, который представляет собой реализацию деревьев решений с градиентным усилением, предназначенных для скорости и производительности. Обучение регрессора Xg-Boost с гиперпараметрами на наших данных поезда.

Измерение эффективности:

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

ОЦЕНКА МОДЕЛИ

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

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

Некоторыми из наиболее важных функций, используемых этими моделями, являются плотность захвата (P (t-1)), за которой следует модель EMA, использующая предыдущие плотности захвата.

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

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

Убедительным экономическим обоснованием было бы запустить пилотный проект желтого такси в течение года и посмотреть, действительно ли эта модель помогает увеличить доход. Если это сработает, желтые такси вернутся к своим дням славы, когда они доминировали в индустрии такси и были менее подвержены влиянию Uber/Lyft.

РАЗВЕРТЫВАНИЕ

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

Использование понимания спроса и предложения такси может повысить эффективность городской системы такси. В целом, наши модели для прогнозирования посадки такси в Нью-Йорке показали хорошие результаты. Регрессионная модель XGboost показала лучшие результаты, вероятно, из-за ее уникальной способности фиксировать сложные зависимости функций. Мы предлагаем разработать мобильное приложение, которое будет использовать данные нашей модели для более эффективного позиционирования такси. Наша модель может быть использована как водителями такси/диспетчерами, так и градостроителями.

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

Один из основных рисков, связанных с предлагаемым нами решением, заключается в том, что иногда может возникать задержка в информации. Учитывая местоположение и текущее время таксиста, как таксиста, он / она за исключением того, чтобы получить прогнозируемые пикапы в его / ее регионе и прилегающих регионах. Поэтому важно обеспечить минимальную задержку информации.

Некоторые из рисков, связанных с этим планом, заключаются в том, что сам парк желтых такси может ежегодно сокращаться из-за того, что водители переходят на Uber/Lyft, поэтому наша модель может не иметь достаточно данных для точного прогнозирования плотности посадки в будущем.

ССЫЛКИ:

1. https://python-visualization.github.io/folium/docs-v0.6.0/quickstart.html#Getting-Started

2. https://github.com/tkrajina/gpxpy/blob/master/gpxpy/geo.py

3. http://dask.pydata.org/en/latest/dataframe.html

4. http://scikit-learn.org/stable/

5. https://xgboost.readthedocs.io/en/latest/

6. https://pandas.pydata.org/

7. http://robertmitchellv.com/blog-bar-chart-annotations-pandas-mpl.html

8. https://matplotlib.org/

9. https://docs.scipy.org/doc/numpy/reference/