ИТМО machine learning. Рекомендательные системы — часть 1
DESCRIPTION
Лекция-введение в рекомендательные системы в рамках курса по машинному обучению для студентов четвертого курса на кафедре КТ ИТМО. Часть 1 — kNN, SVD, iALS.TRANSCRIPT
Рекомендательные системы Лекция 1
Андрей Данильченко
НИУ ИТМО, 10 ноября 2014
Что такое рекомендательная система?
5
7
8
F. Ricci “Recommender Systems Handbook”
│ Recommender Systems are software tools and techniques providing suggestions for items to be of use to a user
9
Количество статей в области
по данным google scholar (от 2014-10-17)
11
Какие бывают рекомендательные системы?
Классификация RS
Available data
User history Content
Collaborative Content-based
Hybrid
Tags &
Metadata
Данные
• Рейтинги (explicit feedback)
• унарные (like) • бинарные (like/dislike) • числовые (stars)
• История действий пользователя (implicit feedback)
• Тэги, метаданные
• Комментарии, отзывы
• Друзья
Рекомендательные задачи
15
• Predict
• Recommend
• Similar
Как построить простую рекомендательную систему?
16
User-based kNN Как продукт оценили похожие пользователи?
r̂ui =1
Ni u( )rvi
v∈Ni (u)∑
Взвесим вклад каждого
r̂ui =wuvrvi
v∈Ni (u)∑
wuvv∈Ni (u)∑
И нормализуем рейтинги
r̂ui = h−1
wuvh rvi( )v∈Ni (u)∑
wuvv∈Ni (u)∑
$
%
&&&
'
(
)))
Как посчитать расстояние?
Косинусное расстояние
Корреляция Пирсона
cos(u,v) =ruirvi
i∈Iuv
∑
r2uii∈Iu
∑ rvj2
j∈Iv
∑
PC(u,v) =(rui − ru )(rvi − rv )
i∈Iuv
∑
(rui − ru )2
i∈Iu
∑ (rvj − rv )2
j∈Iv
∑
Поправленное косинусное расстояние (adjusted cosine)
AC(u,v) =(rui − ri )(rvi − ri )
i∈Iuv
∑
(rui − ri )2
i∈Iu
∑ (rvj − rj )2
j∈Iv
∑
Как нормализовать рейтинги?
19
h rui( ) = rui − ru
h rui( ) = rui − ruσ u
h rui( ) =j ∈ Iu : ruj ≤ rui{ }
Iu
Mean centering
Z-score
Percentile score
Как выиграть Netflix Prize?
http://sifter.org/~simon/journal/20061211.html
Singular Value Decomposition
Теорема: если в матрице λ оставить k наибольших элементов, то полученное произведение A’ будет наилучшим среди всех матриц ранга k приближением матрицы A.
Baseline predictors
Модель:
r̂uiu = µ + bu + bi
argminb*
ruiu −µ − bu − bi( )(u,i)∈R∑
2+λ bu
2 +u∈U∑ bi
2
i∈I∑
$
%&
'
()
Функция ошибки:
SVD
Модель:
Функция ошибки:
r̂ui = µ + bu + bi + puTqi
argminp*q*b*
rui −µ − bu − bi − puTqi( )
(u,i)∈R∑
2+λ pu
2+ qi
2+ bu
2 + bi2( )
Optimization by SGD
Модель:
Функция ошибки:
r̂ui = µ + bu + bi + puTqi
argminp*q*b*
rui −µ − bu − bi − puTqi( )
(u,i)∈R∑
2+λ pu
2+ qi
2+ bu
2 + bi2( )
bu ← bu +γ1 eui −λ1bu( )bi ← bi +γ1 eui −λ1bi( )pu ← pu +γ2 euiqi −λ2pu( )qu ← qi +γ2 eui pu −λ2qi( )
Шаг стохастического градиентного спуска:
Alternating Least Squares P-step: обновление при фиксированных векторах item-ов
pu = λnuI + Au( )−1 duAu =Q[u]
TQ[u]= qiqiT
i: u,i( )∈R∑
du =Q[u]T ru = ruiqi
i: u,i( )∈R∑
Q-step: обновление при фиксированных векторах пользователей
qi = λniI + Ai( )−1 diAi = P[i]
T P[i]= pupuT
u: u,i( )∈R∑
di = P[i]T ri = rui pu
u: u,i( )∈R∑
Что делать с implicit feedback?
Как использовать implicit feedback?
Идея: rating => (preference, confidence)
pui ∈ {0,1}
cui ∈ℜ+
∀(u, i)∈ R
cui =1+αrui
pui =1
pui = 0 иначе
или
cui =1+α log 1+ruiβ( )
Обучение модели
argminx*y*
cui pui − xuT yi( )
(u,i)∑
2+λ xu
2
u∑ + yi
2
i∑
#
$%
&
'(
Функция ошибки:
xu = λI +Y TCuY( )−1Y TCup(u)
yi = λI + XTCiX( )−1XTCi p(i)
Это сводится к уравнениям для ALS:
Обучение модели
argminx*y*
cui pui − xuT yi( )
(u,i)∑
2+λ xu
2
u∑ + yi
2
i∑
#
$%
&
'(
Функция ошибки:
xu = λI +Y TCuY( )−1Y TCup(u)
yi = λI + XTCiX( )−1XTCi p(i)
Это сводится к уравнениям для ALS:
Но есть проблема!
в матрице всего ненулевых элементов,
В матрице всего ненулевых элементов,
Ускорение iALS
Идея:
Y TCuY =Y TY +Y T Cu − I( )YCu − I
Cup(u)
Y TY
O f 2N + f 3 U( )
nu
nu
а не зависит от пользователя!
Итого: обновляем вектора пользователей за
Интуиция iALS
xu = λI +Y TCuY( )−1Y TCup(u) = λI + Au( )−1 du
A0 = c0yiT yi
i∑ d0 = c0p0yi
i∑
Au = A0 + (cui − c0 )yiT yi
(u,i)∈N (u)∑
du = d0 + cui pui − c0p0( ) yiu,i( )∈N (u)∑
Введем «нулевого» пользователя без фидбека:
Тогда для остальных пользователей выводим:
Выпишем ALS-шаг в упрощенной форме:
Как выбирать c0 и p0?
∀(u, i)∈ N
cui =1+αrui
pui =1
pui = 0 иначе
Как и раньше:
Как выбирать c0 и p0?
∀(u, i)∈ N
cui =1+αrui
pui =1
pui = 0 иначе
Как и раньше:
c0 =1
p0 = 0
А разве что-то еще осталось?
35
If you like this lecture you will like these books
If you like this lecture you will also like
If you like this lecture you will probably like
http://www.4ducks.ru/pages/itmo-rs-2014.html
Удачи! Андрей Данильченко группа разработки рекомендательных систем, Яндекс [email protected]
http://www.4ducks.ru/itmo-ml-course-recsys-part-1.html