Рекомендующие системы Васильева Екатерина, гр.3539 Гниломедов Иван, гр.3538 О чём будет наша беседа • Вступление • Основные моменты в рекомендующих системах • Сравнение пользователей и образцов • Один алгоритм + формулы • Немного о жизни 2 Рекомендующая система… зачем она нужна? • Ситуация: вы хотите посмотреть фильм. Но какой выбрать? Как понять, что фильм может вам понравиться? • Решение: рекомендующая система (RS = Recommender system)! Она работает с предпочтениями пользователей. 3 RS: классификация • общая фильтрация (Collaborative Filtering). Обрабатывает взгляды пользователей и дает им рекомендацию • частичная фильтрация (Content-based recommending). Основывается на схожести объектов рекомендации и дает ответ, учитывая взгляды пользователя 4 Немного истории • Ранние системы общей фильтрации не могли помочь изучению web. Перед работой нужно было создать базу • Первая система: Information Tapestry project at Xerox PARC. Разрешала поиск документов. Работала для небольших групп и были сложности с различной лексикой 5 Где можно встретить RS? • Рекомендации для фильмов, книг, дисков, страниц в интернете… • он-лайн магазины: Amazon, CDNOW, BarnesAnd-Noble, IMDb.. • USENET – новости в интернете 6 Картинка с Amazon.com 7 Постановка задачи • N наименований какой-либо мультимедиа информации (фильмов, саундтреков, книг и пр.) I1, I2, ... IN • M пользователей U1, U2, ... Um. Каждый из них дает список понравившихся ему наименований • RS – выдает список наименований, которые ему вероятно должны понравиться 8 RS должна: • По списку понравившихся пользователю образцов давать ему список того, что ему может понравиться • Собирать и хранить данные о предпочтениях пользователей • В процессе работы производить самообучение 9 Самый простой алгоритм • Каждому пользователю рекомендовать наиболее популярные образцы • НО: у всех разные интересы, а мы рекомендуем им одно и тоже (!), при этом не учитывая список понравившихся им вещей 10 Если лучше, то как? • Разработку любого алгоритма стоит начать со структур данных. 11 А как хранить данные? • помнить полностью исходные списки понравившихся пользователям образцов • хранить некоторые обобщённые данные о предпочтениях всех пользователей сразу, и при поступлении новой информации обновлять всю базу 12 Сравниваем пользователей • Пробегаем по всей базе и сравниваем пользователей по понравившимся им наименованиям • ААА!!! Похожим пользователям, наверно, должны нравиться похожие образцы! )) • Формируем рекомендацию на основе рейтинглистов похожих пользователей. 13 Теперь сравним образцы… • Матрица похожести образцов • Проблема: наименований много размер матрицы!!! • Решение: матрица разрежена (угадайте почему) – можно хранить для каждого наименования список похожих на него объектов 14 Сравним образцы… • Еще одна проблема: при таком хранении новым элементам будет дана минимальная степень похожести • … тогда он не сможет конкурировать с другими • …система будет стремиться к стабильному состоянию 15 Что делать с «новичками»? • топ лист - наиболее похожие по итогам всей истории развития • список «новобранцев» - наиболее похожие за последние несколько транзакций • (!) если «новобранец» хороший, то мы его переводим в топ лист 16 Давайте комбинировать способы! • Сначала оценим похожесть образцов • Затем оценим схожесть пользователей по “псевдо рейтингу” 17 Хотели псевдо рейтинг? Подано! Оригинальный рейтинг Первичное предсказание Псевдо рейтинг Заданные Не заданные Первичное предсказание 18 От абстракции к конкретным формулам n R _ pseudoa ,i ra , j * Same(i, j ) j 1 m Sim a ,b (r a ,i i 1 m (r i 1 a ,i ra ) * (rb ,i rb ) 2 m ra ) * (rb ,i rb ) 2 i 1 19 Neighborhood-based algorithm • Выделим k ближайших соседей • Вычислим насколько пользователю a понравится образец i по формуле: k Pa ,i ra (r u 1 u ,i ru ) * Sim a ,u k (r u 1 u ,i ru ) 20 Алгоритм в действии База A B C : Z 9 3 7 : 5 A B C 9 : : Z 10 A B C : Z 5 3 A B C 8 : : Z : 7 Сравнение пользователей Активный пользователь A 9 B 3 C . . Z 5 A 6 B 4 C : : Z A B C : Z 9 3 7 : 5 A 10 B 4 C 8 . . Z 1 A 10 B 4 C 8 . . Z 1 Выдача рекомендации C 21 Храним и собираем данные • Запоминаем все данные, передаваемые пользователями • Спрашиваем пользователя, что ему нравится • Winamp-шпионы (разрешение не забудьте ;) ) 22 ЖИЗНЬ – ЭТО УРОК… ДАВАЙТЕ УЧИТЬСЯ! • Что если мы ошиблись при рекомендации?... Наверно, стоит задуматься… • СИСТЕМА – думай! 23 Как будем учиться? • Выкинем ¼ того, что нам дал пользователь в своем списке • Построим рекомендацию по оставшемуся списку • Ии…. Сравним, что получилось • Не увлекайтесь только одним пользователем, чтобы не сделать рекомендателя только для него 24 Итог • Предоставление рекомендаций пользователям • Получение рейтингов фильмов или саундтреков • Маркетинговые исследования 25 Чем пользовались… • "Distributed Collaborative Filtering for PeertoPeer File Sharing Systems“ (Jun Wang, Johan Pouwelse). • “Unifying Userbased and Itembased Collaborative Filtering Approaches by Similarity Fusion” (Jun Wang, Arjen P. de Vries, Marcel J.T. Reinders). • “Content-Boosted Collaborative Filtering for Improved Recommendations” (Prem Melville, Raymond J. Mooney, Ramadass Nagarajan: Department of Computer Sciences University of Texas). • “Recency-Based Collaborative Filtering” (Yi Ding, Xue Li, Maria E. Orlowska). 26 Может, еще поговорим? Задайте вопрос… или предоставьте список,... Но это уже не к нам ;) 27