ТЕРМИНЫ И ОПРЕДЕЛЕНИЯ 4
ПЕРЕЧЕНЬ СОКРАЩЕНИЙ И ОБОЗНАЧЕНИЙ 5
ВВЕДЕНИЕ 6
1 Анализ рекомендательных систем 8
1.1 Теоретическая основа рекомендательных систем 8
1.2 Сравнительный анализ алгоритмов рекомендательных систем 13
1.3 Анализ требований к разработке 17
1.3.1 Назначение разработки 17
1.3.2 Требования к программной реализации 17
1.4 Концепция разрабатываемой рекомендательной системы 19
2 Разработка графовой рекомендательной системы 25
2.1 Графовые модели рекомендательной системы 25
2.2 Организация структуры хранения данных графовых моделей 27
2.3 Процесс индексирования модели рекомендательной системы 30
2.4 Подготовка моделей системы к горизонтальному масштабированию .. 32
2.5 Предлагаемый алгоритм анализа элементов 34
2.6 Оптимизация скорости исполнения запросов 36
3 Оценка результатов исследования 38
3.1 Тестирование совместимости 38
3.2 Тестирование корректности 39
3.3 Тестирование эффективности 44
3.4 Методология маркетингового исследования при внедрении 45
3.5 Дальнейшие перспективы исследования 49
ЗАКЛЮЧЕНИЕ 50
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ 51
ПРИЛОЖЕНИЕ А. Иллюстрационные материалы 53
ПРИЛОЖЕНИЕ Б. Листинг 56
ПРИЛОЖЕНИЕ В. Презентация 75
Рекомендательные системы являются важнейшей составляющей крупных веб-порталов, будь то социальная сеть, видеохостинг или поисковой сервис. Именно с их помощью пользователи получают возможность просматривать ту информацию, которая отличается от страниц, которые они посещают обычно, но при этом является похожей, делая сервисы удобнее и разнообразнее. Для того, чтобы предложить пользователю интересные ему статьи, видео или фото, применяются различные алгоритмы, различающиеся скоростью, используемой информацией о рекомендуемых сущностях, а также проблемами, решение которых стоит перед программистом. Среди проблем рекомендательных систем можно выделить: проблему холодного старта пользователя, проблему холодного старта контента, проблему разнообразия рекомендаций, проблему обновления рекомендаций и т.д. Различные алгоритмы имеют индивидуальные преимущества и недостатки в решении этих проблем.
Одной из компаний, которая предложила использующее графовые модели решение, стала Pinterest. Их рекомендательная система Pixie [1] используется для обработки терабайтов данных и быстрого формирования рекомендаций. Кроме того, подобная рекомендательная система на графовых моделей GraphJet [2] используется в экосистеме проекта Twitter для формирования персонализированных рекомендаций твитов и пользователей платформы микроблоггинга. Простота и эффективность этого подхода заключается в использовании графового представления предметной области.
Целью исследования является разработка рекомендательной системы, способной функционировать на единственном устройстве и предоставлять рекомендации в режиме реального времени.
При разработке были модифицированы уже существующие концепции и решения, что привело к системе, совмещающей их сильные стороны и удовлетворяющей требованиям. Библиотека графовой рекомендательной системы может использовать различные виды моделей: невзвешенные простые графы, взвешенные простые графы и взвешенные мульти-графы.
Для распространения моделей используется сериализация в бинарный формат CBOR. С помощью редакторов, реализованных в составе библиотеки, возможно индексирование данных предметной области и конвертирование графовых моделей между форматами хранения.
Для генерации кандидатов для рекомендации используются несколько видов запросов, которые можно адаптировать под различные виды систем: поиск элементов, похожих на выбранный элемент, поиск элементов, похожих на набор элементов (удобно для генерации рекомендаций, похожих на историю просмотра пользователя), поиск элементов, связанных с агрегатором (например, пользователем прикладной системы), и поиск элементов, связанных с множеством агрегаторов (например, пользователями сообщества или друзьями). Гибкая природа разработки позволяет ей адаптироваться к условиям различных прикладных программных средств.
В результате выполнения задания на магистерскую работу было разработано программное обеспечение рекомендательной системы на основе графовой модели.
Разработка проведена в системе Windows 10 с использованием языка программирования Kotlin в среде IntelliJ IDEA Community Edition.
В работе были рассмотрены основные принципы проектирования рекомендательных систем, разработан и оптимизирован графовый рекомендательный движок, позволяющий гибко встраивать решение в различные прикладные программы. Также, реализован механизм индексации графовых моделей и их распространения в виде файла или по сети. Для асинхронного исполнения запросов к рекомендательной системе использовалась технология Kotlin Coroutines.
В ходе выполнения работы были выполнены следующие задачи:
• изучение применяемых алгоритмов в области рекомендательных систем,
• анализ требований к разрабатываемой рекомендательной системе,
• составление концепции графовой рекомендательной системы,
• реализация рекомендательного движка на основе графовой модели,
• разработка механизма сериализации графовой модели,
• оптимизация скорости выполнения запросов к программному решению.
Осуществлено модульное тестирование разработанной программной библиотеки, которое показало корректность и эффективность его работы, а также соответствие поставленным требованиям.