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

- Персональные рекомендации базируются на данных о конкретном пользователе, а именно на информации о том, каким образом пользователь взаимодействовал с системой ранее. Так формируются рекомендации специально для данного пользователя. Персональные рекомендации рассчитываются на основании матрицы пользователь-элемент, содержащей явные и неявные оценки. В качестве результата будут посчитаны предполагаемые оценки для всех нулевых элементов матрицы пользователь – элемент. Совместная фильтрация основана на фильтрации в окрестностях - в данной системе реализована фильтрация по элементам (поиск элементов, которые похожи на другие элементы, которые активный пользователь уже оценил), т.к. сходство элементов считается более устойчивыми и его можно рассчитать заранее, что увеличивает быстродействие работы системы с пользователем. Процедура фильтрации по элементам будет происходить следующим образом:
Общая архитектура приложения имеет следующую структуру, где



