Научные труды

Источник: Сборник материалов IV Международной научно-практической конференции «Программная инженерия: методы и технологии разработки информационно-вычислительных систем» (ПИИВС-2022). — 2022. - Т. 1. — С. 89-93.


УДК 004.58

РАЗРАБОТКА РЕКОМЕНДАТЕЛЬНОЙ СИСТЕМЫ НА ОСНОВЕ КОНТЕНТНО-ОРИЕНТИРОВАННОЙ ФИЛЬТРАЦИИ ДЛЯ КНИЖНОГО ИНТЕРНЕТ-МАГАЗИНА

О.С. Леонова*1, И.А. Коломойцева*2
*1 студент, Донецкий национальный технический университет, loksana864@gmail.com
*2 старший преподаватель, Донецкий национальный технический университет, bolatiger@mail.ru


Леонова О.С., Коломойцева И.А. Разработка рекомендательной системы на основе контентно-ориентированной фильтрации для книжного интернет-магазина. Данная работа посвящена разработке рекомендательной системы для книжного интернет-магазина. В работе рассмотрены виды рекомендательных систем, метод построения рекомендаций для данной предметной области. Описана методология и особенности процесса формирования исходных массивов данных. Реализован подход, основанный на методе контентной фильтрации.

Ключевые слова: рекомендательная система, контентно-ориентированная фильтрация, косинусное сходство, книжный интернет-магазин, фильтрация информации.

Введение

Рекомендательная система – комплекс алгоритмов, программ и сервисов, задача которого предсказать, что может заинтересовать того или иного пользователя на основе информации о профиле человека, его более ранних действиях и выборе, предоставляя персонализированные предложения, основанные на истории симпатий пользователя [1]. Рекомендательные системы на данный момент распространены на многих интернет-площадках: новостных лентах, музыкальных сервисах, сайтах с фильмами, – но наибольшее значение рекомендательные системы имеют для интернет-магазинов. По оценкам McKinse в интернет-сервисе Amazon.com за год совершается около 5 млрд. транзакций, при этом 30% совершается на основе рекомендаций системы [2]. Таким образом, приблизительно 125 млн. покупок в месяц совершается, благодаря рекомендательной системе. Кроме того, рекомендательные сервисы могут положительно влиять на конверсию (из посетителей в покупателей), частоту покупок и средний чек (через количество товаров в заказе), что в совокупности ведет к увеличению прибыли компании.

Но, несмотря на такие высокие показатели, по данным DataInsight среди 250 крупнейших российских интернет-магазинов системы рекомендации используют меньше половины [3]. Это можно объяснить программной сложностью реализации рекомендательных систем, дополнительными расходами на разработку и отсутствием универсального решения.

Книжные рекомендательные сервисы менее популярны, чем рекомендательные системы для музыки или фильмов. Особенностям разработки рекомендательных систем для книжных сервисов посвящены статьи Прокофьевой И.А., Волковой Л.Л. и Mohd Sabri N [4]. Примером успешного книжного интернет-сервиса с рекомендательной системой является компания «ЛитрРес». Построение рекомендации основывается на информации из профиля пользователя, анализе его поведения и его ленты новостей, а также предпочтениях, указанных пользователем в самом приложении. Исходя из полученных данных, рекомендательный сервис «ЛитРес» формирует список книг, потенциально интересных пользователю.

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

Целью данной статьи является разработка рекомендательной системы для веб-приложения сети книжных магазинов «Буклет». «Буклет» - сеть книжных магазинов, которые работают на локальном рынке Донецкой и Луганской Народных республик. Предполагаемое количество пользователей веб-сайта составляет 13 тысяч пользователей. Объем книжной продукции в среднем 43 тысячи уникальных книжных наименований.

Описание задачи

Следует отметить, что компанию «Буклет» нельзя сравнивать с «ЛитРес» и другими крупными интернетсервисами с рекомендательными системами. Данная книжная сеть имеет отличные от других книжных интернет-магазинов бизнес-процессы и ограничения функциональности в некоторых моментах.

Приведем некоторые особенности веб-приложения и бизнес-процессов «Буклета», которые могут выступать ограничивающими факторами при выборе алгоритма рекомендательной системы. Так, например, в веб-приложении на данный момент отсутствует функция оценки книги, отзывы и опрос выбора предпочтений. То есть, в веб-приложении фактически отсутствует явная обратная связь от пользователей.

Обратной связью (feedback) пользователя на некоторый объект в рекомендательных системах называют событие, по которому можно судить о предпочтении пользователя к объекту. Обратная связь может быть явной (explicit feedback) и неявной (implicit feedback). В приложении на данный момент реализована только неявная связь в виде:

К этим данным мы будем возвращаться при выборе рекомендательной системы. Также следует уточнить, что данное веб-приложение находится на этапе разработки и еще не наполнено активными пользователями.

Формализуем задачу. Заданы:

Каждый товар i имеет категорию c (жанр), которая объединяет товары в группы по некоторым характеристикам. Транзакцией в интернет-магазине является добавление в корзину или в «избранное» пользователем u товара i.

Требуется для каждого пользователя u ∈ U построить список из k наиболее релевантных товаров, каждый из которых отсортирован по убыванию релевантности.

Виды рекомендательных систем

Можно выделить три основных подхода к построению рекомендательных систем:

Суть контентной фильтрации заключается в том, что мы сопоставляем пользователей с тем контентом или товарами, которые им нравились в прошлом [7]. То есть, контентно-ориентированные системы выдвигают гипотезу, что, если пользователь интересовался элементом в прошлом, он снова будет заинтересован в нем в будущем.

Методы коллаборативной фильтрации основаны на гипотезе о том, что те, кто одинаково оценивал какие-либо объекты в прошлом, склонны давать похожие оценки в будущем [7]. Такие методы устойчивы и способны выявлять скрытые свойства объектов, что улучшает релевантность рекомендаций. В данном подходе действует схема накопления знаний: чем больше пользователь просматривает и дает оценок, тем более точные и персонализированные рекомендации он получает.

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

Основанные на содержании методы, в отличие от коллаборативных, гораздо меньше страдают от проблемы «холодного старта». Происходит так, потому что новые пользователи или элементы (продукты, ресурсы и т.д.) могут быть описаны по их характеристикам (содержанию), и, следовательно, могут быть сделаны соответствующие предложения для этих новых элементов [8]. Поэтому было принято решение разработать рекомендательную систему на основе контентно-ориентированной фильтрации.

Набор данных

При формировании собственного набора данных к характеристикам книг были отнесены следующие:

В ходе первичной обработки все таблицы были преобразованы в DataFrame-объекты, которые были объединены в один DataFrame, хранящий полную информацию обо всех имеющихся книгах. DataFrame – структура данных, используемая в библиотеке Pandas, представляет собой проиндексированный многомерный массив значений.

После завершения предварительной обработки данных программы был получен массив сведений о 12981 книгах со следующими столбцами: «id», «Название книги», «Аннотация», «Автор», «Список жанров».

Реализация рекомендательного алгоритма фильтрации

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

Поскольку данные имеют текстовый вид, их необходимо преобразовать к векторному виду. Преобразование выполняется с помощью статистической меры TF-IDF, которая используется для определения важности слова в контексте документа [4]. Значимость слова пропорциональна используемости слова в документе и обратно пропорциональна частоте его употребления в других текстах коллекции. Мера TF-IDF определяется следующим выражением:

featurei = Count(wordi ∈ x) × log(N / (Count(wordi ∈ D) + α)) (1)

где x – конкретный текст, D – набор текстов, N – количество текстов в наборе, α – сглаживающий гиперпараметр (=1), который предотвращает возможное деление на 0. Count(wordi ∈ D) – число раз, которое i-ое слово встречается во всех текстах.

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

Аннотации разбиваются на токены – слова – после чего вычисляется матрица TF-IDF. Каждая аннотация и метаданные представляется в виде вектора, длина которого равна количеству различных слов (размеру словаря для набора текстов), и содержащего значимость i-го слова словаря для данной аннотации. Для подсчета матрицы TF-IDF использовался класс TfidfVectorizer библиотеки Sklearn.

Каждое описание книги представляется в виде вектора, схожесть двух книг на основе описаний может быть определена как пространственная близость двух векторов. Мерой близости было выбрано косинусное сходство [9]. Косинусное сходство – значение косинуса угла между двумя векторами в многомерном пространстве, задается следующей формулой:

similarity(A,B) = (A ⋅ B) / (||A|| × ||B||) (2)

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

На рисунке 1 представлены 10 книг, отобранных таким способом как наиболее похожих на книгу «Основы локальных компьютерных сетей. Учебник для СПО».

Рекомендации, полученные на основе схожести аннотаций
Рисунок 1 – Рекомендации, полученные на основе схожести аннотаций

Из рисунка 1 видно, что рекомендации в целом соответствуют ожиданиям. Исключение составляет рекомендация книги «Трубопроводные сети. Учебное пособие». Здесь проявляется недостаток данного подхода: рекомендации основаны на похожести употребляемых в аннотации слов, что не всегда говорит о похожести книг.

В примере рекомендации строятся на основе одной книги, но в интернет-магазине необходимо давать рекомендации на основе книг, понравившихся пользователю. Алгоритм построения рекомендаций будет следующим: на вход подается список, сформированный из книг, просмотренных пользователем более двух раз, содержание «Корзины» и содержание «Избранное». Если книга находится одновременно в двух или трех категориях, ей присваивается больший вес. Отбираются только последние 50 элементов, так как вкусы со временем могут меняться. Далее список ранжируется по весу и подается на вход в рекомендательную систему. Для каждой книги вычисляется отдельная матрица схожести, результаты объединяются в общую матрицу, находится вес «схожести» книг, ранжируется по убыванию. Книги с наибольшим весом «схожести» с интересами пользователя попадают в начало рекомендаций.

Рекомендации, на основе списка книг пользователя
Рисунок 2 – Рекомендации на основе списка книг пользователя

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

Заключение

В работе рассмотрены виды рекомендательных систем, метод построения рекомендаций для книжного интернет-магазина. Описана методология и особенности процесса формирования исходных массивов данных. Реализован подход, основанный на методе контентной фильтрации.

В продолжении работы над рекомендательной системой предполагается улучшение рекомендательной системы путем объединения методов коллаборативной фильтрации и алгоритмов фильтрации по содержанию. Таким образом, в случае появления нового пользователя в системе, у которого нет истории покупок, будет использоваться рекомендация на основе алгоритмов фильтрации по содержанию, а в случае большого объема статистических данных – строить более точный прогноз, используя методы коллаборативной фильтрации.

Литература

  1. Melville P., Mooney R., Nagarajan R. Content-Boosted Collaborative Filtering for Improved Recommendations (англ.) // University of Texas, USA : Материалы конф. / AAAI-02, Austin, TX, USA, 2002. – P. 187-192.
  2. Mackenzie I., Meyer C., Noble S. How retailers can keep up with consumers. [Электронный ресурс] – Режим доступа: https://www.mckinsey.com/industries/retail/our-insights/howretailers-can-keep-up-with-consumers (дата обращения: 03.11.2022)
  3. Интернет-магазины и товарные рекомендации [Электронный ресурс] / Ф. Вирин [и др.] – Режим доступа: https://oborot.ru/articles/internet-magazin-i-tovarnye-rekomendacii-i35409.html (дата обращения: 03.11.2022)
  4. Прокофьева, И. А., Гордеева, О. А., Кудрина, М. А. Реализация рекомендательных алгоритмов для книг и литературных произведений // Труды международного симпозиума "Надежность и качество". – 2022. – Т. 1. – С. 211-216.
  5. Волкова, Л. Л., Токарева, М. М., Ланко, А. А. О разработке рекомендательной системы, предлагающей книги по предпочтениям пользователя // Новые информационные технологии в автоматизированных системах. – 2017. – № 20. – С. 239-244.
  6. Mohd Sabri N., Jaffar N. A. Book recommendation based on collaborative filtering technique // ESTEEM Academic Journal. – 2022. – Т. 18. – С. 92-103.
  7. Кутянин, А. Р. Рекомендательные системы: обзор основных постановок и результатов // Интеллектуальные системы. Теория и приложения. – 2017. – Т. 21. – № 4. – С. 18-30.
  8. Коврик, К. А., Коломойцева, И. А. Об особенностях разработки рекомендательной системы для пользователей мессенджера Telegram // Программная инженерия: методы и технологии разработки информационно-вычислительных систем (ПИИВС-2020) : сборник научных трудов III Международной научно-практической конференции (студенческая секция), Донецк, 25–26 ноября 2020 года. Том 2. – Донецк: Донецкий национальный технический университет, 2020. – С. 166-170.
  9. Similarity and Distance Metrics for Data Science and Machine Learning [Электронный ресурс] – Режим доступа: https://medium.com/dataseries/similarity-and-distance-metrics-for-data-science-and-machine-learninge5121b3956f8 (дата обращения: 08.11.2022)