Рекомендующие системы и совместная фильтрация

advertisement
Рекомендующие системы
Васильева Екатерина, гр.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
Download