Поиск по сайту:

Внедрите рекомендации по машинному обучению в свое приложение с помощью AWS Personalize


AWS Personalize — это механизм рекомендаций по продуктам, который работает так же, как тот, который используется для Amazon.com, и создан на основе более чем 20-летнего опыта персонализации. Вы можете реализовать его как свой собственный API, чтобы дополнить предложения вашего приложения машинным обучением.

Что такое персонализация AWS?

«Система рекомендаций по продуктам» — это общий термин, который может применяться ко многим вещам, а не только к онлайн-покупкам. Возьмем, к примеру, YouTube. Если вы зарегистрируете новую учетную запись YouTube, вы получите много общих видео, которые нравятся массовой аудитории — в основном это те материалы, которые находятся в тренде. Однако, если вы ищете «minecraft letsplay» и смотрите получасовое видео, алгоритм рекомендации YouTube примет это к сведению. Он просматривает теги, заголовок, канал, дату публикации и другие метаданные из видео, которое вам понравилось, а затем, используя машинное обучение, пытается найти другие видео, похожие на него и имеющие аналогичное участие других пользователей. . Возможно, вы получите больше видео из той же серии, поскольку люди склонны смотреть вещи в хронологическом порядке. Возможно, есть другой канал, делающий похожий контент, который вам тоже может понравиться.

Все это основано на рекомендациях машинного обучения. «Продукт» может быть чем угодно — в случае с Amazon это товары, которые они продают. Для YouTube это видео. Для Spotify это новые песни для прослушивания. Для Facebook (или любой другой социальной сети) это посты пользователей.

Этот движок упакован в автономную PaaS, которая не требует каких-либо специальных знаний в области машинного обучения. Вы передаете движку действия пользователя (нажали на этот пост, прослушали эту песню X минут и т. д.), и движок выдаст новые рекомендации из вашего каталога товаров по запросу. Рекомендации могут начаться немного неточно, но как только ваша модель будет достаточно обучена, они станут очень точными.

Настройка AWS Персонализация

Каждый проект AWS Personalize будет иметь три набора данных:

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

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

Параметр по умолчанию — импортировать исторические данные из файла CSV, хотя вы можете использовать API отслеживания событий для отправки обновлений в реальном времени, как только все заработает. Однако вам потребуются некоторые обучающие данные для импорта — импорт не удастся, если в вашем списке взаимодействий меньше 1000 записей. Если вы просто хотите протестировать Personalize, вам нужно создать какие-то фиктивные данные, которые соответствуют вашей схеме, прежде чем продолжить импорт.

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

Нажмите «Далее», и вы автоматически перейдете к настройке импорта взаимодействий. Дайте ему имя («взаимодействия») и определите свою схему. Он представлен в формате Apache Avro и сообщает Personalize, какие поля есть у каждого взаимодействия (или продукта/пользователя). Для взаимодействий самым простым является привязка USER_ID к PRODUCT_ID, которая используется для поиска пользователей и продуктов из других таблиц (реляционная связь «многие ко многим»).

Затем вам нужно будет импортировать данные в Personalize из CSV-файла в S3. Сначала выберите или создайте роль службы, которая может получить доступ к этому сегменту. Вам также потребуется прикрепить следующую политику сегмента к целевому сегменту, чтобы разрешить Personalize доступ к нему, заменив bucketname на имя вашего сегмента:

{
    "Version": "2012-10-17",
    "Id": "PersonalizeS3BucketAccessPolicy",
    "Statement": [
        {
            "Sid": "PersonalizeS3BucketAccessPolicy",
            "Effect": "Allow",
            "Principal": {
                "Service": "personalize.amazonaws.com"
            },
            "Action": [
                "s3:GetObject",
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::bucket-name",
                "arn:aws:s3:::bucket-name/*"
            ]
        }
    ]
}

Затем вы можете вставить путь к файлу:

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

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

Дайте ему имя и выберите рецепт, который вы хотите использовать для питания решения. Вы можете выбрать это вручную или выбрать «AutoML», который будет использовать HRNN AWS для прогнозирования. Если вы не уверены, выберите AutoML.

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

Как только ваша версия решения завершит инициализацию, вы можете создать кампанию: по сути, инстансированный механизм вывода, для получения актуальных рекомендаций. Он имеет конечную точку REST API, которую вы можете запрашивать и использовать из своего приложения.

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

aws personalize-rec get-recommendations --campaign-arn $CAMPAIGN_ARN 
--user-id $USER_ID --query "itemList[*].itemId"

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

Чтобы добавить данные в реальном времени в решение, вам нужно создать Event Tracker на боковой панели. Это даст вам идентификатор трекера, который вы можете использовать для ввода данных.

Есть два способа настроить это: если вы используете AWS Amplify, серверную структуру веб-приложений и мобильных приложений AWS, настройка проста, и вам просто нужно настроить ее из консоли Amplify. Если нет, вам придется настроить функцию Lambda для обработки данных и отправки их в Personalize.