Методы ускорения работы рекомендательных систем для высоконагруженных веб-сайтов

№ 5 (47) 2013

О. В. Новиков, аспирант НИУ ВШЭ, г. Москва

Методы ускорения работы рекомендательных систем для высоконагруженных веб-сайтов

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

введение

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

1. Рекомендации на основе вручную задаваемых правил.

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

2. Рекомендации на основе фильтрации.

Рекомендации, использующие фильтрацию, анализируют мета-данные о пользователе для выделения наиболее интересного для него контента. Можно выделить следующие типы фильтрации:

• по группам;

• по контенту;

• коллаборативная фильтрация.

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

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

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

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

№ 5 (47) 2013

Проблема существующих алгоритмов — производительность, особенно для пользователей, о которых много данных. Например, если в качестве информации о поведении посетителей используется список страниц, которые они посетили, то для наиболее активных пользователей длина такого списка может составлять тысячи записей. Это снижает скорость обнаружения похожих пользователей и ухудшает масштабируемость системы. Другой проблемой является улучшение качества рекомендаций для пользователей. Система должна предоставлять точные предположения, отражающие интересы пользователей. Иначе посетители, воспользовавшиеся рекомендательной системой и неудовлетворенные ее работой, не станут использовать ее в дальнейшем, что приведет к снижению продаж или числа показов рекламных материалов, поэтому улучшение скорости работы системы не должно стать причиной ухудше-£ ния качества рекомендаций. !

§ коллаборативные подходы

! Коллаборативные методы накаплива-

Ё, ют данные о предпочтениях пользователей

<5 с помощью явных и не явных методов, что-

g бы находить пользователей с похожими ин-

а тересами. В отличие от контентных методов,

£ ищутся не страницы, похожие на те, которые

ч были просмотрены, а пользователи с похо-

Й жим поведением.

g Алгоритмы коллаборативной фильтра-

§ ции можно разделить на два класса: анам-

г| нестические (memory-based) и модельные

(s (model-based) [1]. Анамнестические алгорит-

Ц мы сравнивают поведение текущего пользо-

| вателя со всеми остальными, о которых есть

^ данные, чтобы определить N наиболее похо-

й жих на него пользователей.

Модельные алгоритмы используют раз-

§ деление пользователей на группы, основываясь на их поведении. Для составления ре-

§ комендаций определяется наиболее близкая

з пользователю группа. Среди таких алгорит-

¡1 мов можно выделить основанные на сетях

^ Байеса и на кластеризации.

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

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

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

способы ускорения составления рекомендаций

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

№ 5 (47) 2013

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

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

Решением данной проблемы может быть выделение всех персонализированных блоков в отдельные URL-адреса и их динамическая подгрузка при помощи технологии AJAX. Это позволит закэшировать общую для всех пользователей часть страницы.

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

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

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

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

Первая проблема может быть решена при помощи использования коллаборатив-ной фильтрации по схожести страниц. Для использования коллаборативной фильтрации на высокогнагруженных сайтах с большим количеством страниц целесообразно производить расчеты схожести пользователей параллельно в несколько потоков. Скорость составления рекомендаций может быть повышена путем снижения размерности исходных данных [3]. Значительно улучшить производительность позволит предварительное выделение групп пользователей с похожим поведением. При этом дистанцию между двумя пользователями, входящими в разные группы, можно будет считать бесконечной. Для этого может быть использовано предварительное выделение групп схожих пользователей и выполнение алгоритма коллаборативной фильтрации внутри групп [4]. Это позволит решить проблему с разреженностью исходных данных и улучшить масштабируемость.

классификация веб-сайтов с рекомендательными системами

Большое количество различных веб-сайтов с отличающимися целями требует раз-

№ 5 (47) 2013

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

Медиа

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

2 большую часть их аудитории составляют по-Ч стоянные пользователи, посещающие сайт й ежедневно. Нагрузка на них очень не ста-| бильна и может резко возрастать в случае Ё, возникновения значимых событий. Основ-<5 ным источником дохода владельцев сайта § в данных случаях является показ рекламных а баннеров (гораздо реже — платная подпис-£ ка). Таким образом, основная задача персо-ч нализации — превращение случайных посеЙ тителей, пришедших по ссылкам с других § сайтов, в постоянных. Для этого необходи-§ мо убедить пользователя в том, что на сайте

г| есть много интересных ему материалов. К

§ Магазины

I

Ц Существует огромное количество са-^ мых разных сайтов, реализующих продай жи, — от статичных, состоящих из нескольких десятков страниц, до онлайн-торго-§ вых центров, агрегирующих предложения <| из нескольких сотен различных магазинов. § Такие сайты позволяют просматривать ин-

3 формацию о товарах и совершать покупки. ¡1 Основная часть трафика в данном случае 1= приходит с поисковых систем. Доля посто-

янной аудитории здесь значительно ниже, чем у информационных сайтов. Конверсия, т. е. доля покупателей среди посетителей, как правило, составляет от 1 до 5%. Задача таких сайтов — продавать, значит, целью персонализации является подбор наиболее подходящих для посетителей товаров. Изменения в нагрузке намного более плавные, чем у новостных сайтов, и обусловливаются сезонными трендами и праздниками.

Пользовательские сервисы

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

Рекомендательные сервисы

Сюда входят разнообразные рекомендательные сайты, такие как last.fm для поиска музыки или tripadvisor.com для путешественников. Значительная часть пользователей — постоянная аудитория сайта. Резкие колебания нагрузки в данном случае отсутствуют. Доход идет от рекламы или платных подписок на предоставляемые сервисы, следовательно, основная задача — обеспечить высокое качество рекомендаций.

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

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

№ 5 (47) 2013

ных. Наиболее простым способом представляется использование случайной выборки, где у всех элементов исходных данных равная вероятность попадания в выборку. В некоторых случаях оправдано использование стратометрического отбора, когда генеральная совокупность делится на группы (страты), обладающие определенными характеристиками (пол, возраст, политические предпочтения, образование, уровень доходов и др.), и отбираются элементы с соответствующими характеристиками. Как правило, используются выборки без повторений — один и тот же элемент не может быть выбран дважды. Широко распространен подход, при котором применяется случайная выборка без повторов с выделением тренировочного и тестового набора данных в пропорции 80/20. Процесс обучения алгоритма может повторяться несколько раз, чтобы избежать ошибок, связанных с использованием небольшого подмножества вместо всех исходных данных. После создания обучающей и тестовой выборок настраивается модель рекомендательной системы, а затем оценивается ее точность. Далее создается новая пара выборок, и процесс обучения и тестирования повторяется к раз. В результате используется усредненное значение к моделей. Такой подход называется кросс-валидацией. Она может осуществляться несколькими методами. В случае с повторяющимися случайными выборками подмножества для обучения выбираются к раз подряд случайным образом. Другим способом может быть выделение п подмножеств исходных данных. Одно из них используется как тестовое, а остальные — как обучающие. Процесс обучения и тестирования повторяется п раз, так что каждое подмножество оказывается тестовым один раз [7].

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

ритмах классификации с обучением заранее | известны классы и есть данные о принадлеж- || ности части элементов к классам. Основыва- со ясь на этих данных, можно обучить алгоритм ^ и классифицировать остальные элементы. Если классы заранее не известны, то требуется разделить все элементы на группы так, чтобы элементы, входящие в одну группу, были похожи между собой, но не похожи на элементы из других групп.

Алгоритм К ближайших соседей позволяет разделить исходные данные на непересекающиеся классы, используя информацию о схожести отдельных элементов [5]. Пользователь, класс которого еще не известен, будет отнесен к тому классу, к которому относятся К ближайших к нему других пользователей. Одно из основных преимуществ этого метода заключается в том, что при добавлении новых пользователей не нужно переобучать алгоритм на всех данных — достаточно определить наиболее подходящие классы только для новых посетителей. Но при классификации добавленных пользователей требуется попарно сравнить их вектора с данными обо всех уже имеющихся посетителях, что может потребовать большого объема памяти для вычислений и займет много времени. Для высоконагру-женных веб-сайтов это может быть недопустимо медленно.

Для выделения групп похожих пользователей может быть использован Байесовский классификатор. Данный метод основан на принципе максимизации апостериорной вероятности. Для классифицируемого пользователя вычисляются функции правдоподобия каждого из классов, и по ним вычисляются апостериорные вероятности классов. В итоге пользователь относится к тому классу, для которого апостериорная вероятность максимальна [6]. Определение класса может быть сильно упрощено, если считать, что все параметры, характеризующие поведение пользователя и образующие его вектор, независимы друг от друга.

С целью оценки способности классификатора верно определять класс объек-

№ 5 (47) 2013

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

Задачу функционирования рекомендательной системы можно сформулировать как поиск N наиболее интересных пользователю ссылок, а значит оценить эффективность рекомендательной системы, основанной на классификации, можно, проверив, насколько точно она классифицирует страницы как интересные конкретному пользователю. Таким образом, для подоб-в ных систем можно применять такие поня-£ тия, как точность и полнота. Для рекомен-

2 дательной системы точность — это доля Ч интересных пользователю страниц среди й предложенных в рекомендациях. Полноте та — доля определенных системой как ин-Ц тересные пользователю страниц среди всех

<5 таких страниц. §

о

| Заключение

§

ч Генерация рекомендаций в реальном

Й времени на основе пользовательских дан-

§ ных является очень ресурсоемкой задачей.

§ Это особенно актуально для высоконагру-

г| женных веб-сайтов. Системы рекомендаций

¡5 помогают каждому отдельно взятому пользо-

Ц вателю более эффективно находить интере-

| сующую его информацию в огромном объе-

^ ме имеющихся данных. Разные рекоменда-

й тельные алгоритмы могут быть хороши или плохи для разных по объему массивов дан-

§ ных. Многие алгоритмы коллаборативной

<| фильтрации были разработаны специально

§ для массивов данных, где пользователей на-

3 много больше, чем объектов. Такие алгорит-¡1 мы могут быть непригодны для областей, где 1= объектов намного больше, чем пользовате-

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

Список литературы

1. Сегаран Т. Программируем коллективный разум. М.: Символ-плюс, 2008. — 368 с.

2. Takacs G, Pilaszy I, Nemeth B, Tikk D. Scalable Collaborative Filtering Approaches for Large Rec-ommender Systems // Journal of Machine Learning Research. 2009. № 10.

3. Sarwar B. M, Karypis G, Konstan J. A., Riedl J. Application of Dimensionality Reduction in Recom-mender System — A Case Study // In ACM WebKDD (Web-mining for ECommerce Workshop), 2000.

4. Sarwar B. M, Karypis G, Konstan J. A., Riedl J. Analysis of Recommendation Algorithms for E-Commerce // Proceedings of the ACM EC Conference. Minneapolis, 2000.

5. Cunningham P., Delany S. J. k-Nearest Neighbour Classifiers // Technical Report UCD-CSI-2007-4. March 27. 2007.

6. Rish I. An empirical study of the naive Bayes classifier // IBM Research Report RC 22230 (W0111-014). November. № 2. 2001.

7. Manning C. D, Raghavan P., Schütze H. Introduction to Information Retrieval. Cambridge University Press. 2008.