Vertex AI: построение модели обнаружения мошенничества с помощью AutoML

1. Обзор

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

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

Вы узнаете, как:

  • Загрузите управляемый набор данных в Vertex AI
  • Обучение модели с помощью AutoML
  • Разверните обученную модель AutoML в конечной точке и используйте эту конечную точку для получения прогнозов.

Общая стоимость запуска этой лаборатории в Google Cloud составляет около 22 долларов США .

2. Знакомство с Vertex AI

В этой лаборатории используются новейшие продукты искусственного интеллекта, доступные в Google Cloud. Vertex AI интегрирует предложения машинного обучения в Google Cloud в единый процесс разработки. Раньше модели, обученные с помощью AutoML, и пользовательские модели были доступны через отдельные сервисы. Новое предложение объединяет оба API в одном API, а также другие новые продукты. Вы также можете перенести существующие проекты на Vertex AI. Если у вас есть какие-либо отзывы, пожалуйста, посетите страницу поддержки .

Vertex AI включает в себя множество различных продуктов для поддержки комплексных рабочих процессов машинного обучения. Эта лабораторная работа будет сосредоточена на продуктах, перечисленных ниже: AutoML для табличных данных, прогнозировании и рабочей среде.

Обзор продукта Vertex

3. Настройте свою среду

Для запуска этой лаборатории кода вам понадобится проект Google Cloud Platform с включенной оплатой. Чтобы создать проект, следуйте инструкциям здесь .

Шаг 1. Включите API Compute Engine.

Перейдите к Compute Engine и выберите «Включить» , если он еще не включен. Это понадобится вам для создания экземпляра блокнота.

Шаг 2. Включите API Vertex AI.

Перейдите в раздел Vertex AI в облачной консоли и нажмите «Включить Vertex AI API» .

Панель управления Vertex

Шаг 3. Создайте экземпляр Vertex AI Workbench.

В разделе Vertex AI облачной консоли нажмите Workbench:

Меню вершинного AI

Оттуда в блокнотах, управляемых пользователем , нажмите «Новый блокнот» :

Создать новый блокнот

Затем выберите последнюю версию типа экземпляра TensorFlow Enterprise (с LTS) без графических процессоров :

Экземпляр TFE

Используйте параметры по умолчанию и нажмите «Создать» .

Шаг 5. Откройте свой блокнот

После создания экземпляра выберите «Открыть JupyterLab» :

Открыть блокнот

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

4. Создайте управляемый набор данных.

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

Шаг 1. Создайте набор данных

В меню Vertex консоли выберите Наборы данных :

Выберите наборы данных

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

На странице «Наборы данных» дайте набору данных имя, затем выберите «Таблица» и «Регрессия/классификация» . Затем создайте набор данных:

Создать набор данных

Существует несколько вариантов импорта данных в управляемые наборы данных в Vertex:

  • Загрузка локального файла с вашего компьютера
  • Выбор файлов из облачного хранилища
  • Выбор данных из BigQuery

Здесь мы будем загружать данные из общедоступной таблицы BigQuery.

Шаг 2. Импортируйте данные из BigQuery.

Выберите «Выбрать таблицу или представление из BigQuery» в качестве метода импорта, а затем скопируйте в поле таблицы BigQuery следующее: bigquery-public-data.ml_datasets.ulb_fraud_detection . Затем выберите Продолжить :

Импортировать данные BQ

После импорта набора данных вы должны увидеть что-то вроде следующего:

Импортированные данные

При желании вы можете нажать «Создать статистику», чтобы просмотреть дополнительную информацию об этом наборе данных, но это не обязательно, прежде чем перейти к следующему шагу. Этот набор данных содержит реальные транзакции по кредитным картам. Большинство имен столбцов скрыты, поэтому они называются V1 , V2 и т. д.

5. Обучение модели с помощью AutoML

После загрузки управляемого набора данных мы готовы обучить модель с помощью этих данных. Мы будем обучать модель классификации , чтобы предсказать, является ли конкретная транзакция мошеннической. Vertex AI предоставляет вам два варианта обучения моделей:

  • AutoML : обучайте высококачественные модели с минимальными усилиями и опытом машинного обучения.
  • Индивидуальное обучение . Запускайте собственные приложения для обучения в облаке, используя один из готовых контейнеров Google Cloud, или используйте свой собственный.

В этой лабораторной работе мы будем использовать AutoML для обучения.

Шаг 1. Приступайте к обучению

На странице сведений о наборе данных, на которой вы остановились на предыдущем шаге, выберите «Обучить новую модель» в правом верхнем углу. Выберите «Классификация» в качестве цели, оставьте AutoML выбранным для обучения модели, а затем нажмите «Продолжить» :

Обучение модели, шаг 1

Дайте вашей модели имя или вы можете использовать имя по умолчанию. В столбце «Цель» выберите «Класс» . Это целое число, указывающее, была ли конкретная транзакция мошеннической ( 0 — отсутствие мошенничества, 1 — мошенничество).

Затем выберите Продолжить :

Обучение модели, шаг 2

На этом этапе прокрутите вниз и щелкните, чтобы развернуть Дополнительные параметры . Поскольку этот набор данных сильно несбалансирован (менее 1% данных содержит мошеннические транзакции), выберите опцию AUC PRC , которая максимизирует точность отзыва для менее распространенного класса :

Расширенные возможности обучения

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

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

6. Изучите метрики оценки модели.

На этом этапе мы посмотрим, как работает наша модель.

После завершения задания по обучению модели перейдите на вкладку «Модели» в Vertex. Нажмите на модель, которую вы только что обучили, и посмотрите на вкладку «Оценить» . Здесь существует множество метрик оценки — мы остановимся на двух: Матрице путаницы и Важности функций .

Шаг 1. Поймите матрицу путаницы

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

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

Если вы прокрутите вниз вкладку «Оценить» , вы увидите матрицу путаницы, которая выглядит примерно так (точные проценты могут отличаться):

Матрица путаницы

Матрица путаницы показывает, что наша первоначальная модель способна правильно классифицировать 85% примеров мошенничества в нашем тестовом наборе. Это довольно хорошо, особенно учитывая наш значительный дисбаланс в наборах данных. Затем мы могли бы попробовать обучить нашу модель большему количеству вычислительных часов, чтобы посмотреть, сможем ли мы улучшить эти 85%.

Шаг 2. Оценка важности функций

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

Важность функции

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

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

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

Здесь мы рассматриваем важность функций для всего пакета, но мы также можем получить важность функций для отдельных прогнозов в Vertex AI. Мы увидим, как это сделать, как только развернем нашу модель.

7. Развертывание модели в конечной точке

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

Шаг 1. Создание конечной точки

На странице модели перейдите на вкладку «Развертывание и тестирование» и нажмите « Развернуть до конечной точки» :

Развертывание и тестирование

Дайте своей конечной точке имя, например fraud_v1 , оставьте для параметра «Доступ» значение «Стандартный» и нажмите « Продолжить» .

Оставьте разделение трафика и тип машины по умолчанию, нажмите «Готово» , а затем «Продолжить» .

Мы не будем использовать мониторинг модели для этой конечной точки, поэтому вы можете оставить этот флажок невыбранным и нажать «Развернуть» . Развертывание вашей конечной точки займет несколько минут. Когда он будет завершен, рядом с ним вы увидите зеленую галочку:

Развернутая конечная точка

Вы приближаетесь! Теперь вы готовы получать прогнозы по вашей развернутой модели.

8. Получение прогнозов по нашей развернутой модели

Существует несколько вариантов получения прогнозов модели:

  • Пользовательский интерфейс Vertex AI
  • API вершин ИИ

Мы покажем здесь оба.

Шаг 1. Получите прогнозы модели в пользовательском интерфейсе

На странице вашей модели, где показана ваша конечная точка (где мы остановились на последнем шаге), прокрутите вниз до раздела «Протестируйте свою модель» :

Тестовая модель

Здесь Vertex AI выбрал случайные значения для каждой функции нашей модели, которые мы можем использовать для получения тестового прогноза. При желании вы можете изменить эти значения. Прокрутите страницу вниз и выберите «Прогнозировать» .

В разделе «Результаты прогнозирования» на странице вы должны увидеть прогнозируемый процент вашей модели для каждого класса. Например, показатель достоверности 0.99 для класса 0 означает, что ваша модель считает, что этот пример на 99 % не является мошенническим.

Шаг 2. Получите прогнозы модели с помощью API Vertex AI.

Пользовательский интерфейс — отличный способ убедиться, что развернутая конечная точка работает должным образом, но есть вероятность, что вам захочется получать прогнозы динамически с помощью вызова REST API. Чтобы показать вам, как получать прогнозы модели, мы будем использовать экземпляр Vertex Workbench, который вы создали в начале этой лабораторной работы.

Затем откройте созданный вами экземпляр блокнота и откройте блокнот Python 3 из панели запуска:

Открыть блокнот

В своем блокноте запустите следующую команду в ячейке, чтобы установить Vertex SDK:

!pip3 install google-cloud-aiplatform --upgrade --user

Затем добавьте ячейку в свой блокнот для импорта SDK и создайте ссылку на только что развернутую конечную точку:

from google.cloud import aiplatform

endpoint = aiplatform.Endpoint(
    endpoint_name="projects/YOUR-PROJECT-NUMBER/locations/us-central1/endpoints/YOUR-ENDPOINT-ID"
)

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

Вы можете найти свой идентификатор конечной точки в разделе конечных точек консоли здесь:

Найдите идентификатор конечной точки

Наконец, сделайте прогноз для своей конечной точки, скопировав и запустив приведенный ниже код в новой ячейке:

test_instance={
    'Time': 80422,
    'Amount': 17.99,
    'V1': -0.24,
    'V2': -0.027,
    'V3': 0.064,
    'V4': -0.16,
    'V5': -0.152,
    'V6': -0.3,
    'V7': -0.03,
    'V8': -0.01,
    'V9': -0.13,
    'V10': -0.18,
    'V11': -0.16,
    'V12': 0.06,
    'V13': -0.11,
    'V14': 2.1,
    'V15': -0.07,
    'V16': -0.033,
    'V17': -0.14,
    'V18': -0.08,
    'V19': -0.062,
    'V20': -0.08,
    'V21': -0.06,
    'V22': -0.088,
    'V23': -0.03,
    'V24': 0.01,
    'V25': -0.04,
    'V26': -0.99,
    'V27': -0.13,
    'V28': 0.003
}

response = endpoint.predict([test_instance])

print('API response: ', response)

Вы должны увидеть прогноз около .67 для класса 0. Это означает, что модель считает, что вероятность того, что эта транзакция не является мошеннической, составляет 67%.

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

Вы узнали, как использовать Vertex AI, чтобы:

  • Загрузите управляемый набор данных
  • Обучите и оцените модель на табличных данных с помощью AutoML
  • Развертывание модели в конечной точке
  • Получайте прогнозы для конечной точки модели с помощью SDK для Vertex.

Чтобы узнать больше о различных частях Vertex AI, ознакомьтесь с документацией .

9. Очистка

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

Если вы хотите полностью удалить блокнот, просто нажмите кнопку «Удалить» в правом верхнем углу.

Чтобы удалить развернутую конечную точку, перейдите в раздел «Конечные точки» консоли Vertex AI и отмените развертывание модели из конечной точки:

Удалить конечную точку

Чтобы удалить сегмент хранилища, в меню навигации облачной консоли перейдите к разделу «Хранилище», выберите сегмент и нажмите «Удалить»:

Удалить хранилище