Можно ли предсказать, насколько вы хороший водитель?

Введение

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

Такая модель может иметь несколько приложений, таких как страховой рейтинг / ценообразование, система оценки водителей, бортовая система предупреждений, компании, желающие отслеживать водителей своего автопарка. Некоторые компании (Uber, Lyft, Progressive) уже используют свои собственные личные данные для прогнозирования/построения своих моделей.

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

Примечание. Код и блокнот доступны на Github здесь

Описание набора данных

Исходный набор данных представляет собой zip-файл, содержащий 38 файлов CSV, соответствующих 38 автомобильным поездкам (~ 30 минут каждая).

Содержимое файлов CSV:

  • Столбец 1: Время (в секундах)
  • Столбец 2: Скорость автомобиля (в м/с)
  • Столбец 3: номер смены (0 = промежуточное положение)
  • Столбец 4: Нагрузка на двигатель (% от максимальной мощности)
  • Столбец 5: Общее ускорение (м/с²)
  • Столбец 6: обороты двигателя
  • Колонка 7: Питч
  • Столбец 8: Боковое ускорение (м/с²)
  • Столбец 9: количество пассажиров (0–5)
  • Столбец 10: Загрузка автомобиля (0–10)
  • Столбец 11: Состояние кондиционера (0–4)
  • Столбец 12: Открытие окна (0–10)
  • Столбец 13: Громкость радио (0–10)
  • Столбец 14: Интенсивность дождя (0–10)
  • Столбец 15: Видимость (0–10)
  • Столбец 16: Самочувствие водителя (0–10)
  • Столбец 17: Спешка водителя (0–10)

Исследовательский анализ данных

EDA был проведен в 3 отдельных этапа:

  • Загрузка наборов данных и проверка структуры, типов объектов и нулевых значений.
  • Просмотр распределения признаков (поиск выбросов) и любых корреляций признаков.
  • Извлечение событий вождения (торможение, ускорение, поворот), вычисление метрик вокруг этих событий и последующее построение метрик в соответствии с нашим целевым значением driver_rush

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

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

Моделирование

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

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

Список предварительно выбранных моделей классификации:

  • Логистическая регрессия
  • Древо решений
  • Случайный лес
  • АдаБуст
  • K Ближайшие соседи
  • XGBoost
  • SVC (классификация опорных векторов)

Из наших базовых моделей моделирования и после сведения задачи классификации к бинарной классификации наиболее эффективными моделями являются XGBoost Classifier, Decision Tree Classifier, Logistic Regression.

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

Для каждого выбранного классификатора (Random Forest и XGBoost) мы выполнили поиск по сетке вместе с перекрестной проверкой, чтобы определить лучшие гиперпараметры для данного классификатора.

В конце концов, самым эффективным классификатором был случайный лес с общим средним баллом проверки 0,707.

Вывод

  • Random Forest был лучшим классификатором для прогнозирования индикатора спешки водителей.
  • Удивительно, но ускорения и повороты на самом деле не указывали на то, что можно было предсказать наши целевые значения. Это наблюдение определенно нуждается в дополнительных исследованиях, поскольку на данный момент у нас недостаточно данных.
  • Следующие шаги включают сбор дополнительных данных от разных дайверов и способ маркировки этих данных. Я бы посмотрел на создание приложения, которое делает это, и попросил бы друзей принять участие.
  • Также было бы интересно обучить нейронную сеть и посмотреть, сможет ли она работать лучше, чем случайный лес.