Система рекомендаций


Обзор моего представления

Рекомендательная система

Рекомендательная система с открытым исходным кодом, основанная на данных временных рядов и статистическом анализе. Написана на TypeScript и Node.js с использованием Redis для хранения данных. Рекомендательная система использует индекс Жаккара для расчета пересечения двух множеств. Одно множество представлено максимально возможной суммой баллов тегов, а другое — суммой баллов пользовательских событий по каждому тегу. Чем выше индекс Жаккара, тем выше рекомендация. Для повышения производительности он использует числа для представления множеств.

Характеристики

  • Использование оценки тегов и индекса Жаккара
  • Фильтрация на основе контента
  • Движок, управляемый событиями
  • Наивное исследование новых тегов
  • Подходит для рекомендации продуктов и контента
  • Точная настройка весов тегов
  • Минималистичный и легкий
  • Написан на TypeScript и Node.js

Как это работает

Как хранятся данные:

  • Акторы хранятся в Redis как простые ключи String с датой создания timestamps в качестве значения.
  • Элементы имеют тип Set с tags в качестве членов. Элемент может иметь несколько тегов.
  • События представляют собой тип String с actorId:id:tag:timestamp:ttl и атрибутом expire, установленным для обеспечения свежести рекомендаций.

Как осуществляется доступ к данным:

  • Получить актера с помощью событий
    • Проверить, существует ли актер, с помощью EXISTS actor:${id}.
    • Получите все события пользователя с помощью SCAN ${петля курсора} MATCH actor:${id}.
  • Удаление одного актера
    • Сканирование для каждого события, связанного с ключом актера SCAN ${loop cursor} MATCH actor:${id}*
    • Для каждого ключа удалите с помощью DEL ${key}.
  • Добавьте одного актера
    • Сканирование для каждого связанного с ключом актера SCAN ${loop cursor} MATCH actor:${id}*
    • Для каждого ключа удалить с помощью DEL ${key}
    • Добавьте нового актера с помощью SET actor:${id} ${Date.now().toString()}.
  • Добавьте одно событие
    • Проверьте, существует ли актер, если установлен флаг, используя EXISTS actor:${id}
    • Добавить событие с помощью SET actor:${id}:${tag}:${date}:${ttl} ${score}.
    • Если был предоставлен TTL, установите срок действия события с помощью EXPIRE actor:${id}:${tag}:${date}:${ttl} ${ttl}.
  • Получить все элементы с тегами
    • Получить все элементы с SCAN ${loop cursor} MATCH item:*
    • Для каждого элемента получить все теги с помощью SMEMBERS ${itemKey}
  • Получить один элемент с тегами
    • Получить все теги элемента с помощью SMEMBERS item:${id}
  • Удалить отдельный элемент
    • Вызвать с помощью DEL item:${id}
  • Добавить отдельный элемент
    • Проверьте, существует ли уже элемент EXISTS item:${id}
    • Если да, то удалите DEL item:${id}.
    • И добавьте элемент с тегами SADD item:${id} ${tags}.

pilotpirxie / рекомендация

🦝 Простая рекомендательная система с открытым исходным кодом

рекомендация

Рекомендательная система с открытым исходным кодом, основанная на данных временных рядов и статистическом анализе. Написана на TypeScript и Node.js с использованием Redis для хранения данных. Система рекомендаций использует индекс Jaccard для вычисления пересечения двух множеств. Одно множество представлено максимально возможной суммой баллов тегов, а другое — суммой баллов пользовательских событий по каждому тегу. Чем выше индекс Жаккара, тем выше рекомендация. Для повышения производительности он использует числа для представления множеств.

Характеристики

  • Использование оценки тегов и индекса Жаккара
  • Фильтрация на основе контента
  • Движок, управляемый событиями
  • Наивное исследование новых тегов
  • Подходит для рекомендации продуктов и контента
  • Точная настройка весов тегов
  • Минималистичный и легкий
  • Написан на TypeScript и Node.js

Обзорное видео

Как это работает

Как хранятся данные:

  • Акторы хранятся в Redis как простые ключи String с датой создания timestamps в качестве значения.
  • Элементы имеют тип Set с tags в качестве членов. Элемент может иметь…
Посмотреть на GitHub

Видео — Демонстрация рекомендаций по фильмам

Категория представления:

Минимализм Маги

Заменяет базу данных временных рядов для ввода большого объема событий актера (например, пользователя) и OLAP-операций для вычисления рекомендаций. Имейте в виду ограничение по времени хакатона, поэтому воспринимайте это заявление с щепоткой соли 😉

Используемый язык

TypeScript

Ссылка на код

https://github.com/pilotpirxie/recommendation

Дополнительные ресурсы / информация

Коллаборационисты

Meat Boy

AWS, Web & Mobile Dev

  • Ознакомьтесь с Redis OM, клиентскими библиотеками для работы с Redis как многомодельной базой данных.
  • Используйте RedisInsight для визуализации данных в Redis.
  • Подпишитесь на бесплатную базу данных Redis.

Оцените статью
devanswers.ru
Добавить комментарий