ݺߣ

ݺߣShare a Scribd company logo
ИТМО Machine Learning 2016. Рекомендательные системы
Рекомендательные
системы
Андрей Данильченко
Что такое
рекомендательные
системы?
ИТМО Machine Learning 2016. Рекомендательные системы
5
6
ИТМО Machine Learning 2016. Рекомендательные системы
F. Ricci “Recommender Systems Handbook”
│ Recommender Systems are
software tools and techniques
providing suggestions for items
to be of use to a user
8
ИТМО Machine Learning 2016. Рекомендательные системы
Какие бывают
рекомендательные
системы?
10
Классификация RS
Available data
User history Content
Collaborative Content-based
Hybrid
Tags
&
Metadata
Данные
• Рейтинги (explicit feedback)
• унарные (like)
• бинарные (like/dislike)
• числовые (stars)
• История действий пользователя (implicit feedback)
• Тэги, метаданные
• Комментарии, отзывы
• Друзья
12
Рекомендательные задачи
1. Predict
2. Recommend
3. Similar
13
Как построить простую
рекомендательную систему?
14
User-based kNN
Как продукт оценили похожие пользователи?
ˆrui =
1
Ni u( )
rvi
vÎNi (u)
å
Взвесим вклад каждого
ˆrui =
wuvrvi
vÎNi (u)
å
wuv
vÎNi (u)
å
И нормализуем рейтинги
ˆrui = h-1
wuvh rvi( )
vÎNi (u)
å
wuv
vÎNi (u)
å
æ
è
ç
ç
ç
ö
ø
÷
÷
÷
Как посчитать расстояние?
Косинусное расстояние
Корреляция Пирсона
cos(u,v) =
ruirvi
iÎIuv
å
r2
ui
iÎIu
å rvj
2
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
å
Как нормализовать рейтинги?
17
h rui( )= rui -ru
h rui( ) =
rui - ru
su
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
Модель:
ˆruiu = m +bu +bi
argmin
b*
ruiu -m -bu -bi( )
(u,i)ÎR
å
2
+l bu
2
+
uÎU
å bi
2
iÎI
å
æ
è
ç
ö
ø
÷
Функция ошибки:
SVD
Модель:
Функция ошибки:
ˆrui = m +bu +bi + pu
T
qi
argmin
p*q*b*
rui -m -bu -bi - pu
T
qi( )
(u,i)ÎR
å
2
+l pu
2
+ qi
2
+bu
2
+bi
2
( )
Optimization by SGD
Модель:
Функция ошибки:
ˆrui = m +bu +bi + pu
T
qi
argmin
p*q*b*
rui -m -bu -bi - pu
T
qi( )
(u,i)ÎR
å
2
+l pu
2
+ qi
2
+bu
2
+bi
2
( )
bu ¬ bu +g1 eui - l1bu( )
bi ¬ bi +g1 eui - l1bi( )
pu ¬ pu +g2 euiqi - l2 pu( )
qu ¬ qi +g2 eui pu - l2qi( )
Шаг стохастического градиентного спуска:
Alternating Least Squares
P-step: обновление при фиксированных векторах item-ов
pu = lnuI + Au( )
-1
du
Au = Q[u]T
Q[u]= qiqi
T
i: u,i( )ÎR
å
du = Q[u]T
ru = ruiqi
i: u,i( )ÎR
å
Q-step: обновление при фиксированных векторах пользователей
qi = lniI + Ai( )
-1
di
Ai = P[i]T
P[i]= pu pu
T
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+arui
pui =1
pui = 0 иначе
или
cui =1+a log 1+rui
b( )
Обучение модели
argmin
x*y*
cui pui - xu
T
yi( )
(u,i)
å
2
+ l xu
2
u
å + yi
2
i
å
æ
è
ç
ö
ø
÷
Функция ошибки:
xu = lI +YT
Cu
Y( )
-1
YT
Cu
p(u)
yi = lI + XT
Ci
X( )
-1
XT
Ci
p(i)
Это сводится к уравнениям для ALS:
Обучение модели
argmin
x*y*
cui pui - xu
T
yi( )
(u,i)
å
2
+ l xu
2
u
å + yi
2
i
å
æ
è
ç
ö
ø
÷
Функция ошибки:
xu = lI +YT
Cu
Y( )
-1
YT
Cu
p(u)
yi = lI + XT
Ci
X( )
-1
XT
Ci
p(i)
Это сводится к уравнениям для ALS:
Но есть проблема!
в матрице всего ненулевых элементов,
В матрице всего ненулевых элементов,
Ускорение iALS
Идея:
YT
Cu
Y =YT
Y +YT
Cu
- I( )Y
Cu
- I
Cu
p(u)
YT
Y
O f 2
N + f 3
U( )
nu
nu
а не зависит от пользователя!
Итого: обновляем вектора пользователей за
Интуиция iALS
xu = lI +YT
Cu
Y( )
-1
YT
Cu
p(u) = lI + Au( )
-1
du
A0 = c0yi
T
yi
i
å d0 = c0 p0yi
i
å
Au = A0 + (cui -c0 )yi
T
yi
(u,i)ÎN(u)
å
du = d0 + cui pui -c0 p0( )yi
u,i( )ÎN(u)
å
Введем «нулевого» пользователя без фидбека:
Тогда для остальных пользователей выводим:
Выпишем ALS-шаг в упрощенной форме:
Как выбирать c0 и p0?
"(u,i) Î N
cui =1+arui
pui =1
pui = 0 иначе
Как и раньше:
Как выбирать c0 и p0?
"(u,i) Î N
cui =1+arui
pui =1
pui = 0 иначе
Как и раньше:
c0 =1
p0 = 0
Как объяснять рекомендации?
Если вам нравится X, то
попробуйте Y…
Вам понравится Y!
Item-based model explanation
Модель: ˆrui = wijrui
jÎNu
k
å
Вклад в рейтинг:wijrui
Выберем j с максимальными вкладами
—
это и есть объяснение!
j
ALS explanation
Модель:ˆrui = yi
T
xu = yi
T
lI +YT
Y( )
-1
YT
r u( )
ˆrui = sij
u
u,i( )ÎR
å ruj
Wu
= YT
Y + lI( )
-1
sij
u
= yi
T
Wu
yj
Выберем j с максимальными вкладами
—
это и есть объяснение!
Тогда перепишем модель как
Вклад в рейтинг:sij
u
rujj
iALS explanation
Модель:ˆpui = yi
T
xu = yi
T
lI +YT
Cu
Y( )
-1
YT
Cu
p(u)
ˆpui = sij
u
pui>0
å cuj puj
Wu
= YT
Cu
Y + lI( )
-1
sij
u
= yi
T
Wu
yj
Выберем j с максимальными вкладами
—
это и есть объяснение!
Тогда перепишем модель как
Вклад в рейтинг:sij
u
cuj puj = sij
u
cujj
Как измерить качество?
Prediction quality
RMSE =
1
| R |
rui - ˆrui( )
u,iÎR
å
2
MAE =
1
R
rui - ˆrui
u,iÎR
å
Classification quality
Истинный ответ 0 Истинный ответ 1
Предсказали 0 TN FN
Предсказали 1 FP TP
Confusion matrix:
P =
TP
TP + FP
R =
TP
TP + FN
F1 =
2
1
P
+
1
R
Precision:
Recall:
More on classification quality
AP = P(k)Dr(k)
k=1
n
å
MAP =
AP(q)
qÎQ
å
Q
Average precision:
Mean average precision:
MAP — средняя точность на позициях, где есть попадания в top k.
Ranking quality (NDPM)
C+
= sgn rui - ruj( )sgn ˆrui - ˆruj( )
ij
å
C-
= sgn rui - ruj( )sgn ˆruj - ˆrui( )
ij
å
Cu
= sgn2
rui - ruj( )
ij
å
Cs
= sgn2
ˆrui - ˆruj( )
ij
å
Cu0
= Cu
- C+
+C-
( )
NDPM =
C-
+ 1
2 Cu0
Cu
Ranking quality (NDCG)
DCGu = r1 +
ri
log2 ii=2
n
å
NDCGu =
DCGu
IDCGu
NDCG =
NDCGu
U
Пусть для каждого пользователя и item-а задана «релевантность» r
Как оптимизировать
ранжирование?
44
│Давайте смотреть на
порядок пар!
BPR: problem setting
Для пользователей u из U и фильмов i из I составим обучающее множество
как тройки:
DS ={(u,i, j):i Î Iu
+
^ j Î I  Iu
+
}
где Iu
+ — фильмы с implicit feedback для данного пользователя
>u — полный порядок на фильмах, причем выполняются свойства:
"i, j Î I :i ¹ j Þ i >u jÚ j >u i
"i, j Î I :i >u j ^ j >u i Þ i = j
"i, j,k Î I :i >u j ^ j >u k Þ i >u k
полнота
антисимметричность
транзитивность
Байесовская формулировка
p Q|>u( )µ p >u|Q( )p Q( )
Тогда для всех пользователей запишем:
Тогда по свойствам порядка это можно упростить:
𝑢∈𝑈
𝑝 > 𝑢 Θ =
𝑢,𝑖,𝑗∈𝐷𝑠
𝑝(𝑖 > 𝑢 |Θ
𝑢∈𝑈
𝑝 > 𝑢 Θ =
𝑢,𝑖,𝑗∈𝑈×𝐼×𝐼
𝑝(𝑖 > 𝑢 |Θ 𝛿((𝑢,𝑖,𝑗 ∈𝐷𝑠 ∙ 1 − 𝑝 𝑖 > 𝑢 𝑗 Θ
𝛿((𝑢,𝑖,𝑗 ∉𝐷𝑠
Preference model
p i >u j |Q( )=s( ˆxuij (Q))
Окончательно определим модель как:
Здесь ˆxuij — «встроенная» модель, которая отслеживает
связь между u, i и j. Например,
- матричное разложение
- модель kNN
BPR-Opt
p Q( )= N(0,SQ )
Предположим, наконец, априорное распределение параметров:
Тогда весь алгоритм: BPR -Opt := ln p Q |>u( )
= ln p >u|Q( ) p(Q)
= ln s ˆxuij Q( )( )p Q( )
(u,i, j)ÎDs
Õ
= ln
(u,i, j)ÎDs
å s ˆxuij Q( )( )+ ln p Q( )
= ln
(u,i, j)ÎDs
å s ˆxuij Q( )( )- lQ Q
2
LearnBPR
1. Инициализируем параметры Θ
2. Пока не достигнута сходимость:
1. Выберем пример из Ds
3. Вернем финальные параметры
Q¬ Q+a
exp(- ˆxuij )
1+exp(- ˆxuij )
×
¶
¶Q
ˆxuij +lQQ
æ
è
çç
ö
ø
÷÷2.
Еще раз о модели рейтинга
Распишем ˆxuij = ˆxui - ˆxuj
В случае разложения матриц
ˆxui = wu,hi = wuf hif
f =1
k
å
Тогда производные распишутся как
¶ˆxuij
¶q
=
(hif - hjf )
wuf
-wuf
0
если q = wuf
если q = hif
если q = hjf
иначе
А разве что-то еще
осталось?
If you like this lecture you will like these
books
We are hiring!
https://yandex.ru/jobs/vacancies/dev/dev_zen/
54
Контакты
danilchenko@yandex-team.ru
Удачи!
Андрей Данильченко
Группа технологий рекомендаций, Яндекс
mir_nomer_nol

More Related Content

What's hot (20)

Лекция №6 "Линейные модели для классификации и регрессии"
Лекция №6 "Линейные модели для классификации и регрессии" Лекция №6 "Линейные модели для классификации и регрессии"
Лекция №6 "Линейные модели для классификации и регрессии"
Technosphere1
ITMO RecSys course. Autumn 2014. Lecture 6
ITMO RecSys course. Autumn 2014. Lecture 6ITMO RecSys course. Autumn 2014. Lecture 6
ITMO RecSys course. Autumn 2014. Lecture 6
Andrey Danilchenko
Лекция №7 "Машина опорных векторов"
Лекция №7 "Машина опорных векторов" Лекция №7 "Машина опорных векторов"
Лекция №7 "Машина опорных векторов"
Technosphere1
Лекция №9 "Алгоритмические композиции. Начало"
Лекция №9 "Алгоритмические композиции. Начало"Лекция №9 "Алгоритмические композиции. Начало"
Лекция №9 "Алгоритмические композиции. Начало"
Technosphere1
Структурное обучение и S-SVM
Структурное обучение и S-SVMСтруктурное обучение и S-SVM
Структурное обучение и S-SVM
romovpa
20111202 machine learning_nikolenko_lecture05
20111202 machine learning_nikolenko_lecture0520111202 machine learning_nikolenko_lecture05
20111202 machine learning_nikolenko_lecture05
Computer Science Club
Лекция №10 "Алгоритмические композиции. Завершение"
Лекция №10 "Алгоритмические композиции. Завершение" Лекция №10 "Алгоритмические композиции. Завершение"
Лекция №10 "Алгоритмические композиции. Завершение"
Technosphere1
Лекция №2 "Задача кластеризации и ЕМ-алгоритм"
Лекция №2 "Задача кластеризации и ЕМ-алгоритм"Лекция №2 "Задача кластеризации и ЕМ-алгоритм"
Лекция №2 "Задача кластеризации и ЕМ-алгоритм"
Technosphere1
L6: Метод опорных векторов
L6: Метод опорных векторовL6: Метод опорных векторов
L6: Метод опорных векторов
Technosphere1
Лекция №5 "Обработка текстов, Naive Bayes"
Лекция №5 "Обработка текстов, Naive Bayes" Лекция №5 "Обработка текстов, Naive Bayes"
Лекция №5 "Обработка текстов, Naive Bayes"
Technosphere1
Лекция №4 "Задача классификации"
Лекция №4 "Задача классификации"Лекция №4 "Задача классификации"
Лекция №4 "Задача классификации"
Technosphere1
Решение краевых задач методом конечных элементов
Решение краевых задач методом конечных элементовРешение краевых задач методом конечных элементов
Решение краевых задач методом конечных элементов
Theoretical mechanics department
Data Mining - lecture 4 - 2014
Data Mining - lecture 4 - 2014Data Mining - lecture 4 - 2014
Data Mining - lecture 4 - 2014
Andrii Gakhov
L5: Л5 Байесовские алгоритмы
L5: Л5 Байесовские алгоритмыL5: Л5 Байесовские алгоритмы
L5: Л5 Байесовские алгоритмы
Technosphere1
L2: Задача классификации и регрессии. Метрики ошибок
L2: Задача классификации и регрессии. Метрики ошибокL2: Задача классификации и регрессии. Метрики ошибок
L2: Задача классификации и регрессии. Метрики ошибок
Technosphere1
Лекция №8 "Методы снижения размерности пространства"
Лекция №8 "Методы снижения размерности пространства" Лекция №8 "Методы снижения размерности пространства"
Лекция №8 "Методы снижения размерности пространства"
Technosphere1
Лекция №12 "Ограниченная машина Больцмана"
Лекция №12 "Ограниченная машина Больцмана" Лекция №12 "Ограниченная машина Больцмана"
Лекция №12 "Ограниченная машина Больцмана"
Technosphere1
Morzhin o., november 03, 2011
Morzhin o., november 03, 2011Morzhin o., november 03, 2011
Morzhin o., november 03, 2011
oleg_morzhin
Лекция №6 "Линейные модели для классификации и регрессии"
Лекция №6 "Линейные модели для классификации и регрессии" Лекция №6 "Линейные модели для классификации и регрессии"
Лекция №6 "Линейные модели для классификации и регрессии"
Technosphere1
ITMO RecSys course. Autumn 2014. Lecture 6
ITMO RecSys course. Autumn 2014. Lecture 6ITMO RecSys course. Autumn 2014. Lecture 6
ITMO RecSys course. Autumn 2014. Lecture 6
Andrey Danilchenko
Лекция №7 "Машина опорных векторов"
Лекция №7 "Машина опорных векторов" Лекция №7 "Машина опорных векторов"
Лекция №7 "Машина опорных векторов"
Technosphere1
Лекция №9 "Алгоритмические композиции. Начало"
Лекция №9 "Алгоритмические композиции. Начало"Лекция №9 "Алгоритмические композиции. Начало"
Лекция №9 "Алгоритмические композиции. Начало"
Technosphere1
Структурное обучение и S-SVM
Структурное обучение и S-SVMСтруктурное обучение и S-SVM
Структурное обучение и S-SVM
romovpa
20111202 machine learning_nikolenko_lecture05
20111202 machine learning_nikolenko_lecture0520111202 machine learning_nikolenko_lecture05
20111202 machine learning_nikolenko_lecture05
Computer Science Club
Лекция №10 "Алгоритмические композиции. Завершение"
Лекция №10 "Алгоритмические композиции. Завершение" Лекция №10 "Алгоритмические композиции. Завершение"
Лекция №10 "Алгоритмические композиции. Завершение"
Technosphere1
Лекция №2 "Задача кластеризации и ЕМ-алгоритм"
Лекция №2 "Задача кластеризации и ЕМ-алгоритм"Лекция №2 "Задача кластеризации и ЕМ-алгоритм"
Лекция №2 "Задача кластеризации и ЕМ-алгоритм"
Technosphere1
L6: Метод опорных векторов
L6: Метод опорных векторовL6: Метод опорных векторов
L6: Метод опорных векторов
Technosphere1
Лекция №5 "Обработка текстов, Naive Bayes"
Лекция №5 "Обработка текстов, Naive Bayes" Лекция №5 "Обработка текстов, Naive Bayes"
Лекция №5 "Обработка текстов, Naive Bayes"
Technosphere1
Лекция №4 "Задача классификации"
Лекция №4 "Задача классификации"Лекция №4 "Задача классификации"
Лекция №4 "Задача классификации"
Technosphere1
Решение краевых задач методом конечных элементов
Решение краевых задач методом конечных элементовРешение краевых задач методом конечных элементов
Решение краевых задач методом конечных элементов
Theoretical mechanics department
Data Mining - lecture 4 - 2014
Data Mining - lecture 4 - 2014Data Mining - lecture 4 - 2014
Data Mining - lecture 4 - 2014
Andrii Gakhov
L5: Л5 Байесовские алгоритмы
L5: Л5 Байесовские алгоритмыL5: Л5 Байесовские алгоритмы
L5: Л5 Байесовские алгоритмы
Technosphere1
L2: Задача классификации и регрессии. Метрики ошибок
L2: Задача классификации и регрессии. Метрики ошибокL2: Задача классификации и регрессии. Метрики ошибок
L2: Задача классификации и регрессии. Метрики ошибок
Technosphere1
Лекция №8 "Методы снижения размерности пространства"
Лекция №8 "Методы снижения размерности пространства" Лекция №8 "Методы снижения размерности пространства"
Лекция №8 "Методы снижения размерности пространства"
Technosphere1
Лекция №12 "Ограниченная машина Больцмана"
Лекция №12 "Ограниченная машина Больцмана" Лекция №12 "Ограниченная машина Больцмана"
Лекция №12 "Ограниченная машина Больцмана"
Technosphere1
Morzhin o., november 03, 2011
Morzhin o., november 03, 2011Morzhin o., november 03, 2011
Morzhin o., november 03, 2011
oleg_morzhin

Viewers also liked (7)

Методики оценки рекомендательных систем
Методики оценки рекомендательных системМетодики оценки рекомендательных систем
Методики оценки рекомендательных систем
Witology
Recommender System at Scale Using HBase and Hadoop
Recommender System at Scale Using HBase and HadoopRecommender System at Scale Using HBase and Hadoop
Recommender System at Scale Using HBase and Hadoop
DataWorks Summit
Collaborative Filtering and Recommender Systems By Navisro Analytics
Collaborative Filtering and Recommender Systems By Navisro AnalyticsCollaborative Filtering and Recommender Systems By Navisro Analytics
Collaborative Filtering and Recommender Systems By Navisro Analytics
Navisro Analytics
Graph Based Recommendation Systems at eBay
Graph Based Recommendation Systems at eBayGraph Based Recommendation Systems at eBay
Graph Based Recommendation Systems at eBay
DataStax Academy
Recommender Systems
Recommender SystemsRecommender Systems
Recommender Systems
Girish Khanzode
Collaborative Filtering Recommendation System
Collaborative Filtering Recommendation SystemCollaborative Filtering Recommendation System
Collaborative Filtering Recommendation System
Milind Gokhale

Similar to ИТМО Machine Learning 2016. Рекомендательные системы (6)

ITMO RecSys course. Autumn 2014. Lecture 4
ITMO RecSys course. Autumn 2014. Lecture 4ITMO RecSys course. Autumn 2014. Lecture 4
ITMO RecSys course. Autumn 2014. Lecture 4
Andrey Danilchenko
ITMO RecSys course. Autumn 2014. Lecture 3
ITMO RecSys course. Autumn 2014. Lecture 3ITMO RecSys course. Autumn 2014. Lecture 3
ITMO RecSys course. Autumn 2014. Lecture 3
Andrey Danilchenko
«QuickCheck в Python: проверка гипотез и поиск ошибок», Александр Шорин, Ramb...
«QuickCheck в Python: проверка гипотез и поиск ошибок», Александр Шорин, Ramb...«QuickCheck в Python: проверка гипотез и поиск ошибок», Александр Шорин, Ramb...
«QuickCheck в Python: проверка гипотез и поиск ошибок», Александр Шорин, Ramb...
Mail.ru Group
Факторизационные модели в рекомендательных системах
Факторизационные модели в рекомендательных системахФакторизационные модели в рекомендательных системах
Факторизационные модели в рекомендательных системах
romovpa
Введение в Learning To Rank
Введение в Learning To RankВведение в Learning To Rank
Введение в Learning To Rank
Спецсеминар "Искусственный Интеллект" кафедры АЯ ВМК МГУ
ITMO RecSys course. Autumn 2014. Lecture 4
ITMO RecSys course. Autumn 2014. Lecture 4ITMO RecSys course. Autumn 2014. Lecture 4
ITMO RecSys course. Autumn 2014. Lecture 4
Andrey Danilchenko
ITMO RecSys course. Autumn 2014. Lecture 3
ITMO RecSys course. Autumn 2014. Lecture 3ITMO RecSys course. Autumn 2014. Lecture 3
ITMO RecSys course. Autumn 2014. Lecture 3
Andrey Danilchenko
«QuickCheck в Python: проверка гипотез и поиск ошибок», Александр Шорин, Ramb...
«QuickCheck в Python: проверка гипотез и поиск ошибок», Александр Шорин, Ramb...«QuickCheck в Python: проверка гипотез и поиск ошибок», Александр Шорин, Ramb...
«QuickCheck в Python: проверка гипотез и поиск ошибок», Александр Шорин, Ramb...
Mail.ru Group
Факторизационные модели в рекомендательных системах
Факторизационные модели в рекомендательных системахФакторизационные модели в рекомендательных системах
Факторизационные модели в рекомендательных системах
romovpa

ИТМО Machine Learning 2016. Рекомендательные системы

Editor's Notes

  • #35: Делает более быстрые итерации, сходится туда же
  • #36: Делает более быстрые итерации, сходится туда же
  • #37: Делает более быстрые итерации, сходится туда же
  • #38: Делает более быстрые итерации, сходится туда же
  • #43: Normalized Distance-based Performance Measure C+ правильное ранжирование C- неправильное ранжирование C_u — сколько пар можем отранжировать С_s — сколько пар система смогла отранжировать C_u0 — сколько пар, где реально нет ранжирования, а система его ввела NDPM — 0 там где перевернули все рейтинги, 1 там где правильно все. предсказание отсутствия разницы штрафуется в половину меньше, чем переворот ранжирования. Где не знаем ранжирование — не штрафуем.
  • #44: Normalized discounted cumulative gain