Создайте рекомендательную систему менее чем за 60 минут

Пошаговое руководство по созданию рекомендательной системы с помощью Amazon Personalize.

Плохие времена! С тех пор, как правительство Таиланда объявило чрезвычайное положение из-за коронавируса, всех нас поощряли работать из дома. Мне было поручено провести вебинар на тему «Повышение вовлеченности клиентов электронной коммерции в условиях Covid-19».

Итак, после тщательного рассмотрения и с учетом моего базового опыта в области машинного обучения я решил сделать темой этого веб-семинара создание рекомендательной системы менее чем за час с помощью Amazon Personalize.

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

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

Я наткнулся на Amazon Personalize, и он помечает все нужные поля.

Вот как я это сделал!

Что такое Amazon Personalize?

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

Если вы хотите продолжить - я бы рекомендовал вам загрузить легендарные данные MovieLens, которые содержат пользователей и оценки, это будут наши входные данные в Amazon Personalize.



Шаг 1. Подготовка данных и загрузка данных

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

Мне нужно было подготовить CSV-файл с заранее заданными столбцами с надписью «Кто что купил?» данные - это называется «Взаимодействие».

Итак, нам нужны USER_ID и ITEM_ID, а также TIMESTAMP (формат даты Unix).

Нам нужно выгрузить наш CSV-файл в корзину S3, а для тех, кто плохо знаком с AWS, S3 - это объектное хранилище. Вы можете бросить в него все, что хотите, но вам придется заплатить Джеффу!

Итак, без лишних слов - запускаем Amazon Personalize!

На этом первом этапе мы начнем с создания группы наборов данных, чтобы импортировать наши данные в Amazon Personalize.

Затем мы будем перенаправлены на панель обзора в консоли Amazon Personalize. Обязательно нажмите Импортировать данные взаимодействия пользователя с элементом. Мы будем импортировать наши данные из S3 в группу наборов данных Amazon Personalize, просто вставив путь к CSV-файлу.

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

Вот как мы можем визуализировать файл схемы JSON, надеюсь, это поможет!

Как только это будет сделано, мы можем нажать «Начать импорт», чтобы импортировать CSV-файл, чтобы завершить процесс создания набора данных, который завершает Шаг 1!

Шаг 2. Создайте решение (обучение модели)

Переходим к шагу 2. Здесь вы создадите решение и выберете один из предварительно созданных рекомендательных алгоритмов для работы (так называемые рецепты) в Amazon Personalize.

Подумайте об этом так:

Чтобы начать этот процесс - мы начнем с того места, где мы остановились в прошлый раз, с панели обзора, но на этот раз мы нажмем «Создать решение».

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

HRNN, что означает Иерархическая рекуррентная нейронная сеть. Этот алгоритм должен быть очень мощным и может обрабатывать изменения в поведении потребителей - идеально подходит для этой эпохи Covid-19!

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

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

Для компьютерных фанатов, вот эталонное сравнение HRNN с остальными.

Шаг 3. Запустите и протестируйте кампанию

Это наш последний шаг - мы запустим «Кампанию» на Amazon Personalize и, наконец, увидим, какие элементы наша Рекомендуемая система представит нашим пользователям / клиентам. Создание кампании - это самый простой шаг, и мы, как всегда, начинаем с панели обзора.

Просто убедитесь, что вы выбрали решение, которое вы только что создали на шаге 2, и нажмите «Создать кампанию».

А теперь момент истины - мы можем протестировать кампанию, введя идентификатор пользователя и щелкнув «Получить рекомендации», чтобы увидеть список идентификаторов предметов, рекомендованных нашему пользователю / покупателю. Так просто!

Бонус: обслуживание модели в Amazon Personalize

Обычно, когда люди говорят о внедрении модели «в производство», они обычно имеют в виду выполнение вывода, иногда называемого оценкой модели, прогнозированием или обслуживанием.

В случае Amazon Personalize, как только мы создадим нашу кампанию, она автоматически создаст и развернет для нас конечную точку вывода кампании. Все, что нам нужно сделать, это просто вызвать getReccomendation API, чтобы получать рекомендации в режиме реального времени!

Вот пример кода, необходимый для вызова API - нам просто нужно очень базовое понимание AWS SDK для Python (Boto3).

Убедитесь, что у вас установлен AWS SDK для Python.

  1. Создайте словарь «Ответ»
  2. Вызовите get_recommendations API, передайте переменную userId, чтобы получить рекомендации.
  3. Показать рекомендуемые элементы (будет отображаться itemId)
  4. Сопоставьте itemId и объедините данные из «DataFrame имени элемента» для отображения имен элементов (это необязательно)
import boto3
personalize = boto3.client('personalize')
response = personalize.list_recipes()
for recipe in response['recipes']:
    print(recipe)
personalizeRt = boto3.client('personalize-runtime')

Запустите этот блок кода, чтобы получить рекомендацию элемента, передав user_Id (я использовал 2 в приведенном ниже примере) и убедитесь, что вы вызываете правильную кампанию ARN!

response = personalizeRt.get_recommendations(
campaignArn = 'arn:aws:personalize:<insert region & campaign ARN>:campaign/ratings-campaign',
userId = '2')

Мы достигли этого без каких-либо знаний в области машинного обучения!

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