Алгоритм ALS (Alternating Least Square) в нескольких рейтингах для пользователя - PullRequest
0 голосов
/ 01 мая 2018

Привет после значительного объема исследований, мы решили использовать инфраструктуру Google Cloud, а также использовать алгоритм ALS (метод коллаборативной фильтрации - https://cloud.google.com/solutions/recommendations-using-machine-learning-on-compute-engine#Training-the-models) в нашей системе рекомендаций по продуктам, которая подробно описана ниже:

У нас есть 2 типа клиентов. Первый тип - это компании, которые продают свой продукт по соседству, а второй тип - это потребители, которые собираются покупать продукт у этих компаний

  1. Каждый потребитель будет иметь возможность искать компании поблизости или искать компании по их секторам (например, бакалея, химчистка, мясная лавка и т. Д.)
  2. Когда потребитель находит компанию, он / она может выполнить следующее действие (он может выполнить несколько пунктов одновременно)

    2,1. Просмотр только профиля компании

    2,2. Добавить компанию в избранное

    2,3. Начать чат с компанией

    2.4. Сделать заказ от компании

    2.5. Дайте оценку и комментарий компании

Итак, что я не понял, так это: каждый элемент, описанный выше, определяется как некоторый столбец рейтинга в нашей базе данных, например:

Просмотр профиля компании: 10 pts

Сделать заказ от компании: 20 баллов

Звезда или комментарий компании: 20 баллов

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

Строка 1: user18-company18-10pts (просмотрели профиль один раз)

Строка 2: user18-company18-20pts (Сделать заказ от компании)

Строка 3: user18-company19-10pts

Что я не уверен в этом алгоритме: вычисляет ли он сумму всех оценок для рейтинга этого пользователя для той же компании (что я точно хочу), или он просто ищет одну строку для рейтинга пользователя для отдельная компания? (Я хочу, чтобы этот алгоритм ALS суммировал строки 1 и 2 для этой пары пользователь-компания)

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

Спасибо

1 Ответ

0 голосов
/ 08 мая 2018

Как и в примере Google (https://cloud.google.com/solutions/recommendations-using-machine-learning-on-compute-engine#Training-the-models, посмотрите на диаграмму 2 матриц), матрица должна составлять 1 строку для каждого клиента и 1 столбец для компании / продукта, который вы пытаетесь рекомендовать.

Если вы пытаетесь рекомендовать компанию пользователю (это я понял из вашего примера), тогда вы должны дать оценку каждому полному взаимодействию между пользователем и компанией, и есть только 1 строка на пользователя.

Учитывая ваш пример с 3 взаимодействиями, и я добавил еще 3 взаимодействия от другого пользователя (пользователь 21):

user18-company18-10pts (просмотр профиля один раз)

user18-company18-20pts (Сделать заказ от компании)

user18-company19-10pts

user21-company16-20pts (Сделать заказ от компании)

user21-company16-20pts (Оставить звезду или Сделать комментарий к компании)

user21-company18-10pts (просмотр профиля один раз)

Тогда ваша матрица должна быть:

Строка 1, столбец 18: 30 (10 + 20 от пользователя 18)

Строка 1, колонна 19: 10 (от пользователя 18)

Строка 2, столбец 16: 40 (20 + 20 от пользователя 21)

Строка 2, столбец 18: 10 (от пользователя 21)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...