Прогнозирование стоимости такси с помощью модели прогнозирования BigQuery ML

Что такое ML Study Jam?

Бесплатная программа машинного обучения с использованием Qwiklabs.

Что такое BigQuery?

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

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

Поток прогнозирования BigQuery ML

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

  1. Выберите ценные поля из таблицы необработанных данных для прогнозов.
  2. Выберите подходящий classfication model для обучения вашей модели.
  3. Оцените производительность модели.
  4. Если производительность модели недостаточна, попробуйте отфильтровать данные или изменить нужный столбец таблицы.
  5. Если модель достаточно хороша, используйте ее для прогнозирования данных.
  6. Получите прогнозы.

Прогнозирование стоимости такси с помощью модели прогнозирования BigQuery ML

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

Урок, который мы собираемся извлечь, состоит в том, чтобы предсказать total_fare, используя открытые данные о такси Нью-Йорка.

Рекорд желтого такси в Нью-Йорке

Https://www1.nyc.gov/site/tlc/about/tlc-trip-record-data.page

Выберите функции и создайте набор данных для обучения

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

Tolls Amount
Fare Amount 
Days of the week 
Hour of Day 
Pick up address
Drop off address
Number of passengers

Теперь у нас есть все нужные столбцы, а total_fare - это то, что мы хотим спрогнозировать позже.

Выберите тип модели BQML и укажите параметры

Мы выбираем Forecasting для прогнозирования total_fare, потому что хотим получить numeric value в качестве результата прогнозирования. Запрос SQL будет таким:

И результат будет:

Оценить производительность модели классификации

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

В BQML mean_squared_error - это поле, доступное для запроса при оценке вашей обученной модели машинного обучения. Добавьте SQRT(), чтобы получить RMSE.

Затем мы можем оценить, насколько хорошо модель работает с этим запросом, используя ML.EVALUATE.

Прогнозировать стоимость проезда на такси

Теперь мы можем использовать новую модель для прогнозов.

Похоже, что прогнозы для нас недостаточно хороши. Давай исправим.

Улучшение модели с помощью Feature Engineering

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

Есть некоторые странные выбросы, такие как отрицательные тарифы или тарифы свыше 50000 долларов США.
Давайте ограничим данные только тарифами от 6 до 200 долларов США.

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

и после этого улучшите RMSE.

Это все для этой лабораторной работы, в следующий раз мы узнаем, как использовать тип модели BQML logistic_reg в статье: