Дайте мне свои лучшие рекомендации!

Из этой статьи вы узнаете, как:

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

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

Я уже разработал готовую к использованию систему рекомендаций и развернул ее в Google App Engine в качестве конечной точки, чтобы ее можно было легко получить на интерфейсе, но для достижения бета-версии потребовались недели работы и тестирования. Кроме того, обработка его на огромном наборе данных будет означать, что мне потребуется достаточно вычислительной мощности для обработки вычислений. Мне также нужно беспокоиться об автономных и онлайн-системах и хранилище моих данных. Для этого есть простое решение.

Что, если бы вы могли давать рекомендации прямо из консоли Google Cloud Console?

Добро пожаловать в Google BigQuery ML.

Полностью управляемое решение для хранилища данных в Google Cloud. Он обладает выдающимися функциями для аналитики и хранения, а также специальной функцией BigQuery ML. BigQuery ML позволяет развертывать модель машины напрямую с помощью SQL. Это означает, что мне не нужно беспокоиться о вычислениях, хранении или получении данных на моем локальном компьютере.

В системе рекомендаций есть 2 типа функций, на которые вы должны обратить внимание:

Явные функции - функции, которые можно интерпретировать на основе ввода данных пользователем.

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

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

Используемые методы:

  • Система совместных рекомендаций
  • Факторизация матрицы
  • Показатели оценки

Поскольку я использую совместный подход, как мне узнать, какие статьи нравятся моим пользователям больше всего?

У меня нет данных о рейтингах по каждой статье. Я должен искать «неявные особенности». Давайте посмотрим, сколько времени пользователь проводит на этой странице, и это дает мне интуитивное представление о читательских привычках пользователей. Я могу посмотреть на уникальных пользователей, их просмотры страниц и продолжительность сеанса, чтобы создать набор функций для обучения модели машинного обучения. Эти 3 функции необходимы нам для обучения системы рекомендаций на BigQuery ML.

Функции:

  • Уникальный идентификатор пользователя
  • Page_id
  • Session_duration

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

Давайте начнем с просмотра таблицы training_data, которую я создал в BigQuery. Данные содержат анонимные user_id, item_id и время их нахождения на странице.

Когда данные будут готовы, давайте для обучения системы рекомендаций напишем SQL-запрос для создания модели матричной факторизации в BigQuery.

CREATE OR REPLACE MODEL `tyour_dataset.article_recommender`
OPTIONS(model_type=’matrix_factorization’,
                    user_col=’user_Id’,
                    item_col=’item_id’,
                    rating_col=’session_duration’,
                    feedback_type=’implicit’)
AS
SELECT DISTINCT(user_id), cats as item_id, SUM(session_duration) as session_duration
FROM `tegger-prod.analytics_228863360.training_data`
GROUP BY 1,2

Не забудьте указать параметры user_col, item_col для ввода данных пользовательского элемента в модель. Feedback_type для запроса сообщает модели, какой метод использовать для расчета рекомендаций. Неявная обратная связь использует метод взвешенных альтернативных наименьших квадратов. Он по-разному тренируется как для неявной, так и для явной обратной связи. Подробнее здесь.

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

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

SELECT *
FROM ML.EVALUATE(MODEL `your_dataset..article_recommender`)

Какие данные оценивала модель?

Когда вы создаете модель с помощью CREATE MODEL, BigQuery ML автоматически разделяет данные на два набора, обучение и тестирование "за кулисами", что позволяет нам оценить модель.

Самый распространенный метод оценки для рекомендательных систем, средний рейтинг, дает нам хорошее представление о поведении на тестовой выборке. Чем ниже средний рейтинг, тем точнее предсказанные рекомендации соответствуют поведению в тестовой выборке. Он варьируется от 0 до 1, где 0,5 - случайный шанс, а 0 - идеальная рекомендация. Вот отличное объяснение метрик оценки.

Https://sdsawtelle.github.io/blog/output/mean-average-precision-MAP-for-recommender-systems.html

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

А как насчет прогнозов?

DECLARE MY_USERID STRING DEFAULT “be8c7b47-b5fd-42b1-abdb-fe2bfcf3b574”;
SELECT
*
FROM ML.RECOMMEND(MODEL `your_dataset.article_recommender`,
(SELECT MY_USERID as user_id))

Как насчет рекомендаций Top N?

Просто добавьте порядок по убыванию прогнозируемой достоверности и ограничьте результаты 5 для первых N рекомендаций для этого пользователя.

DECLARE MY_USERID STRING DEFAULT “be8c7b47-b5fd-42b1-abdb-fe2bfcf3b574”;
SELECT
*
FROM
ML.RECOMMEND(MODEL `your_dataset.article_recommender`,
(SELECT MY_USERID as user_id))
ORDER BY predicted_session_duration_confidence DESC
LIMIT 5;

Вуаля! У вас все настроено. Вы можете изменить код, чтобы получить Top-N рекомендаций для всех ваших пользователей, и тогда нет предела для использования результатов в производстве. Я использую эти Рекомендации, чтобы повысить вовлеченность пользователей на определенном веб-сайте, рекомендуя пользователям статьи, которые они могут быть заинтересованы в чтении, а также это помогает мне в создании целевых кампаний по электронной почте для рассылки рекламных предложений.

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

Спасибо, что прочитали статью, и, пожалуйста, оставьте отзыв и отметку "Нравится". Спасибо Poling Lin за отличный учебник на YouTube по развертыванию системы рекомендаций на GCP. Кроме того, если вы хотите узнать больше о BigQuery и максимизировать производительность всех операций с данными, от загрузки данных до анализа данных, оставьте комментарий ниже.