Skip to content

kateri-na/recommenderAlgorithm

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

64 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Рекомендательная система для подбора сериалов пользователям сервиса

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

Общий алгоритм работы системы представлен на диаграмме ниже

image

  • Сбор данных заключается в помещении в базу данных информации о сериалах и пользователях. Также в базу данных заносятся явные оценки пользователей, поставленные сериалам и журнал. Журнал - это таблица, хранящая данные о взаимодействиях пользователей с системой. На основании этих данных будут построены неявные оценки. Журнал хранит маркеры действий, которые осуществляет пользователь с предложенным контентом – в нашем случае запуск серии сериала, просмотр описания сериала, просмотр количества сезонов и серий.
  • Предварительная обработка представляет собой расчёт неявных оценок. Неявные оценки - это оценки, вычисленные на основании поведения пользователя. Для преобразования взаимодействия пользователя с рекомендательной системой в оценку требуются формулы, представленные ниже. image Весовые коэффициенты - это правила интерпретации действий пользователя:
    • запуск серии сериала – высшая оценка (100);
    • просмотр описания сериала – очень хорошая оценка (50);
    • просмотр количества сезонов и серий – хорошая оценка (25);

С учётом представленных выше формул алгоритм расчёта неявных оценок примет следующий вид: image

  • Неперсональные рекомендации – список наиболее популярных объектов. Любой человек, который взаимодействует с рекомендательной системой, видит те же рекомендации, что и остальные люди. В данном конкретном случае осуществляется выбор топ-3 самых просматриваемых сериалов. Алгоритм получения такой рекомендации представлен на диаграмме. image
  • Персональные рекомендации базируются на данных о конкретном пользователе, а именно на информации о том, каким образом пользователь взаимодействовал с системой ранее. Так формируются рекомендации специально для данного пользователя. Персональные рекомендации рассчитываются на основании матрицы пользователь-элемент, содержащей явные и неявные оценки. В качестве результата будут посчитаны предполагаемые оценки для всех нулевых элементов матрицы пользователь – элемент. Совместная фильтрация основана на фильтрации в окрестностях - в данной системе реализована фильтрация по элементам (поиск элементов, которые похожи на другие элементы, которые активный пользователь уже оценил), т.к. сходство элементов считается более устойчивыми и его можно рассчитать заранее, что увеличивает быстродействие работы системы с пользователем. Процедура фильтрации по элементам будет происходить следующим образом:
    1. Вычисление сходства между выбранным элементом и остальными.
    2. Сортировка элементов по сходству.
    3. Выбор окрестности.
    4. Вычисление прогноза и оценки. Более подробно алгоритм представлен на схеме ниже: image Формулы, необходимые для осуществления алгоритма совместной фильтрации: image

Общая архитектура приложения имеет следующую структуру, где

  • Уровень Api содержит классы контроллеров, отмеченные аннотацией @Controller
  • Уровень бизнес-логики содержит классы, отмеченные аннотацией @Service
  • Уровень доступа к данным содержит классы, отмеченные аннотациями @Repository, @Entity, @Configuration image

About

Spring Boot and Spring Data JPA application with collaborative filtering algorithm

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages