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

Описательный подход бизнес-аналитики (BI) сместился в сторону более прогнозирующего и предписывающего анализа. На основе этих изменений аналитическая структура была пересмотрена и теперь включает уровень науки о данных.

Сочетание традиционной бизнес-аналитики и науки о данных рассматривается как будущее отрасли. Следовательно, новые облачные сервисы теперь представлены как один интегрированный сервис. Они объединяют различные технологии, в том числе хранилище данных, платформу машинного обучения и инструмент визуализации, чтобы облегчить доступ как для аналитиков данных, так и для специалистов по данным.[3]

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

Только язык SQL

SQL по-прежнему остается одним из наиболее широко используемых языков в аналитике данных. Как декларативный язык, SQL позволяет вам определять задачи, не беспокоясь о специфике их выполнения.[1]

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

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

Повторяйте и доставляйте быстрее

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

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

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

Универсальность модели

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

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

Процедура

Процесс машинного обучения описан в шпаргалке BQML и может быть сведен к четырем основным шагам:

Подготовьте данные

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

Когда дело доходит до выбора функций, BQML выполнит за вас все следующие этапы предварительной обработки:

  • Удалите пропущенные значения
  • Особенности кодирования
  • Масштабирование
  • Извлечение признаков

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

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

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

CREATE MODEL `mydataset.mymodel`
  TRANSFORM(
    ML.FEATURE_CROSS(STRUCT(f1, f2)) as cross_f,
    ML.QUANTILE_BUCKETIZE(f3) OVER() as buckets,
    label_col
  )
  OPTIONS(
    model_type=’linear_reg’, input_label_cols=['label_col']
  ) AS
  SELECT
    label,
    input_column1
  FROM
    `mydataset.mytable`

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

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

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

SELECT
  *
FROM
  ML.EVALUATE(MODEL `mydataset.mymodel`,
    (
    SELECT
      custom_label,
      column1,
      column2
    FROM
      `mydataset.mytable`)

Предсказывать

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

SELECT
  *
FROM
  ML.PREDICT(MODEL `mydataset.mymodel`,
    (
    SELECT
      label,
      column1,
      column2
    FROM
      `mydataset.mytable`))

Заключение

BigQuery ML, или BQML, предназначен для демократизации машинного обучения и облегчения этапов обнаружения, проектирования и разработки процессов обработки данных.

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

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

Источники и дополнительная литература

[1] Тан, К., Ван, Б., Ву, Х., Ван, З., Ли, Ю., Чаннапаттан, В., … и Мишра, П. (2021). Гибридно-облачная система федерации SQL в Twitter. На Европейской конференции по архитектуре программного обеспечения.*

[2] Муккетти, М. (2020). ML BigQuery. В BigQuery для хранилищ данных (стр. 419–468). Апресс, Беркли, Калифорния.

[3] Ларсон Д. и Чанг В. (2016). Обзор и будущее направление гибкого бизнеса

Google. (н.д.). Документация Bigquery ML. Google, с https://cloud.google.com/bigquery-ml/docs