ПРЕДСКАЗАНИЕ СТОИМОСТИ ПОЕЗДКИ НА ТАКСИ С ПОМОЩЬЮ МЕТОДОВ МАШИННОГО ОБУЧЕНИЯ - Студенческий научный форум

XI Международная студенческая научная конференция Студенческий научный форум - 2019

ПРЕДСКАЗАНИЕ СТОИМОСТИ ПОЕЗДКИ НА ТАКСИ С ПОМОЩЬЮ МЕТОДОВ МАШИННОГО ОБУЧЕНИЯ

 Комментарии
Текст работы размещён без изображений и формул.
Полная версия работы доступна во вкладке "Файлы работы" в формате PDF

В статье рассматривается применение машинного обучения для задачи предсказания цены поездки на такси в Нью-Йорке, основанной на наборе данных "New York City Taxi Fare Predication" за 2014 год, полученных с платформы Kaggle [1]. Kaggle – это платформа для проведения соревнований по Data Science. Данное соревнование проводилось с 24.07.18 по 25.09.18 в партнерстве с Google Cloud [2] и Coursera [3].

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

Данная работа выполнена в рамках дисциплины «Machine Learning. Обучающиеся технические системы», научный руководитель – д.ф.-м.н., профессор Воронова Л.И. [4]. Для реализации использовались библиотеки pandas [5], sklearn [6].

Обучающий набор данных Dataset содержит 7 полей, представленных в табл.1 [1].

Таблица 1

Структура обучающего набора данных

Номер Поля

Поле

Тип данных

Значение

1

key

String

Уникальный идентификатор поездки

2

pickup_datetime

Timestamp

Дата и время начало поездки

3

pickup_longitude

Float

Координаты долготы начала поездки

4

pickup_latitude

Float

Координаты широты начала поездки

5

dropoff_longitude

Float

Координаты долготы пункта назначения

Продолжение таблицы 1

6

dropoff_latitude

Float

Координаты широты пункта назначения

7

passenger_count

Integer

Количество пассажиров

8

fare_amount

Float

Сумма поездки

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

Таблица 2

Пример обучающего набора данных

Номер поля

1

2

3

4

2014-02-19 07:22:00 .00000074

12.5

2014-02-19 07:22:00 UTC

-73.98643

2014-12-06 20:36:22.0000008

4

2014-12-06 20:36:22 UTC

-73.979815

Анализ данных

Рассматриваемый пример содержит данные о местоположении. Для анализа данных признаков нанесем на карту геопозиции вызова такси. На рис.1 изображена карта Нью-Йорка, с метками местоположений вызова такси.

Рис.1 Карта местоположений вызова такси на основе DataSet [1]

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

Рис.2 Карта пунктов назначения поездки на основе DataSet [1]

Визуализированные данные местоположений облегчают выбор рассматриваемой зоны. Для данного примера была выбрана зона, которая представлена на рис.1,2:

долгота: [-73.3681, -74.4461]

широта: [40.5493, 41.0245]

Удаляем данные не входящие в рассматриваемую зону координат с помощью функции DataSet.drop [5], где DataSet – набор данных используемый для обучения и тестирования.

График количества поездок за месяц представлен на рис.3. Данный показатель позволяет проследить зависимость количества поездок от месяца. Эти данные могут помочь при анализе входных признаков и построении модели для прогнозирования цены поездки.

Рис.3 Количества поездок за месяц

На рис.4 показано сравнение средней стоимости поездки за день (2014 г.). Данный график позволяет посмотреть, как дата поездки влияет на средний чек. Данные о среднем чеке позволяют проследить тенденцию с предпосылками увеличения или понижения чека поездки.

Рис.4 Средняя стоимость поездки за день (2014г.)

На основе проведенного анализа исследуемых данных были выбраны признаки для обучения модели представленные в табл.3. Данный набор признаков показал лучший результат при обучении и тестировании.

Таблица 3

Выбранные признаки для обучения модели

Признак

Описание

distance

Расстояние между двумя координатами

date_number

Дата поездки

hour

Час вызовы такси

pickup_longitude

Координаты долготы начала поездки

pickup_latitude

Координаты широты начала поездки

dropoff_longitude

Координаты долготы пункта назначения

dropoff_longitude

Координаты широты пункта назначения

Описание выбранных для исследования алгоритмов

Дляданнойзадачибыливыбраныалгоритмы: KNeighborsRegressor, DecisionTreeRegressor, RandomForestRegressor, ExtraTreesRegressor, MLPRegressor.

KNeighborsRegressor – регрессия на основе k-ближайших соседей. Класс прогнозируется локальной интерполяцией целей, связанных с ближайшими соседями в обучающем наборе [7].

DecisionTreeRegressor – это метод обучения на основе построения дерева решений, используемый для регрессии. Цель состоит в том, чтобы создать модель, которая прогнозирует значение целевой переменной, изучая простые правила принятия решений, выведенные из функций данных. Чем глубже дерево, тем сложнее правила принятия решений и тем лучше модель [8].

RandomForestRegressor – регрессионная модель на основе построения случайного леса. Каждое дерево в ансамбле строится из выборки, взятой с заменой из обучающего набора. Кроме того, при разделении узла во время построения дерева выбранное разделение не является лучшим разделением среди всех объектов. Вместо этого выбранное разделение является лучшим разделением между случайным подмножеством функций. В результате этой случайности смещение леса обычно немного увеличивается (по отношению к смещению одного неслучайного дерева), но из-за усреднения его дисперсия также уменьшается, обычно более чем компенсируя увеличение смещения, следовательно, получая в целом лучшую модель [8].

ExtraTreesRegressor – модель реализующая построения деревьев решений. Как и в randomforest, используется случайное подмножество объектов-кандидатов, но вместо поиска наиболее отличительных порогов, пороги выбираются случайным образом для каждого объекта-кандидата, и лучший из этих случайно сгенерированных порогов выбирается в качестве правила разделения. Это обычно позволяет немного уменьшить дисперсию модели за счет немного большего увеличения смещения [8].

MLPRegressor – модель многослойного персептрона. Эта модель оптимизируется с помощью LBFGS или стохастического градиентного спуска. Модель обучает итеративно, поскольку на каждом временном шаге частные производные функции потерь по параметрам модели вычисляются для обновления параметров. Персептрон также может иметь термин регуляризации, добавленный к функции потерь, который сжимает параметры модели для предотвращения переобучения [9].

Оценка качества алгоритма

В качестве метрики оценки качества алгоритма регрессии в соревновании используется среднеквадратичная ошибка.

Среднеквадратичная ошибка (RMSE) часто используемая мера различий между значениями выборки предсказанными моделью и реальными значениями. RMSE – это показатель точности, позволяющий сравнивать ошибки прогнозирования разных моделей для конкретного набора данных, а не между наборами данных, так как он зависит от масштаба. Среднеквадратичная ошибка рассчитывается по формуле (1) [10].

(1)

Программно RMSE реализуется с помощью функции sqrt(mean_squared_error(y, y_predict), где y – истинное значение класса, y_predict – предсказанное моделью значение класса.

Анализ результатов регрессии

Было проведено сравнение алгоритмов машинного обучения на тренировочном и тестовом наборе. На рис.5 показан график сравнения алгоритмов регрессии.

Рис.5 Сравнение алгоритмов машинного обучения

После обучений и тестирований моделей был выбран RandomForestRegressor (RMSE (train): 1.90572, RMSE (test): 4.43476). Данный алгоритм лучше всего подходит для решения поставленной задачи.

Для наибольшей точности необходимо подобрать оптимальные параметры модели при обучении. Массив parameter_space имеетпереченьпараметров [6].

parameter_space = {'bootstrap': [True, False],
'max_depth': [10, 20, 30, 40, 50, 60, 70, 80, 90, 100, None],
'max_features': ['auto', 'sqrt'],
'min_samples_leaf': [1, 2, 4],
'min_samples_split': [2, 5, 10],
'n_estimators': [200, 400, 600, 800, 1000, 1200, 1400, 1600, 1800, 2000]}

С помощью функции GridSearchCV осуществляется поиск наилучшей модели по указанным значениям параметров. Наилучшие показатели RMSE показала модель с параметрами: {'bootstrap': False, 'max_depth': 50, 'max_features': 'sqrt', 'min_samples_leaf': 2, 'min_samples_split': 5, 'n_estimators': 600} [6]. Выбранными параметрами являются те, которые максимизируют оценку на тестовом наборе данных.

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

В качестве общего метода выбора модели применяют скользящий контроль (кросс-валидацию). Под общим методом выбора модели определяют алгоритмы, предоставляющие возможность автоматической настройки параметров модели [11]. Программно кросс-валидацию реализует функция cross_validate [6]. На рис.6 изображен график кросс-валидации.

Рис.6 Результаты кросс-валидации

В результате кросс-валидации была установлена наилучшая модель (Среднеквадратичная ошибка тренировочного набора: 1.56246, Среднеквадратичная ошибка тестового набора: 3.58217). После обучения модели получили график предсказания цены по поездки на такси в зависимости от расстояния поездки с помощью алгоритма Random forest, который представлен на рис.7.

Рис.7 Предсказание цены поездки на такси в зависимости от расстояния поездки с помощью алгоритма Random forest

Выводы

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

Исследование показало, что:

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

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

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

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

Список источников и литературы

New York City Taxi Fare Prediction // kaggle URL: https://www.kaggle.com/c/new-york-city-taxi-fare-prediction

Google Cloud URL: https://cloud.google.com/

Coursera URL: https://www.coursera.org/

Л.И.Воронова Интеллектуальные базы данных: учебное пособие / М.: МТУСИ, 2013. -35 с.

Pandas documentation // pandas.org URL: http://pandas.pydata.org/pandas-docs/stable/

Scikit-learn documentation // scikit-learn.org URL: http://scikit-learn.org/stable/user_guide.html.

Кернога А.Л., Бурак Т.И. Сравнение подходов к прогнозированию методом ближайших соседей // Вестник ПНИПУ. Электротехника, информационные технологии, системы управления. 2015. №13.

Zhu R, Zeng D, Kosorok MRReinforcement Learning Trees” // Journal of the American Statistical Association. 2015. №110(512). С. 1770-1784.

He, Kaiming, et al. "Delving deep into rectifiers: Surpassing human-level performance on imagenet classification" // arXiv. 2015.

T. Hastie, R. Tibshirani, J. Friedman “Elements of Statistical Learning” // Springer; 2nd edition. 2016.

Painsky A., Rosset S. "Cross-Validated Variable Selection in Tree-Based Methods Improves Predictive Performance" // IEEE Transactions on Pattern Analysis and Machine Intelligence. 2017. №39(11). С. 2142-2153.

Просмотров работы: 154