Создайте конвейер пакетных рекомендаций с помощью Amazon Personalize без кода PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

Создайте конвейер пакетных рекомендаций с помощью Amazon Personalize без кода

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

Однако создать эффективную систему рекомендаций может быть сложно из-за сложности обучения модели, выбора алгоритма и управления платформой. Amazon персонализировать позволяет разработчикам улучшить взаимодействие с клиентами с помощью персонализированных рекомендаций по продуктам и контенту, не требуя опыта машинного обучения (ML). Разработчики могут сразу привлекать клиентов, используя собранные данные о поведении пользователей. В фоновом режиме Amazon Personalize изучает эти данные, определяет, что является значимым, выбирает правильные алгоритмы, обучает и оптимизирует модель персонализации, настроенную для ваших данных, и предоставляет рекомендации через конечную точку API.

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

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

Обзор решения

В этом решении мы используем ФильмОбъектив набор данных. Этот набор данных включает 86,000 2,113 оценок фильмов от XNUMX XNUMX пользователей. Мы пытаемся использовать эти данные для создания рекомендаций для каждого из этих пользователей.

Подготовка данных очень важна для того, чтобы мы могли получить данные о поведении клиентов в формате, готовом для Amazon Personalize. Архитектура, описанная в этом посте, использует AWS Glue, бессерверный сервис интеграции данных, для преобразования необработанных данных в формат, готовый для использования Amazon Personalize. Решение использует Amazon Personalize для создания пакетных рекомендаций для всех пользователей с помощью пакетного вывода. Затем мы используем рабочий процесс Step Functions, чтобы автоматизированный рабочий процесс можно было запускать путем многократного вызова Amazon Personalize API.

Следующая диаграмма демонстрирует это решение.Диаграмма архитектуры

Мы создадим это решение, выполнив следующие шаги:

  1. Создайте задание преобразования данных, чтобы преобразовать наши необработанные данные с помощью AWS Glue.
  2. Создайте решение Amazon Personalize с преобразованным набором данных.
  3. Создайте рабочий процесс Step Functions, чтобы организовать создание пакетных выводов.

Предпосылки

Для этого пошагового руководства вам потребуется следующее:

Создайте задание преобразования данных для преобразования необработанных данных с помощью AWS Glue.

При использовании Amazon Personalize входные данные должны иметь определенную схему и формат файла. Данные о взаимодействиях между пользователями и элементами должны быть в формате CSV с определенными столбцами, тогда как список пользователей, для которых вы хотите создать рекомендации, должен быть в формате JSON. В этом разделе мы используем AWS Glue Studio для преобразования необработанных входных данных в необходимые структуры и формат для Amazon Personalize.

AWS Glue Studio предоставляет графический интерфейс, предназначенный для простого создания и запуска заданий извлечения, преобразования и загрузки (ETL). Вы можете визуально создавать рабочие нагрузки преобразования данных с помощью простых операций перетаскивания.

Сначала мы подготавливаем исходные данные в Простой сервис хранения Amazon (Amazon S3), то преобразуем данные без кода.

  1. На консоли Amazon S3 создайте корзину S3 с тремя папками: необработанная, преобразованная и проверенная.
  2. Скачать Набор данных MovieLens и загрузите несжатый файл с именем user_ratingmovies-timestamp.dat в корзину в папке raw.
  3. На консоли AWS Glue Studio выберите Джобс в навигационной панели.
  4. Выберите Визуал с источником и целью, а затем выберите Создавай.
  5. Выберите первый узел с именем Источник данных — сегмент S3.. Здесь мы указываем наши входные данные.
  6. На Свойства источника данных вкладка, выберите S3 местоположение и перейдите к загруженному файлу.
  7. Что касается Формат данных, выберите CSV, А для Разделитель, выберите Tab.
    AWS Glue Studio — S3
  8. Мы можем выбрать вкладку Схема вывода, чтобы убедиться, что схема правильно определила столбцы.
  9. Если схема не соответствует вашим ожиданиям, выберите Редактировать для редактирования схемы.
    AWS Glue Studio — Поля

Затем мы преобразуем эти данные в соответствии с требованиями к схеме для Amazon Personalize.

  1. Выберите Преобразование — применить сопоставление узел и, на Transform вкладку, обновите целевой ключ и типы данных.
    Amazon Personalize, как минимум, ожидает следующую структуру для набор данных о взаимодействиях:
    • user_id (Строка)
    • item_id (Строка)
    • timestamp (длинный, в формате времени эпохи Unix)
      AWS Glue Studio — сопоставление полей

В этом примере мы исключаем из набора данных фильмы с низким рейтингом.

  1. Для этого удалите последний узел с именем корзина S3 и добавьте узел фильтра на Transform меню.
  2. Выберите Добавить состояние и отфильтровать данные, где рейтинг < 3.5.
    AWS Glue Studio — вывод

Теперь мы записываем вывод обратно в Amazon S3.

  1. Развернуть цель меню и выберите Amazon S3.
  2. Что касается Целевое местоположение S3, выберите папку с именем transformed.
  3. Выберите CSV как формат и суффикс Целевое местоположение interactions/.

Далее выводим список пользователей, для которых хотим получить рекомендации.

  1. Выберите Применить сопоставление узел снова, а затем разверните Transform меню и выберите Применить сопоставление.
  2. Удалить все поля, кроме user_id и переименуйте это поле в userId. Amazon Personalize ожидает, что это поле будет названо ID пользователя.
  3. Развернуть цель снова меню и выберите Amazon S3.
  4. На этот раз выберите JSON в качестве формата, а затем выберите преобразованную папку S3 и добавьте к ней суффикс batch_users_input/.

Это дает JSON список пользователей в качестве входных данных для Amazon Personalize. Теперь у нас должна получиться диаграмма, которая выглядит следующим образом.

AWS Glue Studio — весь рабочий процесс

Теперь мы готовы запустить нашу работу по преобразованию.

  1. На консоли IAM создайте роль с именем Glue-Service-Role и присоедините следующие управляемые политики:
    • AWSGlueServiceRole
    • AmazonS3FullAccess

Дополнительные сведения о создании ролей службы IAM см. Создание роли для делегирования разрешений сервису AWS.

  1. Вернитесь к заданию AWS Glue Studio и выберите Детали работы меню.
  2. Установите имя задания как batch-personalize-input-transform-job.
  3. Выберите только что созданную роль IAM.
  4. Оставьте значения по умолчанию для всего остального.
    AWS Glue Studio — сведения о вакансии
  5. Выберите Сохранить.
  6. Когда будете готовы, выберите Run и следить за работой в Работает меню.
  7. По завершении задания перейдите к консоли Amazon S3, чтобы убедиться, что выходной файл успешно создан.

Теперь мы преобразовали наши данные в формат и структуру, которые требуются для Amazon Personalize. Преобразованный набор данных должен иметь следующие поля и формат:

  • Набор данных взаимодействий – Формат CSV с полями USER_ID, ITEM_ID, TIMESTAMP
  • Пользовательский набор данных – Формат JSON с элементом userId

Создайте решение Amazon Personalize с преобразованным набором данных

С нашим набором данных о взаимодействиях и входными данными пользователей в правильном формате теперь мы можем создать наше решение Amazon Personalize. В этом разделе мы создаем нашу группу наборов данных, импортируем наши данные, а затем создаем задание пакетного вывода. Группа наборов данных упорядочивает ресурсы в контейнеры для компонентов Amazon Personalize.

  1. На консоли Amazon Personalize выберите Создавай группа наборов данных.
  2. Что касается Домен, наведите на На заказ.
  3. Выберите Создать группу наборов данных и продолжить.
    Amazon Personalize — создание группы наборов данных

Затем создайте набор данных взаимодействий.

  1. Введите имя набора данных и выберите Создать новую схему.
  2. Выберите Создать набор данных и продолжить.
    Amazon Personalize — создание набора данных о взаимодействиях

Теперь мы импортируем данные о взаимодействиях, которые мы создали ранее.

  1. Перейдите к корзине S3, в которой мы создали наш набор данных CSV о взаимодействиях.
  2. На Разрешения... на вкладке добавьте следующую политику доступа к сегменту, чтобы Amazon Personalize имел доступ. Обновите политику, включив в нее имя корзины.
    {
       "Version":"2012-10-17",
       "Id":"PersonalizeS3BucketAccessPolicy",
       "Statement":[
          {
             "Sid":"PersonalizeS3BucketAccessPolicy",
             "Effect":"Allow",
             "Principal":{
                "Service":"personalize.amazonaws.com"
             },
             "Action":[
                "s3:GetObject",
                "s3:ListBucket",
                "s3:PutObject"
             ],
             "Resource":[
                "arn:aws:s3:::<your-bucket-name>",
                "arn:aws:s3:::<your-bucket-name> /*"
             ]
          }
       ]
    }

Вернитесь к Amazon Personalize и выберите Создайте задание по импорту набора данных. Теперь наш набор данных о взаимодействиях должен быть импортирован в Amazon Personalize. Дождитесь завершения задания импорта со статусом Активно, прежде чем переходить к следующему шагу. Это должно занять примерно 8 минут.

  1. На консоли Amazon Personalize выберите Обзор в панели навигации и выберите Создать решение.
    Персонализация Amazon — Панель инструментов
  2. Введите имя решения.
  3. Что касается Тип решения, выберите Рекомендация товара.
  4. Что касается Разработка , выбрать aws-user-personalization рецепт.
  5. Выберите Создать и обучить решение.
    Amazon Personalize — создайте решение

Теперь решение обучается на наборе данных о взаимодействиях, который был импортирован с рецептом персонализации пользователя. Следите за состоянием этого процесса в разделе Версии решения. Дождитесь его завершения, прежде чем продолжить. Это должно занять примерно 20 минут.
Персонализация Amazon — Статус

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

  1. На панели навигации под Пользовательские ресурсы, выберите Работа с пакетным выводом.
  2. Введите имя задания и для Решения, выберите решение, созданное ранее.
  3. Выберите Создать задание на пакетный вывод.
    Amazon Personalize — создание задания пакетного вывода
  4. Что касается Конфигурация входных данных, введите путь S3, где batch_users_input файл находится.

Это файл JSON, содержащий userId.

  1. Что касается Конфигурация выходных данных путь, выберите рекомендуемый путь в S3.
  2. Выберите Создать задание на пакетный вывод.

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

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

Создайте рабочий процесс Step Functions для организации рабочего процесса пакетного вывода.

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

  1. В консоли Step Functions выберите Создать конечный автомат.
  2. Выберите Визуально проектируйте свой рабочий процесс, а затем выберите Следующая.
    AWS Step Functions — создание рабочего процесса
  3. Перетащите CreateDatasetImportJob узел слева (вы можете найти этот узел в поле поиска) на холст.
  4. Выберите узел, и вы должны увидеть параметры API конфигурации справа. Запишите АРН.
  5. Введите свои значения в поле Параметры API текстовое окно.

Это вызывает CreateDatasetImportJob API с указанными вами значениями параметров.

Рабочий процесс AWS Step Functions

  1. Перетащите CreateSolutionVersion узел на холст.
  2. Обновите параметры API, указав ARN решения, которое вы записали.

Это создает новую версию решения с недавно импортированными данными, вызывая метод CreateSolutionVersion API.

  1. Перетащите CreateBatchInferenceJob node на холст и аналогичным образом обновите параметры API соответствующими значениями.

Убедитесь, что вы используете $.SolutionVersionArn синтаксис для получения параметра ARN версии решения из предыдущего шага. Эти параметры API передаются в Создать задание BatchInferenceJob API.

Рабочий процесс AWS Step Functions

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

  1. Найдите и перетащите узел ожидания.
  2. В конфигурации для Подожди, введите 300 секунд.

Это произвольное значение; вы должны изменить это время ожидания в соответствии с вашим конкретным вариантом использования.

  1. Выберите CreateBatchInferenceJob узел снова и перейдите к Обработка ошибок меню.
  2. Что касается Привлекайте Ошибки, войти Personalize.ResourceInUseException.
  3. Что касается Резервное состояние, выберите Подожди.

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

  1. Что касается Путь к Результату, войти $.errorMessage.

Фактически это означает, что при получении исключения «ресурс используется» задание ожидает x секунд, прежде чем повторить попытку с теми же входными данными.

Рабочий процесс AWS Step Functions

  1. Выберите Сохранить, а затем выберите Начать исполнение.

Мы успешно организовали конвейер пакетных рекомендаций для Amazon Personalize. В качестве дополнительного шага вы можете использовать Amazon EventBridge чтобы запланировать триггер этого рабочего процесса на регулярной основе. Для получения более подробной информации см. EventBridge (События CloudWatch) для изменения статуса выполнения Step Functions.

Убирать

Чтобы избежать будущих расходов, удалите ресурсы, созданные для этого пошагового руководства.

Заключение

В этом посте мы продемонстрировали, как создать конвейер пакетных рекомендаций, используя комбинацию AWS Glue, Amazon Personalize и Step Functions, не требуя ни одной строки кода или опыта машинного обучения. Мы использовали AWS Glue для подготовки наших данных в формате, который требуется для Amazon Personalize. Затем мы использовали Amazon Personalize для импорта данных, создания решения с рецептом персонализации пользователя и создания задания пакетного логического вывода, которое по умолчанию генерирует 25 рекомендаций для каждого пользователя на основе прошлых взаимодействий. Затем мы организовали эти шаги с помощью пошаговых функций, чтобы мы могли выполнять эти задания автоматически.

Что касается дальнейших шагов, сегментация пользователей — это один из новых рецептов в Amazon Personalize, который вы, возможно, захотите изучить, чтобы создать пользовательские сегменты для каждой строки входных данных. Для получения более подробной информации см. Получение пакетных рекомендаций и пользовательских сегментов.


Об авторе

Максин Ви

Максин Ви является архитектором решений AWS Data Lab. Максин работает с клиентами над их вариантами использования, разрабатывает решения для решения их бизнес-задач и помогает им создавать масштабируемые прототипы. До своего перехода в AWS Максин помогала клиентам внедрять проекты бизнес-аналитики, хранилищ данных и озер данных в Австралии.

Отметка времени:

Больше от Машинное обучение AWS