Прогнозирование рейтинга фильма с помощью BQML с использованием SQL,Прогнозирование рейтинга фильма с помощью BQML с использованием SQL

1. Введение

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

  1. Как создать набор данных BigQuery с помощью Cloud Shell и загрузить данные из файла
  2. Как использовать BigQuery ML для контролируемого обучения, чтобы создать модель прогнозирования многоклассовой регрессии для прогнозирования оценки фильма без большого количества кода, а только с использованием SQL-запросов.

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

Вы создадите

  • Набор данных BigQuery, содержащий компоненты таблицы и модели.
  • Модель BigQuery ML для прогнозирования рейтинга фильмов с помощью SQL-запросов
  • Разверните модель в реестре моделей Vertex AI.

Требования

  • Браузер, например Chrome или Firefox.
  • Проект Google Cloud с включенной оплатой

2. Создайте свой проект

  1. В Google Cloud Console на странице выбора проекта выберите или создайте проект Google Cloud.
  2. Убедитесь, что для вашего облачного проекта включена оплата. Узнайте, как проверить, включена ли оплата в проекте .
  3. Перейдите в BigQuery , чтобы включить API. Вы также можете открыть веб-интерфейс BigQuery напрямую, введя следующий URL-адрес в браузере: https://console.cloud.google.com/bigquery.

3. Активируйте Cloud Shell

  1. Вы будете использовать Cloud Shell , среду командной строки, работающую в Google Cloud, в которую предварительно загружен bq : в Cloud Console нажмите «Активировать Cloud Shell» в правом верхнем углу: 6757b2fb50ddcc2d.png
  2. После подключения к Cloud Shell вы увидите, что вы уже прошли аутентификацию и что для проекта уже установлен идентификатор вашего проекта. Выполните следующую команду в Cloud Shell, чтобы подтвердить, что вы прошли аутентификацию:
gcloud auth list
  1. Выполните следующую команду в Cloud Shell, чтобы убедиться, что команда gcloud знает о вашем проекте.
gcloud config list project
  1. Если ваш проект не установлен, используйте следующую команду, чтобы установить его:
gcloud config set project <PROJECT_ID>

Обратитесь к документации по командам и использованию gcloud.

4. Подготовка данных обучения

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

5. Создание и загрузка набора данных

Набор данных BigQuery – это набор таблиц. Все таблицы в наборе данных хранятся в одном и том же месте данных. Вы также можете прикрепить настраиваемые элементы управления доступом, чтобы ограничить доступ к набору данных и его таблицам.

  1. В Cloud Shell используйте команду bq mk , чтобы создать набор данных под названием «movies».
bq mk --location=<<LOCATION>> movies

Установите местоположение в регионе (Азия-Юг1).

  1. Убедитесь, что у вас готов файл данных (.csv). Выполните следующие команды в Cloud Shell, чтобы клонировать репозиторий и перейти к проекту:
git clone <<repository link>>

cd movie-score
  1. Используйте команду bq load, чтобы загрузить файл CSV в таблицу BigQuery (обратите внимание, что вы также можете загрузить его напрямую из пользовательского интерфейса BigQuery):
bq load --source_format=CSV --skip_leading_rows=1 movies.movies_score \
./movies_bq_src.csv \ Id:numeric,name:string,rating:string,genre:string,year:numeric,released:string,score:string,director:string,writer:string,star:string,country:string,budget:numeric,company:string,runtime:numeric,data_cat:string

Описание опций: –source_format=CSV — использует формат данных CSV при анализе файла данных. –skip_leading_rows=1 — пропускает первую строку в CSV-файле, поскольку это строка заголовка. Movies.movies — первый позиционный аргумент — определяет, в какую таблицу следует загрузить данные. ./movies.csv — второй позиционный аргумент — определяет, какой файл загружать. Помимо локальных файлов, команда загрузки bq может загружать файлы из Cloud Storage с URI gs://my_bucket/path/to/file. Схема, которая может быть определена в файле схемы JSON или в виде списка, разделенного запятыми (я использовал список, разделенный запятыми). Ура! Наши данные CSV теперь загружены в таблицу Movies.movies.

  1. Запрос одним из трех способов:

Мы можем взаимодействовать с BigQuery тремя способами, мы попробуем два из них: а. Веб -интерфейс BigQuery б. Команда bq c. API

SELECT name, rating, genre, runtime FROM movies.movies_score limit 3;

Для выполнения запросов я использовал рабочую область BigQuery Web SQL. Рабочая область SQL выглядит следующим образом:

109a0b2c7155e9b3.png

Используя команду bq:

bq query --use_legacy_sql=false \
SELECT name, rating, genre, runtime FROM movies.movies_score limit 3;

6. Прогнозирование рейтинга фильма по шкале от 1 до 10.

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

Краткое замечание о выборе модели: это экспериментальный выбор модели, выбранной здесь, на основе оценки результатов. Сначала я столкнулся с несколькими моделями и, наконец, остановился на LOGISTIC REG, чтобы сделать ее простой и получить результаты, более близкие к реальным. актуальный рейтинг фильмов из нескольких баз данных. Обратите внимание, что это следует рассматривать только как образец реализации модели и НЕ обязательно является рекомендуемой моделью для данного варианта использования. Еще один способ реализовать это — предсказать исход фильма как ХОРОШИЙ / ПЛОХОЙ, используя эту модель логистической регрессии вместо прогнозирования оценки.

Выберите данные для тренировок

Мы уже разделили данные фильма (в формате CSV) на 3 категории в таблице, используя поле «data_cat», которое имеет одно из трех значений — TRAIN, TEST и PREDICT. Разделение набора данных для целей тестирования и обучения является важным аспектом модели. Если вам нужна дополнительная информация о понимании разделения набора данных, обратитесь к документации .

Создайте модель логистической регрессии

Мы можем использовать оператор CREATE MODEL с опцией «LOGISTIC_REG» для создания и обучения модели логистической регрессии.

Запустите приведенный ниже запрос в рабочей области SQL BigQuery Web UI:

CREATE OR REPLACE MODEL
  `movies.movies_score_model`
OPTIONS
  ( model_type='LOGISTIC_REG',
    auto_class_weights=TRUE,
   data_split_method='NO_SPLIT',
    input_label_cols=[‘score']
  ) AS
SELECT
  * EXCEPT(id, data_cat)
FROM
  ‘movies.movies_score'
WHERE
  data_cat = 'TRAIN';

Детали запроса:

  1. Инструкция CREATE MODEL обучает модель, используя данные обучения из инструкции SELECT.
  2. Предложение OPTIONS указывает тип модели и параметры обучения. Здесь опция LOGISTIC_REG указывает тип модели логистической регрессии. Нет необходимости указывать модель бинарной логистической регрессии вместо модели многоклассовой логистической регрессии: BigQuery ML может определить, что следует обучать, на основе количества уникальных значений в столбце метки.
  3. data_split_method='NO_SPLIT' заставляет BQML обучаться на данных в соответствии с условиями запроса (data_cat = 'TRAIN'), также обратите внимание, что лучше использовать 'AUTO_SPLIT' в этом параметре, чтобы позволить платформе (или службе в данном случае) рандомизировать разделение поездов/тестов
  4. Параметр input_label_cols указывает, какой столбец в инструкции SELECT использовать в качестве столбца метки. Здесь столбец метки представляет собой оценку, поэтому модель узнает, какое из 10 значений оценки наиболее вероятно основано на других значениях, присутствующих в каждой строке.
  5. Опция auto_class_weights=TRUE балансирует метки классов в обучающих данных. По умолчанию данные обучения не взвешены. Если метки в обучающих данных несбалансированы, модель может научиться более точно прогнозировать наиболее популярный класс меток.
  6. Инструкция SELECT запрашивает таблицу, которую мы загрузили с данными CSV. Предложение WHERE фильтрует строки во входной таблице, так что на этом этапе выбирается только набор данных TRAIN.

После создания в разделе СХЕМА рабочей области BigQuery SQL появится следующее:

Этикетки

93efd0c1a7883690.png

Функции

8c539338df1a9652.png

Оцените свою модель логистической регрессии

После создания модели оцените ее производительность с помощью функции ML.EVALUATE. Функция ML.EVALUATE сравнивает прогнозируемые значения с фактическими данными. Запрос для оценки модели выглядит следующим образом:

SELECT
  *
FROM
  ML.EVALUATE (MODEL movies.movies_score_model,
    (
    SELECT
      *
    FROM
      movies.movies_score
    WHERE
      data_cat= ‘TEST'
    )
  )

Функция ML.EVALUATE использует модель, обученную на предыдущем шаге, и данные оценки, возвращенные подзапросом SELECT. Функция возвращает одну строку статистики о модели.

b54b0ebd6514a498.png

Поскольку вы выполнили логистическую регрессию, результаты включают метрики, которые вы видите на снимке экрана выше: точность, отзыв, точность, f1-score, log_loss, roc_auc, которые действительно имеют решающее значение для оценки производительности модели. Вы также можете вызвать ML.EVALUATE без предоставления входных данных. ML.EVALUATE извлекает метрики оценки, полученные во время обучения, для чего используется автоматически зарезервированный набор оценочных данных.

Краткий обзор основных показателей:

Точность. Какая доля положительных идентификаций была действительно верной? Точность = истинно положительный результат / (истинный положительный результат + ложный положительный результат). Напомним: какая доля фактических положительных результатов была определена правильно? Отзыв = Истинно положительный / (Истинно положительный + Ложно отрицательный). Точность. Показатель для оценки моделей классификации. Это доля прогнозов, которые наша модель фактически выполнила правильно. Точность = Количество правильных прогнозов / Общее количество прогнозов.

Прогнозируйте рейтинг фильма с помощью ML.PREDICT

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

SELECT
  *
FROM
  ML.PREDICT (MODEL movies.movies_score_model,
    (
    SELECT
      *
    FROM
      movies.movies_score
    WHERE
      data_cat= ‘PREDICT'
     )
  )

Ниже приведен фрагмент результатов:

1efb91967acc1f0c.png

Результат модели показывает прогнозируемую ОЦЕНКУ фильма по шкале от 1 до 10 (классификация). Вы, должно быть, задаетесь вопросом, почему для каждого фильма имеется несколько строк прогнозов. Это связано с тем, что модель вернула возможные предсказанные метки и вероятность появления каждой из них в порядке убывания.

Анализ прогнозируемых результатов и модели

Кроме того, вы можете выполнить два отличных этапа анализа в рамках результатов прогнозирования:

  1. Чтобы понять, почему ваша модель генерирует такие результаты прогнозирования, вы можете использовать функцию ML.EXPLAIN_PREDICT.
  2. Чтобы узнать, какие функции наиболее важны для определения уровня дохода в целом, вы можете использовать функцию ML.GLOBAL_EXPLAIN.

Подробно об этих шагах можно прочитать в документации .

7. Прогнозируйте рейтинг фильма с помощью BigQuery AutoML

AutoML отлично подходит, если вы хотите позволить службе BigQuery создать модель за вас и расслабиться, пока не будут сгенерированы результаты вашей модели. Функция AUTOML доступна непосредственно в BQML (model_type=AUTOML_CLASSIFIER или AUTOML_REGRESSOR), и ее гораздо проще вызвать, если данные уже находятся в BigQuery.

CREATE OR REPLACE MODEL movies.auto_movies
       OPTIONS(model_type='AUTOML_CLASSIFIER',
               input_label_cols=['score'],
               budget_hours=1.0)
AS 
SELECT
  * EXCEPT(id, data_cat)
FROM
  movies.movies_score;

После создания модели вы можете выполнить шаги EVALUATE, PREDICT и EXPLAIN_PREDICT, как мы обсуждали в пользовательской модели BQML. Подробнее о BigQuery AutoML читайте в документации .

8. Развертывание моделей BQML в реестре моделей Vertex AI одним щелчком мыши.

Теперь вы можете видеть все свои модели машинного обучения в реестре моделей Vertex AI, что упрощает управление моделями и их развертывание в вашей организации. Сюда входят модели, созданные с помощью BigQuery ML, AutoML, а также модели, обученные пользователем. Вот как это сделать:

CREATE OR REPLACE MODEL
  `movies.movies_score_model`
OPTIONS
  ( model_type='LOGISTIC_REG',
    auto_class_weights=TRUE,
   data_split_method='NO_SPLIT',
   model_registry='vertex_ai',
  vertex_ai_model_version_aliases=['logistic_reg', 'experimental'],
    input_label_cols=[‘score']
  ) AS
SELECT
  * EXCEPT(id, data_cat)
FROM
  ‘movies.movies_score'
WHERE
  data_cat = 'TRAIN';

Включите параметр model_registry="vertex_ai" в запрос CREATE MODEL, чтобы BigQuery ML мог выбирать, какие модели он явно хочет зарегистрировать в реестре моделей Vertex AI. Подробнее об этом можно прочитать в этом блоге .

9. Резюме

Менее чем за 30 минут мы имеем:

  1. Настройте BigQuery в качестве нашей базы данных для аналитического проекта.
  2. Создана собственная модель прогнозирования с использованием только SQL-запросов данных BigQuery и без какого-либо другого кодирования.
  3. Создана модель BQ Auto ML с использованием только SQL-запросов.
  4. Развернутая модель BQML в реестре моделей Vertex AI.

10. Очистка

Чтобы избежать списания средств с вашей учетной записи Google Cloud за ресурсы, используемые в этом посте, выполните следующие действия:

  1. В консоли Google Cloud перейдите на страницу «Управление ресурсами».
  2. В списке проектов выберите проект, который хотите удалить, и нажмите «Удалить».
  3. В диалоговом окне введите идентификатор проекта и нажмите «Завершить работу», чтобы удалить проект.

11. Поздравления

Поздравляем! Вы успешно создали модель прогнозирования оценки фильма с помощью BQML Custom и AutoML и развернули модель в реестре моделей Vertex AI, и все это только с использованием SQL.

,

1. Введение

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

  1. Как создать набор данных BigQuery с помощью Cloud Shell и загрузить данные из файла
  2. Как использовать BigQuery ML для контролируемого обучения, чтобы создать модель прогнозирования многоклассовой регрессии для прогнозирования оценки фильма без большого количества кода, а только с использованием SQL-запросов.

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

Вы создадите

  • Набор данных BigQuery, содержащий компоненты таблицы и модели.
  • Модель BigQuery ML для прогнозирования рейтинга фильмов с помощью SQL-запросов
  • Разверните модель в реестре моделей Vertex AI.

Требования

  • Браузер, например Chrome или Firefox.
  • Проект Google Cloud с включенной оплатой

2. Создайте свой проект

  1. В Google Cloud Console на странице выбора проекта выберите или создайте проект Google Cloud.
  2. Убедитесь, что для вашего облачного проекта включена оплата. Узнайте, как проверить, включена ли оплата в проекте .
  3. Перейдите в BigQuery , чтобы включить API. Вы также можете открыть веб-интерфейс BigQuery напрямую, введя следующий URL-адрес в браузере: https://console.cloud.google.com/bigquery.

3. Активируйте Cloud Shell

  1. Вы будете использовать Cloud Shell , среду командной строки, работающую в Google Cloud, в которую предварительно загружен bq : в Cloud Console нажмите «Активировать Cloud Shell» в правом верхнем углу: 6757b2fb50ddcc2d.png
  2. После подключения к Cloud Shell вы увидите, что вы уже прошли аутентификацию и что для проекта уже установлен идентификатор вашего проекта. Выполните следующую команду в Cloud Shell, чтобы подтвердить, что вы прошли аутентификацию:
gcloud auth list
  1. Выполните следующую команду в Cloud Shell, чтобы убедиться, что команда gcloud знает о вашем проекте.
gcloud config list project
  1. Если ваш проект не установлен, используйте следующую команду, чтобы установить его:
gcloud config set project <PROJECT_ID>

Обратитесь к документации по командам и использованию gcloud.

4. Подготовка данных обучения

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

5. Создание и загрузка набора данных

Набор данных BigQuery – это набор таблиц. Все таблицы в наборе данных хранятся в одном и том же месте данных. Вы также можете прикрепить настраиваемые элементы управления доступом, чтобы ограничить доступ к набору данных и его таблицам.

  1. В Cloud Shell используйте команду bq mk , чтобы создать набор данных под названием «movies».
bq mk --location=<<LOCATION>> movies

Установите местоположение в регионе (Азия-Юг1).

  1. Убедитесь, что у вас готов файл данных (.csv). Выполните следующие команды в Cloud Shell, чтобы клонировать репозиторий и перейти к проекту:
git clone <<repository link>>

cd movie-score
  1. Используйте команду bq load, чтобы загрузить файл CSV в таблицу BigQuery (обратите внимание, что вы также можете загрузить его напрямую из пользовательского интерфейса BigQuery):
bq load --source_format=CSV --skip_leading_rows=1 movies.movies_score \
./movies_bq_src.csv \ Id:numeric,name:string,rating:string,genre:string,year:numeric,released:string,score:string,director:string,writer:string,star:string,country:string,budget:numeric,company:string,runtime:numeric,data_cat:string

Описание опций: –source_format=CSV — использует формат данных CSV при анализе файла данных. –skip_leading_rows=1 — пропускает первую строку в CSV-файле, поскольку это строка заголовка. Movies.movies — первый позиционный аргумент — определяет, в какую таблицу следует загрузить данные. ./movies.csv — второй позиционный аргумент — определяет, какой файл загружать. Помимо локальных файлов, команда загрузки bq может загружать файлы из Cloud Storage с URI gs://my_bucket/path/to/file. Схема, которая может быть определена в файле схемы JSON или в виде списка, разделенного запятыми (я использовал список, разделенный запятыми). Ура! Наши данные CSV теперь загружены в таблицу Movies.movies.

  1. Запрос одним из трех способов:

Мы можем взаимодействовать с BigQuery тремя способами, мы попробуем два из них: а. Веб -интерфейс BigQuery б. Команда bq c. API

SELECT name, rating, genre, runtime FROM movies.movies_score limit 3;

Для выполнения запросов я использовал рабочую область BigQuery Web SQL. Рабочая область SQL выглядит следующим образом:

109a0b2c7155e9b3.png

Используя команду bq:

bq query --use_legacy_sql=false \
SELECT name, rating, genre, runtime FROM movies.movies_score limit 3;

6. Прогнозирование рейтинга фильма по шкале от 1 до 10.

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

Краткое замечание о выборе модели: это экспериментальный выбор модели, выбранной здесь, на основе оценки результатов. Сначала я столкнулся с несколькими моделями и, наконец, остановился на LOGISTIC REG, чтобы сделать ее простой и получить результаты, более близкие к реальным. актуальный рейтинг фильмов из нескольких баз данных. Обратите внимание, что это следует рассматривать только как образец реализации модели и НЕ обязательно является рекомендуемой моделью для данного варианта использования. Еще один способ реализовать это — предсказать исход фильма как ХОРОШИЙ / ПЛОХОЙ, используя эту модель логистической регрессии вместо прогнозирования оценки.

Выберите данные для тренировок

Мы уже разделили данные фильма (в формате CSV) на 3 категории в таблице, используя поле «data_cat», которое имеет одно из трех значений — TRAIN, TEST и PREDICT. Разделение набора данных для целей тестирования и обучения является важным аспектом модели. Если вам нужна дополнительная информация о понимании разделения набора данных, обратитесь к документации .

Создайте модель логистической регрессии

Мы можем использовать оператор CREATE MODEL с опцией «LOGISTIC_REG» для создания и обучения модели логистической регрессии.

Запустите приведенный ниже запрос в рабочей области SQL BigQuery Web UI:

CREATE OR REPLACE MODEL
  `movies.movies_score_model`
OPTIONS
  ( model_type='LOGISTIC_REG',
    auto_class_weights=TRUE,
   data_split_method='NO_SPLIT',
    input_label_cols=[‘score']
  ) AS
SELECT
  * EXCEPT(id, data_cat)
FROM
  ‘movies.movies_score'
WHERE
  data_cat = 'TRAIN';

Детали запроса:

  1. Инструкция CREATE MODEL обучает модель, используя данные обучения из инструкции SELECT.
  2. Предложение OPTIONS указывает тип модели и параметры обучения. Здесь опция LOGISTIC_REG указывает тип модели логистической регрессии. Нет необходимости указывать модель бинарной логистической регрессии вместо модели многоклассовой логистической регрессии: BigQuery ML может определить, что следует обучать, на основе количества уникальных значений в столбце метки.
  3. data_split_method='NO_SPLIT' заставляет BQML обучаться на данных в соответствии с условиями запроса (data_cat = 'TRAIN'), также обратите внимание, что лучше использовать 'AUTO_SPLIT' в этом параметре, чтобы позволить платформе (или службе в данном случае) рандомизировать разделение поездов/тестов
  4. Параметр input_label_cols указывает, какой столбец в инструкции SELECT будет использоваться в качестве столбца метки. Здесь столбец метки представляет собой оценку, поэтому модель узнает, какое из 10 значений оценки наиболее вероятно основано на других значениях, присутствующих в каждой строке.
  5. Опция auto_class_weights=TRUE балансирует метки классов в обучающих данных. По умолчанию данные обучения не взвешены. Если метки в обучающих данных несбалансированы, модель может научиться более точно прогнозировать наиболее популярный класс меток.
  6. Инструкция SELECT запрашивает таблицу, которую мы загрузили с данными CSV. Предложение WHERE фильтрует строки во входной таблице, так что на этом этапе выбирается только набор данных TRAIN.

После создания в разделе СХЕМА рабочей области BigQuery SQL появится следующее:

Этикетки

93efd0c1a7883690.png

Функции

8c539338df1a9652.png

Оцените свою модель логистической регрессии

После создания модели оцените ее производительность с помощью функции ML.EVALUATE. Функция ML.EVALUATE сравнивает прогнозируемые значения с фактическими данными. Запрос для оценки модели выглядит следующим образом:

SELECT
  *
FROM
  ML.EVALUATE (MODEL movies.movies_score_model,
    (
    SELECT
      *
    FROM
      movies.movies_score
    WHERE
      data_cat= ‘TEST'
    )
  )

Функция ML.EVALUATE использует модель, обученную на предыдущем шаге, и данные оценки, возвращенные подзапросом SELECT. Функция возвращает одну строку статистики о модели.

b54b0ebd6514a498.png

Поскольку вы выполнили логистическую регрессию, результаты включают метрики, которые вы видите на снимке экрана выше: точность, отзыв, точность, f1-score, log_loss, roc_auc, которые действительно имеют решающее значение для оценки производительности модели. Вы также можете вызвать ML.EVALUATE без предоставления входных данных. ML.EVALUATE извлекает метрики оценки, полученные во время обучения, для чего используется автоматически зарезервированный набор оценочных данных.

Краткий обзор основных показателей:

Точность. Какая доля положительных идентификаций была действительно верной? Точность = истинно положительный результат / (истинный положительный результат + ложный положительный результат). Напомним: какая доля фактических положительных результатов была определена правильно? Отзыв = Истинно положительный / (Истинно положительный + Ложно отрицательный). Точность. Показатель для оценки моделей классификации. Это доля прогнозов, которые наша модель фактически выполнила правильно. Точность = Количество правильных прогнозов / Общее количество прогнозов.

Прогнозируйте рейтинг фильма с помощью ML.PREDICT

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

SELECT
  *
FROM
  ML.PREDICT (MODEL movies.movies_score_model,
    (
    SELECT
      *
    FROM
      movies.movies_score
    WHERE
      data_cat= ‘PREDICT'
     )
  )

Ниже приведен фрагмент результатов:

1efb91967acc1f0c.png

Результат модели показывает прогнозируемую ОЦЕНКУ фильма по шкале от 1 до 10 (классификация). Вы, должно быть, задаетесь вопросом, почему для каждого фильма имеется несколько строк прогнозов. Это связано с тем, что модель вернула возможные предсказанные метки и вероятность появления каждой из них в порядке убывания.

Анализ прогнозируемых результатов и модели

Кроме того, вы можете выполнить два отличных этапа анализа в рамках результатов прогнозирования:

  1. Чтобы понять, почему ваша модель генерирует такие результаты прогнозирования, вы можете использовать функцию ML.EXPLAIN_PREDICT.
  2. Чтобы узнать, какие функции наиболее важны для определения уровня дохода в целом, вы можете использовать функцию ML.GLOBAL_EXPLAIN.

Подробно об этих шагах можно прочитать в документации .

7. Прогнозируйте рейтинг фильма с помощью BigQuery AutoML

AutoML отлично подходит, если вы хотите позволить службе BigQuery создать модель за вас и расслабиться, пока не будут сгенерированы результаты вашей модели. Функция AUTOML доступна непосредственно в BQML (model_type=AUTOML_CLASSIFIER или AUTOML_REGRESSOR), и ее гораздо проще вызвать, если данные уже находятся в BigQuery.

CREATE OR REPLACE MODEL movies.auto_movies
       OPTIONS(model_type='AUTOML_CLASSIFIER',
               input_label_cols=['score'],
               budget_hours=1.0)
AS 
SELECT
  * EXCEPT(id, data_cat)
FROM
  movies.movies_score;

После создания модели вы можете выполнить шаги EVALUATE, PREDICT и EXPLAIN_PREDICT, как мы обсуждали в пользовательской модели BQML. Подробнее о BigQuery AutoML читайте в документации .

8. Развертывание моделей BQML в реестре моделей Vertex AI одним щелчком мыши.

Теперь вы можете видеть все свои модели машинного обучения в реестре моделей Vertex AI, что упрощает управление моделями и их развертывание в вашей организации. Сюда входят модели, созданные с помощью BigQuery ML, AutoML, а также модели, обученные пользователем. Вот как это сделать:

CREATE OR REPLACE MODEL
  `movies.movies_score_model`
OPTIONS
  ( model_type='LOGISTIC_REG',
    auto_class_weights=TRUE,
   data_split_method='NO_SPLIT',
   model_registry='vertex_ai',
  vertex_ai_model_version_aliases=['logistic_reg', 'experimental'],
    input_label_cols=[‘score']
  ) AS
SELECT
  * EXCEPT(id, data_cat)
FROM
  ‘movies.movies_score'
WHERE
  data_cat = 'TRAIN';

Включите параметр model_registry="vertex_ai" в запрос CREATE MODEL, чтобы BigQuery ML мог выбирать, какие модели он явно хочет зарегистрировать в реестре моделей Vertex AI. Подробнее об этом можно прочитать в этом блоге .

9. Резюме

Менее чем за 30 минут мы имеем:

  1. Настройте BigQuery в качестве нашей базы данных для аналитического проекта.
  2. Создана собственная модель прогнозирования с использованием только SQL-запросов данных BigQuery и без какого-либо другого кодирования.
  3. Создана модель BQ Auto ML с использованием только SQL-запросов.
  4. Развернутая модель BQML в реестре моделей Vertex AI.

10. Очистка

Чтобы избежать списания средств с вашей учетной записи Google Cloud за ресурсы, используемые в этом посте, выполните следующие действия:

  1. В консоли Google Cloud перейдите на страницу «Управление ресурсами».
  2. В списке проектов выберите проект, который хотите удалить, и нажмите «Удалить».
  3. В диалоговом окне введите идентификатор проекта и нажмите «Завершить работу», чтобы удалить проект.

11. Поздравления

Поздравляем! Вы успешно создали модель прогнозирования оценки фильма с помощью BQML custom и AutoML и развернули модель в реестре моделей Vertex AI, и все это только с использованием SQL.