Курсовая работа Коллаборативная фильтрация с учетом временного фактора

Страница создана Таисия Королева
 
ПРОДОЛЖИТЬ ЧТЕНИЕ
МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
          ИМ. М.В. ЛОМОНОСОВА
ФАКУЛЬТЕТ ВЫЧИСЛИТЕЛЬНОЙ МАТЕМАТИКИ И
              КИБЕРНЕТИКИ

          Курсовая работа

 Коллаборативная фильтрация с
  учетом временного фактора

                                    Выполнил:
                               Студент 4 курса
                     Гомзин Андрей Геннадьевич
                         Научный руководитель:
                   Коршунов Антон Викторович

                Москва
                 2012
Содержание
Введение                                                                                             2

1 Постановка задачи                                                                                  3

2 Базовые алгоритмы коллаборативной фильтрации                                                       4
  2.1 Описание базового алгоритма . . . . . . . . . . . . . . . . . . . . . . . . .                  4
  2.2 Альтернативные алгоритмы и улучшения . . . . . . . . . . . . . . . . . .                       5

3 Коллаборативная фильтрация с учетом временного фактора                                              7
  3.1 Постановка задачи . . . . . . . . . . . . . . . . . . . . . . . . . . .    .   .   .   .   .    7
  3.2 Исходные данные . . . . . . . . . . . . . . . . . . . . . . . . . . .      .   .   .   .   .    7
  3.3 Описание алгоритма . . . . . . . . . . . . . . . . . . . . . . . . . .     .   .   .   .   .    8
  3.4 Результаты . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   .   .   .   .   .    9
      3.4.1 Методы оценки результатов . . . . . . . . . . . . . . . . .          .   .   .   .   .    9
      3.4.2 Полученные результаты . . . . . . . . . . . . . . . . . . . .        .   .   .   .   .   11
      3.4.3 Анализ результатов . . . . . . . . . . . . . . . . . . . . . .       .   .   .   .   .   11

Заключение                                                                                           12

A Приложение                                                                                         13

                                             1
Введение
В сети Интернет широко распространены системы рекомендаций: в социальных сетях
(например, last.fm, hunch.com), интернет-магазинах(например, ozon.ru), поисковых сер-
висах (например, google.ru). Эти системы помогают человеку выбирать, какие новые
фильмы посмотреть, какую новую музыку послушать, какие товары купить в интернет-
магазине. Также в социальных сетях распространены рекомендации друзей – возмож-
ных знакомых или людей с похожими интересами. Системы рекомендаций помогают
пользователю выбрать среди всех доступных объектов именно те, которые будут ему
интересны.
   В зависимости от доступных данных о пользователях и объектах, методы, используе-
мые в системах рекомендаций, делятся на четыре группы [1],[2]: коллаборативная филь-
трация, анализ содержимого, использование базы знаний, гибридные методы. Коллабо-
ративная фильтрация использует реакцию пользователя на объекты, которая обычно
представлена в виде оценок. Методы анализа содержимого используют профили поль-
зователей и содержимое объектов (в том числе и мета-информацию). Методы, основан-
ные на базах знаний, выявляют пользовательские требования к объектам и используют
базы знаний для поиска соответствующих объектов. Гибридные методы используют всю
доступную информацию о пользователях и объектах. Эти методы могут объединять в
себе идеи коллаборативной фильтрации, анализа содержимого и работу с базами зна-
ний. В данной работе будет рассмотрен метод коллаборативной фильтрации, как самый
распространенный и простой. Его можно модифицировать, получая при этом лучшие
результаты.
   Интересы людей меняются со временем, поэтому классические алгоритмы колла-
боративной фильтрации становятся менее актуальными в условиях растущего числа
пользователей, объемов контента и, как следствие, большей активности пользователей
и изменчивости их вкусов. Поэтому в данной работе разрабатывается модифицирован-
ный алгоритм коллаборативной фильтрации, учитывающий временной фактор.

                                         2
1     Постановка задачи
    1. Исследовать основные алгоритмы коллаборативной фильтрации

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

    3. Исследовать влияние временного фактора на результаты коллаборативной филь-
       трации

                                         3
2     Базовые алгоритмы коллаборативной фильтрации
Перед тем, как рассматривать алгоритмы коллаборативной фильтрации, введем неко-
торые понятия.
    Объект – это музыкальная композиция, фильм, товар, пользователь (в случае ре-
комендации друзей). Т.е. то, что потребляют пользователи системы рекомендаций. Это
то, что им нужно рекомендовать.
    Пользователь – это человек, зарегистрированный в системе, он может покупать,
слушать, смотреть, оценивать объекты и пользоваться сервисом рекомендаций.
    Рекомендация — это объект или несколько объектов, которые система рекоменда-
ций выдает пользователю.

2.1    Описание базового алгоритма
Коллаборативная фильтрация [3] [4] (Collaborative filtering) - это метод рекомендации,
при котором анализируется только реакция пользователей на объекты. Пользователи
оставляют в системе оценки объектов. Причем, оценки могут быть как явные (напри-
мер, оценка по пятибальной шкале), так и неявные (например, количество просмотров
одного ролика). Конечной целью метода является как можно более точное предсказа-
ние оценки, которую поставил бы текущий пользователь системы ранее неоцененным
им объектам. Чем больше оценок собирается, тем точнее получаются рекомендации. По-
лучается, пользователи помогают друг другу в фильтрации объектов. Поэтому такой
метод называется также совместной фильтрацией.
   Пусть в системе есть пользователи и объекты. Пусть некоторые пользователи оце-
нили некоторые объекты. И пусть оценка - это натуральное число от 1 до 5. Тогда все
оценки можно изобразить в виде матрицы (см. рис. 2.1)

                              Рис. 2.1: Матрица оценок

   Пусть имеется пользователь a. Наша задача - предсказать, какую оценку поставил
бы пользователь a объекту i. Будем рассматривать только пользователя a и тех поль-
зователей, которые оценили объект i. Алгоритм включает в себя 3 шага:
    1. Для каждого пользователя u вычислим, насколько его интересы совпадают с ин-
       тересами пользователя a

                                          4
2. После этого выберем множество пользователей, наиболее близких к a

  3. Предскажем оценку на основе оценок объекта i "соседями"из предыдущего шага

   Первый шаг. Каждому пользователю в матрице R соответствует одна строка. По-
этому будем вычислять близость векторов-строк пользователей.
   Существует множество способов подсчета близости векторов [3] [5]. Один из самых
простых - посчитать косинус между этими векторами:
                                         Pm
                                                ra,i ru,i
                         sim(u, a) = pPm i=1 pPm                                (1)
                                        i=1 ra,i       i=1 ru,i

   Здесь sim(u, a) – мера близости (похожести) пользователей a и u. ru,i – значение
матрицы R: u строка, i столбец. sim(u, a) принимает значения из отрезка [0, 1]. Ес-
ли пользователь не указал оценку для какого-то объекта, соответствующее значение
матрицы равно 0.
   Также часто используется коэффициент корреляции Пирсона, мера близости Дайса,
а также другие меры близости[5].
   Второй шаг. Теперь нужно выбрать множество K наиболее похожих на a пользо-
вателей. Есть несколько способов выбора. Чаще всего фиксируется целая константа k.
Затем все пользователи сортируются по убыванию меры близости. И во множество K
входят первые k пользователей, наиболее близких к a.
   Третий шаг. Имея множество K близких пользователей, нужно вычислить оценку,
которую поставил бы пользователь a объекту i. Напомним, что рассматриваются только
те пользователи, которые оценили объект i.
   Нужная оценка вычисляется по формуле:
                                   P
                                        ru,i × sim(a, u)
                             pa,i = u∈K
                                     P                                          (2)
                                       u∈K sim(a, u)

   pa,i - это предсказываемая оценка пользователя a для объекта i. Она представляет
собой среднее по всем пользователям из множества K. Используются веса: чем ближе
пользователь u к пользователю a (согласно мере близости sim(a, u), вычисленной на
первом шаге), тем сильнее его вклад в предсказание оценки.
   Таким образом, описанный алгоритм предсказывает оценки для объектов, которые
текущий пользователь еще не оценил. Для того, чтобы сделать рекомендацию для дан-
ного пользователя, достаточно предсказать оценки для всех неоцененных объектов и
выбрать объекты с наибольшей предсказанной оценкой.

2.2   Альтернативные алгоритмы и улучшения
Описанный выше алгоритм основан на сравнения между собой пользователей (user-
based ). Существует также другой подход: вместо пользователей сравнивать объекты
(item-based ). В этом случае алгоритм почти такой же, включает 3 шага

  1. Для каждого объекта j вычислим, насколько он похож на объект i, для которого
     предсказывается оценка.

  2. Выберем множество объектов, наиболее близких к i

                                        5
3. Предскажем оценку на основе оценок выбранных на втором шаге объектов поль-
     зователем a

   Сравнение объектов на первом шаге происходит так же, как и в 1. Только мера
близости считается не между векторами-строками, а между векторами-столбцами.
   Второй шаг тоже аналогичен второму шагу алгоритма, основанного на сравнении
пользователей. Основное отличие в том, что K - множество близких к i объектов.
   На третьем шаге вычисляется взвешенная средняя оценка похожих объектов, полу-
ченная пользователем a:
                                   P
                                     j∈K ra,j × sim(i, j)
                            pa,i =    P                                        (3)
                                        j∈K sim(i, j)

   Точность рекомендаций зависит от отношения между количеством пользователей и
объектов. Если количество пользователей больше, чем количество объектов, то пред-
почтительней использовать алгоритм, основанный на сравнении объектов (item-based).
В противном случае используют метод, основанный на сравнении пользователей (user-
based) [6]. Кроме того, алгоритм, основанный на сравнении объектов, имеет несколь-
ко преимуществ. Так как интересы пользователей часто меняются, а средняя оценка
объекта остается постоянной, то при сравнении объектов достаточно посчитать меру
близости каждого с каждым и сохранить в памяти. В частом обновлении этих данных
нет необходимости. Причем эти меры близости можно посчитать в оффлайне, т.е. когда
в системе нет активных пользователей.
   В современных системах рекомендаций постоянно растет число пользователей и
объектов, поэтому наступает момент, когда необходимо использовать распределенную
архитектуру системы. При этом возникает проблема хранения данных. Для более вы-
сокой производительности имеет смысл похожих пользователей или похожие объекты
хранить рядом. Для ее решения можно применить алгоритмы кластеризации для поль-
зователей или объектов, используя меру близости между ними (1). Разбиение поль-
зователей или объектов на группы дает еще одно преимущество: так как в кластере
находятся похожие объекты, то нужный объект достаточно на первом шаге сравнивать
с объектами из своего кластера. Это значительно сокращает количество вычислений.

                                        6
3     Коллаборативная фильтрация с учетом временного
      фактора
Интересы пользователей имеют свойство меняться со временем. Поэтому для повыше-
ния качества рекомендаций эту особенность необходимо учитывать. Существует три
основных подхода для решения данной проблемы[7]:

    1. Выбираются наиболее важные оценки (как правило, за последний отрезок време-
       ни), и только выбранные оценки будут использоваться при вычислении рекомен-
       даций.

    2. Каждой оценке соответствует вес. Более поздним оценкам ставится больший вес.

    3. Использование семейства предсказателей (моделей). Предсказатели взвешивают-
       ся согласно релевантности к текущему моменту времени. Например, модели, по-
       казавшие лучший результат на текущих оценках, получают более высокий вес.

   В данной работе разрабатывается система, которая рекомендует музыкальные ком-
позиции на основе данных о прослушивании композиций пользователями. Для решения
этой задачи используется второй подход (взвешивание).

3.1    Постановка задачи
Пусть объектами рекомендации будут музыкальные композиции и исполнители. Для
каждой композиции известно ее название и исполнитель. Для каждого пользователя
известен набор композиций (треков), которые он прослушал. Причем, каждое прослу-
шивание сопровождается временной меткой – моментом прослушивания трека. Если
пользователь несколько раз прослушал композицию, то в системе хранятся записи о
каждом прослушивании.
   Музыкальные интересы пользователя могут меняться со временем, поэтому ему не
стоит рекомендовать песни, похожие на те, которые ему были интересны раньше, но ко-
торые уже не интересны в настоящий момент. Задача – найти алгоритм рекомендации,
который будет учитывать эту особенность пользователей.

3.2    Исходные данные
В данной работе используются данные из социальной сети last.fm. Они удовлетворяют
условиям поставленной задачи. Кроме того, last.fm содержит социальные данные (для
каждого пользователя – список его друзей и сообществ).
   Набор данных содержит около 6 тысяч пользователей. Он собирался с помощью
автоматического кроулинга из социальной сети last.fm, с использованием last.fm API.
   Для каждого из 15 случайных пользователей, для их друзей и друзей друзей (вто-
рая окрестность) был скачан список композиций, прослушанных за последний месяц.
Получается, набор данных состоит из 15 подмножеств, каждое подмножество связано
отношениями дружбы. Это было сделано, чтобы решить проблему с разреженностью
данных (в данном случае – оценок), поскольку друзья в last.fm, скорее всего, слушают
похожую музыку.

                                         7
3.3   Описание алгоритма
Так как в используемом наборе данных количество музыкальных композиций больше
количества пользователей, то целесообразно в качестве базового алгоритма использо-
вать алгоритм коллаборативной фильтрации, основанный на сравнении пользователей
(user-based).
   Пусть u – пользователь. С ним связано множество прослушиваний I. Прослуши-
вание i = (track, artist, time) содержит название исполнителя, название композиции и
время прослушивания.
   Составим для текущего пользователя u вектор его интересов по исполнителям:
                                               X
                             VArtist (u, a)α =    e−α×time(i)                    (4)
                                                   i∈I
                                               artist(i)=a

   Также вектор его интересов по композициям:
                                           X
                         VT rack (u, s)α =    e−α×time(i)                           (5)
                                                   i∈I
                                               track(i)=s

   Для каждого исполнителя (композиции) вычисляется, насколько он интересен поль-
зователю. Суммирование ведется по всем прослушиваниям данного исполнителя (ком-
позиции). time(i) - время, прошедшее с момента прослушивания трека до текущего
момента. Наибольшее влияние оказывают треки, прослушанные в последнее время.
   Далее, как и в стандартном алгоритме, вычисляется мера близости между пользо-
вателями по исполнителям и по трекам. Затем складывается с учетом весовых коэф-
фициентов:

                                              VArtist (u)α · VArtist (v)0
                      simArtist (u, v) =                                            (6)
                                           | VArtist (u)α | · | VArtist (v)0 |
                                              VT rack (u)α · VT rack (v)0
                      simT rack (u, v) =                                            (7)
                                           | VT rack (u)α | · | VT rack (v)0 |

                sim(u, v) = WArtist simArtist (u, v) + WT rack simT rack (u, v)     (8)
    Здесь вычисляется косинус между векторами VArtist (u)α и VArtist (v)0 (для исполни-
телей, для треков – аналогично). α – параметр, который показывает, насколько сильно
влияет время прослушивания композиций текущим пользователем u. Время прослуши-
вания треков другими пользователями не учитывается, потому что если пользователь
в последнее время заинтересовался каким-то направлением в музыке, то ему надо реко-
мендовать не только тех исполнителей, которых в данный момент слушает пользователь
v, а всех популярных исполнителей данного жанра. Т.е. в данном алгоритме последние
интересы текущего пользователя сравниваются с интересами других пользователей за
все время. WArtist и WT rack – весовые коэффициенты.
    После вычисления sim(u, v) выбирается k ближайших к u пользователей (множество
K). Для каждого исполнителя a вычисляется неявная оценка , согласно:
                                  P
                                        VArtist (v, a)0 × sim(u, v)
                           pu,a = v∈K P                                             (9)
                                           v∈K sim(u, v)

                                                8
Итак, данный алгоритм выделяет из трека название и исполнителя, вычисляет ин-
тересы пользователей независимо для исполнителей и треков (при этом учитывается
время прослушанных композиций). Затем выполняются 2 и 3 шаги стандартного алго-
ритма коллаборативной фильтрации, причем могут рекомендоваться как композиции,
так и исполнители.

3.4     Результаты
Для оценки влияния временного фактора был реализован алгоритм, описанный выше,
а также алгоритм коллаборативной фильтрации, не учитывающий время (он эквива-
лентен описанному выше алгоритму при α = 0,WArtist = 1,WT rack = 0).
   Для сравнения двух алгоритмов были использованы метрики качеста, описанные
ниже.

3.4.1   Методы оценки результатов
Для оценки качества алгоритмов рекомендаций существует несколько стандартных под-
ходов [3]. Один из них – кросс-валидация. Множество оценок пользователей делится на
тренировочное и тестовое. Затем, согласно алгоритму коллаборативной фильтрации
(или другому алгоритму рекомендации), выполненному для тренировочных данных,
предсказываются оценки, которые вошли в тестовое множество. После этого вычисля-
ется среднее отклонение предсказанной оценки от действительной. Чем меньше откло-
нение, тем точнее алгоритм.
   В описанном алгоритме, рекомендующим исполнителей и/или композиции, оценки
неявные (4),(5). В данном алгоритме важную роль играет время. Рекомендации, вычис-
ленные для разных моментов времени, различны. Поэтому разбивать на тренировочное
и тестовое множества нужно по времени T : в тренировочное множество войдут треки,
прослушанные до T , в тестовое – после момента T .
   В таком случае стандартную кросс-валидацию применить нельзя, потому что один
и тот же трек может быть прослушен как до T , так и после.
   Поэтому предлагаются следующие метрики качества.
   Качество предсказания

  1. Отсортировать прослушанные треки по времени

  2. Разделить их на два множества: тренировочное и тестовое: T – момент времени,
     разделяющий эти множества

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

  4. Рекомендовать m артистов согласно алгоритму, где m – количество различных
     исполнителей среди первых k треков из тестового множества.

  5. Посчитать количество композиций из первых k из тестового множества, исполни-
     тели которых были рекомендованы

  6. Разделить полученное число на k

                                        9
Рис. 3.1: Качество предсказания

7. Повторить шаги 1-6 для всех пользователей, у которых в тестовом множестве есть
   хотя бы k треков, и посчитать средний результат

Качество выбора кандидатов

                    Рис. 3.2: Качество выбора кандидатов

1. Отсортировать прослушанные композиции по времени

2. Разделить их на два множества: тренировочное и тестовое: T – момент времени,
   разделяющий эти множества

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

4. Выбрать k первых треков из тестового множества

                                      10
Качество предсказания               Качество выбора кандидатов
  k     с учетом времени без учета времени     с учетом времени без учета времени
 10          0.15073           0.11764              0.01481           0.01297
 25          0.17941           0.12911              0.02026           0.01705
 50          0.18191           0.15147              0.02509           0.02291
 75          0.19215           0.16509              0.02867           0.02492
 100         0.18676           0.16580              0.03143           0.02763

   Таблица 1: Качество предсказания и качество выбора кандидатов при α = 0.01

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

  6. Просуммировать полученные на предыдущем шаге значения и разделить на k × | K |

  7. Повторить шаги 1-6 для всех пользователей, у которых в тестовом множестве есть
     хотя бы k песен, и посчитать средний результат

3.4.2   Полученные результаты
Результаты изображены в табл. 1 и в виде графиков в приложении (рис. A.1,A.2,A.3,A.4).
Константы T , m и размер множества K во всех тестах были фиксированы: m = 20,
| K | = 20, T ≈ 19 ноября 2011 года. Весовые коэффициенты, используемые в (8)
следующие: WArtist = 1, WSong = 2.
   В приложении приведены графики зависимости значений предложенных метрик от
параметра k. При этом сравниваются алгоритмы с учетом и без учета времени. Для
первых двух графиков α = 0.01. Далее приводятся графики для разных значений па-
раметра α (на них изображено отношение значения метрики для алгоритма с учетом
временного фактора к соответствующему значению метрики для стандартного алго-
ритма).

3.4.3   Анализ результатов
Рассмотрим первые два графика (рис. A.1, рис. A.2). На них видно, что качество пред-
сказания и качество выбора кандидатов увеличивается с увеличением k. Это проис-
ходит, потому что пользователи в достаточно короткий промежутков времени чаще
всего слушают одних и тех же исполнителей. На обоих графиках видно, что метрики
показывают лучший результат для алгоритма, учитывающего время.
   Рассмотрим графики (рис. A.3, рис. A.4). На них изображена зависимость отно-
шения качества предсказания и качества выбора кандидатов для различных α. При
малых α значения близки к 1 при всех k, что объясняется малым вкладом фактора
времени. При слишком больших значениях α алгоритм с учетом времени показывает
меньшие результаты, по сравнению с базовым алгоритмом. Это связано с тем, что в
этом случае система почти не учитывает ранние композиции, прослушанные пользова-
телем. Т.е. слишком большое значение α может ухудшить результат рекомендации.

                                         11
Заключение
В данной курсовой работе был изучен алгоритм коллаборативной фильтрации, а также
влияние временного факотра на его результаты. Был предложен алгоритм, который ре-
комендует исполнителей музыкальных композиций с учетом меняющихся со временем
музыкальных интересов пользователя. Причем, этот алгоритм выделяет у трека на-
звание и исполнителя. Также были предложены способы оценить влияние временного
фактора на результаты рекомендации.
   Эксперименты показали, что учет времени улучшает результаты системы рекомен-
даций: предложенный алгоритм усиливает влияние последних прослушанных песен и
уменьшает влияние песен, прослушанных им ранее. Также было показано, что при
слишком большое значение параметра α отрицательно влияет на результаты рекомен-
дации.
   Итак, временной фактор в колаборативной фильтрации дает улучшение качества
при правильном подборе параметров, т.е. позволяет более точно предсказать оценки
объектов текущим пользователем.

                                       12
A   Приложение

                 Рис. A.1: Качество предсказания

                               13
Рис. A.2: Качество выбора кандидатов

                14
Рис. A.3: Качество предсказания для различных α. Отношение значения метрики для
алгоритма с учетом времени к значению метрики для алгоритма без учета времени

                                      15
Рис. A.4: Качество выбора кандидатов для различных α. Отношение значения метрики
для алгоритма с учетом времени к значению метрики для алгоритма без учета времени

                                       16
Список литературы
[1] D. Jannach, M. Zanker, A. Felfernig, G. Friedrich Recommender Systems. An
    Introduction. New York: Cambridge University Press 32 Avenue of the Americas, 2011.
    352 P.

[2] А. Гомзин, А. Коршунов Системы рекомендаций: обзор современных подходов. Пре-
    принт. Москва: Труды Института системного программирования РАН. 2012. 20 С.

[3] P. Melville, V. Sindhwani Recommender systems. Encyclopedia of Machine Learning.
    2010.

[4] X. Su, T.M. Khoshgoftaar Survey of Collaborative Filtering Techniques. Advances in
    Artificial Intelligence. 2009.

[5] W.P. Jones, G.W. Furnas Pictures of Relevance: A Geometric Analysis of Similarity
    Measures. Journal of the American society for information science. 1987.

[6] F. Ricci, L. Rokach, B. Shapira, P.B. Kantor Recommender Systems Handbook. Springer,
    2011. 842 P.

[7] Y. Koren Collaborative Filtering with Temporal Dynamics. KDD’09. 2009.

                                          17
Вы также можете почитать