Начало работы с BigQuery ML

1. Обзор

BigQuery ML (BQML) позволяет пользователям создавать и выполнять модели машинного обучения в BigQuery с помощью запросов SQL. Цель состоит в том, чтобы демократизировать машинное обучение, предоставив специалистам по SQL возможность создавать модели, используя существующие инструменты, и повысить скорость разработки за счет устранения необходимости перемещения данных.

Что ты построишь

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

Что вы узнаете

Как создавать, оценивать и использовать модели машинного обучения в BigQuery

Что вам понадобится

2. Настройка и требования

Самостоятельная настройка среды

  1. Войдите в Cloud Console и создайте новый проект или повторно используйте существующий. Если у вас еще нет учетной записи Gmail или Google Workspace, вам необходимо ее создать .

96a9c957bc475304.png

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

Запомните идентификатор проекта — уникальное имя для всех проектов Google Cloud (имя, указанное выше, уже занято и не подойдет вам, извините!). Позже в этой лаборатории он будет называться PROJECT_ID .

  1. Далее вам необходимо включить биллинг в Cloud Console, чтобы использовать ресурсы Google Cloud.

Прохождение этой лаборатории кода не должно стоить много, если вообще стоит. Обязательно следуйте всем инструкциям в разделе «Очистка», в которых рассказывается, как отключить ресурсы, чтобы вам не приходилось нести расходы, выходящие за рамки этого руководства. Новые пользователи Google Cloud имеют право на участие в программе бесплатной пробной версии стоимостью 300 долларов США .

Открыть консоль BigQuery

В консоли разработчика Google щелкните значок меню в левом верхнем углу экрана.

выберите-bq_0.png

Прокрутите меню вниз и нажмите BigQuery:

выберите-bq.png

Консоль BigQuery откроется в новой вкладке браузера, которая выглядит следующим образом:

8b0218390329e8cf.png

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

3. Создайте набор данных

Чтобы создать набор данных, нажмите стрелку рядом с названием вашего проекта и выберите « Создать новый набор данных» .

4f51bf57291a59db.png

Затем назовите свой набор данных bqml_codelab и нажмите «ОК».

63e32478a5652fbc.png

4. Создайте модель

Логистическая регрессия для Analytics 360

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

#standardSQL
CREATE OR REPLACE MODEL `bqml_codelab.sample_model` 
OPTIONS(model_type='logistic_reg') AS
SELECT
  IF(totals.transactions IS NULL, 0, 1) AS label,
  IFNULL(device.operatingSystem, "") AS os,
  device.isMobile AS is_mobile,
  IFNULL(geoNetwork.country, "") AS country,
  IFNULL(totals.pageviews, 0) AS pageviews
FROM
  `bigquery-public-data.google_analytics_sample.ga_sessions_*`
WHERE
  _TABLE_SUFFIX BETWEEN '20160801' AND '20170631'
LIMIT 100000;

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

В данном случае «codelab» — ​​это имя набора данных, а «sample_model» — имя нашей модели. Указанный тип модели — бинарная логистическая регрессия. В данном случае label — это то, чему мы пытаемся соответствовать. Обратите внимание: если вас интересует только один столбец, это альтернативный способ установки input_label_cols . Мы также ограничиваем наши данные обучения данными, собранными с 1 августа 2016 года по 31 июня 2017 года. Мы делаем это, чтобы сохранить данные за последний месяц для «прогнозирования». Более того, мы ограничиваемся 100 000 точками данных, чтобы сэкономить время. Не стесняйтесь удалить последнюю строку, если вы не торопитесь.

При выполнении команды CREATE MODEL создается задание запроса, которое будет выполняться асинхронно, поэтому вы можете, например, закрыть или обновить окно пользовательского интерфейса BigQuery.

[Необязательно] Информация о модели и статистика обучения

Если интересно, вы можете получить информацию о модели, щелкнув sample_model в наборе данных bqml_codelab в пользовательском интерфейсе. В разделе «Подробности» вы должны найти базовую информацию о модели и параметры обучения, использованные для создания модели. В разделе «Статистика тренировок» вы должны увидеть таблицу, подобную этой:

b8bd9548a0d89165.png

5. Оцените модель

Оцените нашу модель

#standardSQL
SELECT
  *
FROM
  ml.EVALUATE(MODEL `bqml_codelab.sample_model`, (
SELECT
  IF(totals.transactions IS NULL, 0, 1) AS label,
  IFNULL(device.operatingSystem, "") AS os,
  device.isMobile AS is_mobile,
  IFNULL(geoNetwork.country, "") AS country,
  IFNULL(totals.pageviews, 0) AS pageviews
FROM
  `bigquery-public-data.google_analytics_sample.ga_sessions_*`
WHERE
  _TABLE_SUFFIX BETWEEN '20170701' AND '20170801'));

При использовании с моделью линейной регрессии приведенный выше запрос возвращает следующие столбцы: mean_absolute_error , mean_squared_error , mean_squared_log_error , median_absolute_error , r2_score , explained_variance . При использовании с моделью логистической регрессии приведенный выше запрос возвращает следующие столбцы: precision , recall , accuracy , f1_score , log_loss , roc_auc . Ознакомьтесь с глоссарием машинного обучения или выполните поиск в Google, чтобы понять, как рассчитывается каждый из этих показателей и что они означают.

Конкретно вы поймете, что части запроса SELECT и FROM идентичны тем, которые использовались во время обучения. Часть WHERE отражает изменение во временном интервале, а часть FROM показывает, что мы вызываем ml.EVALUATE . Вы должны увидеть таблицу, подобную этой:

1c7779f6028730cc.png

6. Используйте модель

Прогнозирование покупок по стране

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

#standardSQL
SELECT
  country,
  SUM(predicted_label) as total_predicted_purchases
FROM
  ml.PREDICT(MODEL `bqml_codelab.sample_model`, (
SELECT
  IFNULL(device.operatingSystem, "") AS os,
  device.isMobile AS is_mobile,
  IFNULL(totals.pageviews, 0) AS pageviews,
  IFNULL(geoNetwork.country, "") AS country
FROM
  `bigquery-public-data.google_analytics_sample.ga_sessions_*`
WHERE
  _TABLE_SUFFIX BETWEEN '20170701' AND '20170801'))
GROUP BY country
ORDER BY total_predicted_purchases DESC
LIMIT 10;

Обратите внимание, что этот запрос очень похож на оценочный запрос, который мы продемонстрировали в предыдущем разделе. Вместо ml.EVALUATE мы используем здесь ml.PREDICT и оборачиваем часть запроса BQML стандартными командами SQL. Конкретно нас интересует страна и сумма покупок для каждой страны, поэтому мы SELECT , GROUP BY и ORDER BY . Здесь используется LIMIT , чтобы гарантировать получение только 10 лучших результатов. Вы должны увидеть таблицу, подобную этой:

e639f7a409741dcb.png

Прогнозирование покупок на пользователя

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

#standardSQL
SELECT
  fullVisitorId,
  SUM(predicted_label) as total_predicted_purchases
FROM
  ml.PREDICT(MODEL `bqml_codelab.sample_model`, (
SELECT
  IFNULL(device.operatingSystem, "") AS os,
  device.isMobile AS is_mobile,
  IFNULL(totals.pageviews, 0) AS pageviews,
  IFNULL(geoNetwork.country, "") AS country,
  fullVisitorId
FROM
  `bigquery-public-data.google_analytics_sample.ga_sessions_*`
WHERE
  _TABLE_SUFFIX BETWEEN '20170701' AND '20170801'))
GROUP BY fullVisitorId
ORDER BY total_predicted_purchases DESC
LIMIT 10;

Вы должны увидеть таблицу, подобную этой:

2be1d8fa96e10178.png

7. Поздравляем!

Вы закончили с этой кодовой лабораторией. Ищете вызов? Попробуйте создать модель линейной регрессии с помощью BQML.

Что мы рассмотрели

  • Создайте модель бинарной логистической регрессии
  • Оцените модель
  • Используйте модель для прогнозирования

Следующие шаги