В этой статье будет рассмотрено лабораторное занятие Создание моделей ML с помощью BigQuery ML: Challenge Lab. В предыдущей лабораторной работе вы познакомитесь с Начало работы с BQML, Предсказание покупок посетителей с помощью модели классификации в BQML, Предсказание стоимости проезда в такси с помощью модели прогнозирования BigQuery ML, Брекетология с помощью машинного обучения Google и Внедрение чат-бота службы поддержки с помощью Dialogflow и BigQuery. мл.

Задача содержит 5 обязательных заданий.

1. Создайте набор данных для хранения моделей машинного обучения.

2. Создайте прогнозирующую модель машинного обучения BigQuery.

3. Создайте вторую модель машинного обучения.

4. Оцените две модели машинного обучения.

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

Сценарий испытания

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

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

Вас попросили разработать модель машинного обучения на основе каждой из этих входных функций. Учитывая тот факт, что в течение части 2020 года в Остине действовали приказы оставаться дома из-за COVID-19, вы будете работать с данными за предыдущие годы. Вам было поручено обучить свои модели на данных за 2018 год, а затем сравнить их с данными за 2019 год на основе средней абсолютной ошибки и квадратного корня из средней квадратичной ошибки.

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

В качестве последнего шага вы должны создать и выполнить запрос, использующий модель, включающую тип подписчика в качестве признака, чтобы спрогнозировать среднюю продолжительность поездки для всех поездок с самой загруженной станции проката велосипедов в 2019 году (на основе количества поездок на станция в 2019 году), где тип подписки «Одна поездка».

1. Создайте набор данных для хранения моделей машинного обучения.

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

  • В консоли GCP перейдите в меню навигации >BigQuery.
  • Нажмите «Создать набор данных».

  • Напишите имя нужного набора данных.

  • Нажмите «Создать набор данных».

2. Создайте прогнозную модель машинного обучения BigQuery.

Эта задача просит нас обучить модель на основе.

  • Скопируйте и вставьте следующий код в редактор запросов, а затем нажмите «Выполнить».
CREATE OR REPLACE MODEL royalbike.model
OPTIONS
  (model_type='linear_reg', labels=['duration_minutes']) AS
SELECT
    start_station_name,
    EXTRACT(HOUR FROM start_time) AS start_hour,
    EXTRACT(DAYOFWEEK FROM start_time) AS day_of_week,
    duration_minutes
FROM
    `bigquery-public-data.austin_bikeshare.bikeshare_trips` AS trips
JOIN
    `bigquery-public-data.austin_bikeshare.bikeshare_stations` AS stations
ON
    trips.start_station_name = stations.name
WHERE
    EXTRACT(YEAR FROM start_time) = 2018
    AND duration_minutes > 0
  • Запрос должен вернуть название начальной станции, час начала поездки, день недели поездки и адрес начальной станции.

3. Создайте вторую модель машинного обучения

Подобно второй задаче, эта задача требует обучения второй модели.

  • Нажмите «Создать новый запрос», а затем скопируйте и вставьте следующий запрос в редактор запросов BigQuery.
CREATE OR REPLACE MODEL royalbike.subscriber
OPTIONS
  (model_type='linear_reg', labels=['duration_minutes']) AS
SELECT
    start_station_name,
    EXTRACT(HOUR FROM start_time) AS start_hour,
    subscriber_type,
    duration_minutes
FROM `bigquery-public-data.austin_bikeshare.bikeshare_trips` AS trips
WHERE EXTRACT(YEAR FROM start_time) = 2018
  • Запрос должен вернуться, чтобы предсказать продолжительность поездки на велосипеде.

4. Оцените две модели машинного обучения

  • Нажмите «Создать новый запрос», а затем скопируйте и вставьте следующий запрос в редактор запросов BigQuery.
-- Evaluation metrics for location_model
SELECT
  SQRT(mean_squared_error) AS rmse,
  mean_absolute_error
FROM
  ML.EVALUATE(MODEL royalbike.model, (
  SELECT
    start_station_name,
    EXTRACT(HOUR FROM start_time) AS start_hour,
    EXTRACT(DAYOFWEEK FROM start_time) AS day_of_week,
    duration_minutes
  FROM
    `bigquery-public-data.austin_bikeshare.bikeshare_trips` AS trips
  JOIN
   `bigquery-public-data.austin_bikeshare.bikeshare_stations` AS stations
  ON
    trips.start_station_name = stations.name
  WHERE EXTRACT(YEAR FROM start_time) = 2019)
)
  • Нажмите «Создать новый запрос», а затем скопируйте и вставьте следующий запрос в редактор запросов BigQuery.

-- Evaluation metrics for subscriber_model
SELECT
  SQRT(mean_squared_error) AS rmse,
  mean_absolute_error
FROM
  ML.EVALUATE(MODEL royalbike.subscriber, (
  SELECT
    start_station_name,
    EXTRACT(HOUR FROM start_time) AS start_hour,
    subscriber_type,
    duration_minutes
  FROM
    `bigquery-public-data.austin_bikeshare.bikeshare_trips` AS trips
  WHERE
    EXTRACT(YEAR FROM start_time) = 2019)
)
  • Запрос должен возвращать как среднюю абсолютную ошибку, так и среднеквадратичную ошибку модели.

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

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

  • Нажмите «Создать новый запрос», а затем скопируйте и вставьте следующий запрос в редактор запросов BigQuery.
SELECT
  start_station_name,
  COUNT(*) AS trips
FROM
  `bigquery-public-data.austin_bikeshare.bikeshare_trips`
WHERE
  EXTRACT(YEAR FROM start_time) = 2019
GROUP BY
  start_station_name
ORDER BY
  trips DESC
  • Нажмите «Создать новый запрос», а затем скопируйте и вставьте следующий запрос в редактор запросов BigQuery.
  • Запрос должен возвращать самую загруженную станцию

SELECT AVG(predicted_duration_minutes) AS average_predicted_trip_length
FROM ML.predict(MODEL royalbike.subscriber, (
SELECT
    start_station_name,
    EXTRACT(HOUR FROM start_time) AS start_hour,
    subscriber_type,
    duration_minutes
FROM
  `bigquery-public-data.austin_bikeshare.bikeshare_trips`
WHERE 
  EXTRACT(YEAR FROM start_time) = 2019
  AND subscriber_type = 'Single Trip'
  AND start_station_name = '21st & Speedway @PCL'))
  • Запрос должен возвращать среднее время поездки.

Поздравляем! С лабораторией задач покончено.

Оставайтесь с нами до следующего блога

Если вы хотите связаться со мной:

Linkedin: https://www.linkedin.com/in/mayank-chourasia-38421a134/

Twitter: https://twitter.com/ChurasiaMayank.

Google Cloud Google Developers Google News Lab Qwiklabs GoogleCloud Platform