SQL + ML = магия

Что такое BQML?

Одной из менее интуитивно понятных частей построения моделей машинного обучения является сортировка и выборка данных (например, с использованием Pandas). Было бы неплохо, если бы вы могли просто использовать SQL?

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

Как насчет примера?

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

В BigQuery (BQ) я создал набор данных с именем diamonds_clean, а затем таблицу с именем diamonds_table, после чего загрузил CSV-файл с моими «чистыми» данными о бриллиантах. Вот как эти данные выглядят в BQ:

Если вы лучше знакомы с исходным набором данных о бриллиантах, вы заметите, что все категориальные переменные были преобразованы с использованием кодирования меток. Вы также увидите, что функции X, Y и Z были объединены (с помощью PCA) в одну функцию с именем dim_index. Эти данные готовы к работе, даже если они несовершенны (например, метки должны быть целыми числами, а не числами с плавающей запятой). Я мог бы выполнить эти шаги в BQML, но решил не делать этого, потому что хочу выделить создание модели в этой статье.

Создание модели с помощью SQL

Создать регрессионную модель с помощью BQML очень просто — вы пишете «SQL» в BQ. На несколько более техническом уровне в BQ используются специализированные SQL-подобные команды для запуска процесса создания модели в BQML.

Вот «SQL» для создания регрессионной модели с использованием данных о бриллиантах; модель заканчивается моделью BQML с именем diamonds_model:

Вы быстро заметите, что SQL далек от обычного SQL и действительно сбивает с толку тех из нас, кто написал много SQL:

  • СОЗДАТЬ ИЛИ ЗАМЕНИТЬ МОДЕЛЬ — эта очень специфичная для BQML команда выполняет обучение модели и указывает, куда она пойдет.
  • ОПЦИИ — список параметров модели, которую нужно построить, включая model_type, который сообщает BQML, какую модель нужно построить; это один из довольно длинного списка параметров, включая (но не ограничиваясь) LINEAR_REG, LOGISTIC_REG, AUTOML_CLASSIFIER и TENSORFLOW. Параметр input_label_cols сообщает BQML целевые объекты из набора данных.

После предложения CREATE OR REPLACE MODEL обратите внимание на обычный SQL — это оператор выбора для набора данных. Важным следствием здесь является то, что этот SQL может быть любым SQL, поэтому я могу легко сортировать или выбирать свои данные, как захочу, используя SQL. Это та часть, которую мы обычно делаем, используя странный (для меня) синтаксис Python Pandas DataFrame.

Модель — представление пользовательского интерфейса

Выполнение «запроса» CREATE OR REPLACE MODEL приводит к модели, которая похожа на модель, созданную с помощью Python, но результаты оценки обрабатываются как таблица для каждой сборки (что-то, что можно запросить с помощью SQL). Модель также имеет пользовательский интерфейс консоли GCP. Пользовательский интерфейс имеет четыре вкладки следующим образом:

Вкладка ДЕТАЛИ содержит сводную информацию о модели, включая тип (LINEAR_REGRESSION). Вкладка ОБУЧЕНИЕ содержит график или таблицу (для каждой сборки модели), показывающую потерю данных для обучения, потерю данных для оценки и продолжительность построения модели в секундах.

Вкладка ОЦЕНКА, пожалуй, самая информативная для пользовательского интерфейса:

Здесь вы можете увидеть метрики оценки модели. Эти показатели различаются в зависимости от типа модели (например, у классификации есть показатели, связанные с точностью). Вкладка СХЕМА — это просто схема самих обучающих данных, которая ничем не отличается от схемы, которую вы видите для таблицы.

Модель — представление запроса

Модель также можно запросить, в результате чего будет таблица, содержащая те же показатели, что и на вкладке ОЦЕНКА. На следующем изображении показаны запрос и результаты в BQML. Представьте себе следующее со многими сборками моделей; каждый из них будет строкой в ​​таблице. Опять же, вы можете использовать SQL для выбора данных.

Заключительные мысли

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

Я настоятельно рекомендую вам ознакомиться с документацией Google BigQuery ML, чтобы узнать (много) больше о BQML.

Если этот пост был полезен, пожалуйста, несколько раз нажмите кнопку аплодисментов 👏, чтобы выразить свою поддержку автору 👇

🚀Разработчики: учитесь и развивайтесь, не отставая от того, что важно, ПРИСОЕДИНЯЙТЕСЬ К FAUN.