На базовом уровне технология машинного обучения (ML) учится на данных, чтобы делать прогнозы. Компании используют свои данные с помощью службы персонализации на базе машинного обучения, чтобы улучшить качество обслуживания клиентов. Такой подход позволяет компаниям использовать данные для получения действенной информации и помощи в увеличении доходов и лояльности к бренду.
Amazon Personalize ускоряет цифровую трансформацию с помощью машинного обучения, упрощая интеграцию персонализированных рекомендаций в существующие веб-сайты, приложения, системы электронного маркетинга и многое другое. Amazon Personalize позволяет разработчикам быстро внедрить настраиваемый механизм персонализации, не требуя знаний в области машинного обучения. Amazon Personalize предоставляет необходимую инфраструктуру и управляет всем конвейером машинного обучения (ML), включая обработку данных, определение функций, использование наиболее подходящих алгоритмов, а также обучение, оптимизацию и размещение моделей. Вы получаете результаты через API и платите только за то, что используете, без каких-либо минимальных комиссий или авансовых обязательств.
В публикации «Создание персонализированных рекомендаций практически в реальном времени с помощью Amazon Personalize» показано, как создавать персонализированные рекомендации практически в реальном времени с помощью Amazon Personalize и специализированных сервисов данных AWS. В этом посте мы познакомим вас с эталонной реализацией системы персонализированных рекомендаций в реальном времени с использованием Amazon Personalize.
Обзор решения
Решение для персонализированных рекомендаций в режиме реального времени реализовано с использованием Amazon Personalize, Amazon Simple Storage Service (Amazon S3), Amazon Kinesis Data Streams, AWS Lambda и Amazon API Gateway.
Архитектура реализована следующим образом:
- Подготовка данных – Начните с создания группы наборов данных, схем и наборов данных, представляющих ваши элементы, взаимодействия и пользовательские данные.
- Обучение модели – После импорта данных выберите рецепт, соответствующий вашему варианту использования, а затем создайте решение для обучения модели, создав версию решения. Когда ваша версия решения будет готова, вы сможете создать кампанию для вашей версии решения.
- Получайте рекомендации практически в реальном времени – Если у вас есть кампания, вы можете интегрировать вызовы кампании в свое приложение. Здесь выполняются вызовы API GetRecommendations или GetPersonalizedRanking для запроса рекомендаций практически в реальном времени от Amazon Personalize.
Дополнительную информацию см. в разделе «Разработка персонализированных рекомендаций практически в реальном времени с помощью Amazon Personalize».
На следующей диаграмме показана архитектура решения.
Выполнение
Мы демонстрируем эту реализацию на примере использования рекомендаций по фильмам конечному пользователю в реальном времени на основе его взаимодействия с базой данных фильмов с течением времени.
Решение реализуется с помощью следующих шагов:
- Предварительное условие (подготовка данных)
- Настройте среду разработки
- Развертывание решения
- Создать версию решения
- Создать кампанию
- Создайте трекер событий
- Получить рекомендации
- Прием взаимодействий в реальном времени
- Проверка рекомендаций в режиме реального времени
- Очистка
Предварительные условия
Прежде чем приступить к работе, убедитесь, что у вас есть следующие предварительные условия:
- Подготовьте данные для тренировок – Подготовьте и загрузите данные в корзину S3 с помощью инструкции. В этом конкретном случае вы будете загружать данные о взаимодействиях и данные об элементах. Взаимодействие — это событие, которое вы записываете, а затем импортируете в качестве обучающих данных. Amazon Personalize генерирует рекомендации, главным образом, на основе данных о взаимодействиях, которые вы импортируете в набор данных «Взаимодействия». Вы можете записывать события нескольких типов, например клик, просмотр и т. д. Хотя модель, созданная Amazon Personalize, может предлагать предложения на основе прошлых взаимодействий пользователя, качество этих предложений можно повысить, если модель располагает данными об ассоциациях между пользователями или элементами. Если пользователь взаимодействовал с фильмами, отнесенными к категории «Драма» в наборе данных элементов, Amazon Personalize предложит фильмы (объекты) того же жанра.
- Настройте среду разработки – Установить интерфейс командной строки AWS (AWS CLI).
- Настройте CLI с помощью своей учетной записи Amazon – Настройте интерфейс командной строки AWS с информацией вашей учетной записи AWS.
- Установите и загрузите AWS Cloud Development Kit (AWS CDK)
Развертывание решения
Чтобы развернуть решение, выполните следующие действия:
- Клонировать репозиторий в новую папку на рабочем столе.
- Развертывать стек в вашу среду AWS.
Создать версию решения
Под решением понимается комбинация рецепта Amazon Personalize, настраиваемых параметров и одной или нескольких версий решения (обученных моделей). Когда вы развертываете проект CDK на предыдущем шаге, для вас автоматически создается решение с рецептом пользовательской персонализации. Версия решения относится к обученной модели машинного обучения. Создать версия решения для реализации.
Создать кампанию
Кампания развертывает версию решения (обученную модель) с предоставленной транзакционной способностью для генерации рекомендаций в реальном времени. Создать кампания для реализации.
Создайте трекер событий
Amazon Personalize может давать рекомендации только на основе данных о событиях в реальном времени, только на исторических данных о событиях или на том и другом. Записывайте события в реальном времени, чтобы собирать данные о взаимодействиях, и позвольте Amazon Personalize учиться на последних действиях вашего пользователя. Это сохранит актуальность ваших данных и повысит актуальность рекомендаций Amazon Personalize. Прежде чем вы сможете записывать события, вы должны создать трекер событий. Средство отслеживания событий направляет новые данные о событиях в набор данных «Взаимодействия» в вашей группе наборов данных. Создавайте и трекер событий для реализации.
Получить рекомендации
В этом случае набор данных взаимодействия состоит из идентификаторов фильмов. Следовательно, рекомендации, представленные пользователю, будут состоять из идентификаторов фильмов, которые наиболее точно соответствуют его личным предпочтениям, определенным на основе их исторического взаимодействия. Вы можете использовать getRecommendations
API для получения персонализированных рекомендаций для пользователя путем отправки связанных userID
, количество результатов по рекомендациям, которое нужно пользователю, а также ARN кампании. Вы можете найти кампанию ARN в меню консоли Amazon Personalize.
Например, следующий запрос получит 5 рекомендаций для пользователя, чей userId
это 429:
Ответом на запрос будет:
Элементы, возвращаемые вызовом API, — это фильмы, которые Amazon Personalize рекомендует пользователю на основе его исторических взаимодействий.
Значения оценок, представленные в этом контексте, представляют собой числа с плавающей запятой в диапазоне от нуля до 1,0. Эти значения соответствуют текущей кампании и связанным с ней рецептам для этого варианта использования. Они определяются на основе совокупных оценок, присвоенных всем элементам, присутствующим в вашем комплексном наборе данных.
Прием взаимодействий в реальном времени
В предыдущем примере рекомендации были получены для пользователя с идентификатором 429 на основе его исторического взаимодействия с базой данных фильмов. Для получения рекомендаций в реальном времени взаимодействие пользователя с элементами должно регистрироваться в Amazon Personalize в режиме реального времени. Эти взаимодействия передаются в систему рекомендаций через Amazon Personalize Event Tracker. Тип взаимодействия, также называемый EventType
задается одноименным столбцом в наборе данных взаимодействия (EVENT_TYPE
). В этом примере события могут быть типа «наблюдение» или «нажатие», но вы можете иметь свои собственные типы событий в соответствии с потребностями вашего приложения.
В этом примере открытый API, который генерирует события пользователей с элементами, получает параметр «взаимодействия», соответствующий количеству событий (interactions
) пользователя (UserId
) с одним элементом (itemId
) прямо сейчас. trackingId
Параметр можно найти в консоли Amazon Personalize и в ответе на создание запроса Event Tracker.
В этом примере показано putEvent
Запрос: Создайте 1 взаимодействие типа клик с идентификатором элемента «185» для идентификатора пользователя «429», используя текущую временную метку. Обратите внимание, что в рабочей среде для параметра sendAt должно быть установлено время взаимодействия пользователя. В следующем примере мы установили это значение на момент времени в формате эпохи, когда мы писали запрос API для этого сообщения. События отправляются в потоки данных Amazon Kinesis через шлюз API, поэтому вам необходимо отправить параметры имени потока и PartitionKey.
Вы получите подтверждающий ответ, подобный следующему:
Проверка рекомендаций в режиме реального времени
Поскольку набор данных о взаимодействиях был обновлен, рекомендации будут автоматически обновлены с учетом новых взаимодействий. Чтобы проверить рекомендации, обновляемые в режиме реального времени, вы можете снова вызвать API getRecommendations для того же пользователя с идентификатором 429, и результат должен отличаться от предыдущего. Следующие результаты показывают новую рекомендацию с идентификатором 594, а рекомендации с идентификаторами 16, 596, 153 и 261 изменили свои оценки. Эти элементы внесли новый жанр фильмов («Анимация|Дети|Драма|Фэнтези|Мюзикл») в топ-5 рекомендаций.
Запрос:
Ответ:
Ответ показывает, что рекомендации Amazon Personalize обновлялись в режиме реального времени.
Очистить
Чтобы избежать ненужных расходов, очистите реализацию решения, используя Очистка ресурсов.
Заключение
В этом посте мы показали вам, как реализовать систему персонализированных рекомендаций в реальном времени с помощью Amazon Personalize. Взаимодействие с Amazon Personalize для обработки взаимодействий в реальном времени и получения рекомендаций осуществлялось с помощью инструмента командной строки под названием Curl, но эти вызовы API можно интегрировать в бизнес-приложение и получить тот же результат.
Чтобы выбрать новый рецепт для вашего варианта использования, обратитесь к разделу «Персонализация в реальном времени». Чтобы измерить влияние рекомендаций Amazon Personalize, см. раздел «Измерение влияния рекомендаций».
Об авторах
Кристиан Маркес — старший архитектор облачных приложений. Он имеет обширный опыт проектирования, создания и поставки программного обеспечения корпоративного уровня, распределенных систем с высокой нагрузкой и облачных приложений. У него есть опыт работы с языками бэкэнд- и фронтенд-программирования, а также системного проектирования и внедрения практик DevOps. Он активно помогает клиентам создавать и обеспечивать безопасность инновационных облачных решений, решая их бизнес-задачи и достигая бизнес-целей.
Ананд Командоруу — старший облачный архитектор в AWS. Он присоединился к организации AWS Professional Services в 2021 году и помогает клиентам создавать облачные приложения в облаке AWS. У него более 20 лет опыта создания программного обеспечения, и его любимый принцип лидерства в Amazon: «Лидеры во многом правы.«