270 likes | 567 Views
Рекомендующие системы. Васильева Екатерина, гр.3539 Гниломедов Иван, гр.3538. О чём будет наша беседа. Вступление Основные моменты в рекомендующих системах Сравнение пользователей и образцов Один алгоритм + формулы Немного о жизни. Рекомендующая система… зачем она нужна?.
E N D
Рекомендующие системы Васильева Екатерина, гр.3539 Гниломедов Иван, гр.3538
О чём будет наша беседа • Вступление • Основные моменты в рекомендующих системах • Сравнение пользователей и образцов • Один алгоритм + формулы • Немного о жизни
Рекомендующая система… зачем она нужна? • Ситуация: вы хотите посмотреть фильм. Но какой выбрать? Как понять, что фильм может вам понравиться? • Решение: рекомендующая система (RS = Recommender system)! Она работает с предпочтениями пользователей.
RS: классификация • общая фильтрация (Collaborative Filtering). Обрабатывает взгляды пользователей и дает им рекомендацию • частичная фильтрация (Content-based recommending). Основывается на схожести объектов рекомендации и дает ответ, учитывая взгляды пользователя
Немного истории • Ранние системы общей фильтрации не могли помочь изучению web. Перед работой нужно было создать базу • Первая система: Information Tapestry project at Xerox PARC. Разрешала поиск документов. Работала для небольших групп и были сложности с различной лексикой
Где можно встретить RS? • Рекомендации для фильмов, книг, дисков, страниц в интернете… • он-лайн магазины: Amazon, CDNOW, BarnesAnd-Noble, IMDb.. • USENET – новости в интернете
Постановка задачи • N наименований какой-либо мультимедиа информации (фильмов, саундтреков, книг и пр.) I1, I2, ... IN • M пользователей U1, U2, ... Um. Каждый из них дает список понравившихся ему наименований • RS – выдает список наименований, которые ему вероятно должны понравиться
RS должна: • По списку понравившихся пользователю образцов давать ему список того, что ему может понравиться • Собирать и хранить данные о предпочтениях пользователей • В процессе работы производить самообучение
Самый простой алгоритм • Каждому пользователю рекомендовать наиболее популярные образцы • НО: у всех разные интересы, а мы рекомендуем им одно и тоже (!), при этом не учитывая список понравившихся им вещей
Если лучше, то как? • Разработку любого алгоритма стоит начать со структур данных.
А как хранить данные? • помнить полностью исходные списки понравившихся пользователям образцов • хранить некоторые обобщённые данные о предпочтениях всех пользователей сразу, и при поступлении новой информации обновлять всю базу
Сравниваем пользователей • Пробегаем по всей базе и сравниваем пользователей по понравившимся им наименованиям • ААА!!! Похожим пользователям, наверно, должны нравиться похожие образцы!)) • Формируем рекомендацию на основе рейтинглистов похожих пользователей.
Теперь сравним образцы… • Матрица похожести образцов • Проблема: наименований много -размер матрицы!!! • Решение: матрица разрежена (угадайте почему) – можно хранить для каждого наименования список похожих на него объектов
Сравним образцы… • Еще одна проблема: при таком хранении новым элементам будет дана минимальная степень похожести • … тогда он не сможет конкурировать с другими • …система будет стремиться к стабильному состоянию
Что делать с «новичками»? • топ лист - наиболее похожие по итогам всей истории развития • список «новобранцев» - наиболее похожие за последние несколько транзакций • (!) если «новобранец» хороший, то мы его переводим в топ лист
Давайте комбинировать способы! • Сначала оценим похожесть образцов • Затем оценим схожесть пользователей по “псевдо рейтингу”
Оригинальный рейтинг Первичное предсказание Псевдо рейтинг Заданные Не заданные Первичное предсказание Хотели псевдо рейтинг? Подано!
От абстракции к конкретным формулам
Neighborhood-based algorithm • Выделим k ближайших соседей • Вычислим насколько пользователю aпонравится образец i по формуле:
База A 9 B 3 C 7 : : Z 5 A B C 9 : : Z 10 A 5 B 3 C : : Z 7 A B C 8 : : Z A 6 B 4 C : : Z A 10 B 4 C 8 . . Z 1 A 9 B 3 C . . Z 5 A 9 B 3 C 7 : : Z 5 A 10 B 4 C 8 . . Z 1 Сравнение пользователей Выдача рекомендации C Активный пользователь Алгоритм в действии Корреляционный анализ здесь похож на кластеризацию объектов
Храним и собираем данные • Запоминаем все данные, передаваемые пользователями • Спрашиваем пользователя, что ему нравится • Winamp-шпионы (разрешение не забудьте ;) )
ЖИЗНЬ – ЭТО УРОК… ДАВАЙТЕ УЧИТЬСЯ! • Что если мы ошиблись при рекомендации?... Наверно, стоит задуматься… • СИСТЕМА – думай!
Как будем учиться? • Выкинем ¼ того, что нам дал пользователь в своем списке • Построим рекомендацию по оставшемуся списку • Ии…. Сравним, что получилось • Не увлекайтесь только одним пользователем, чтобы не сделать рекомендателя только для него
Итог • Предоставление рекомендаций пользователям • Получение рейтингов фильмов или саундтреков • Маркетинговые исследования
Чем пользовались… • "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).
Может, еще поговорим?Задайте вопрос… или предоставьте список,... Но это уже не к нам ;)