SlideShare a Scribd company logo
1 of 31
Download to read offline
Рекомендательные системы 
Лекция №4: 
Advanced models 
Андрей Данильченко 
НИУ ИТМО, 6 декабря 2014
Как еще можно выиграть 
Netflix Prize?
Restricted Boltzmann Machine (for user) 
F — # of features 
Missing 
Missing 
Missing 
Missing 
h 
W 
V 
Binary hidden units 
Visible movie ratings 
… … 
# of movies 
Weights 
(shared between all users)
Model distributions 
For n users, m movies, ratings from 1 to K, binary features from 1 to F: 
k =1| 
p vi 
! 
( h) = 
FΣ 
k + hjWij 
exp bi 
k 
j=1 
" 
# $$ 
% 
& '' 
FΣ 
l + hjWij 
exp bi 
l 
j=1 
" 
# $$ 
% 
& '' 
KΣ 
l=1 
p hj =1| 
! 
KΣ 
mΣ 
( V) =σ bj + vi 
kWij 
k 
k=1 
i=1 
" 
# $ 
% 
& ' 
, где 
1 
σ (x) = 
1+ e−x p 
! 
(V) = 
exp −E 
! 
V, 
! 
( ( h)) 
! 
exp −E 
V ', 
! 
! ( ( h ')) 
Σ 
! Σ 
! 
V ', 
h ' h 
E 
( ! 
! 
V, 
h) = − Wij 
khjvi 
k 
KΣ 
k=1 
FΣ 
j=1 
mΣ 
i=1 
, где энергия задается как 
kbi 
KΣ 
mΣ 
− vi 
k 
k=1 
i=1 
FΣ 
− hjbj 
j=1
Обучение — data part 
%% 
k =ε 
ΔWij 
! 
( V)) 
∂Wij 
∂log p( 
k 
# 
$ 
& 
(( 
' 
( khkh) 
j data 
j predicted =ε vi 
− vi 
Получаем из данных: 
1. для каждого обучающего примера v, выведем h 
2. посчитаем частоту, с которой фильм i получил рейтинг k при 
соответствующем h
Обучение — model part 
%% 
k =ε 
ΔWij 
! 
( V)) 
∂Wij 
∂log p( 
k 
# 
$ 
& 
(( 
' 
( khkh) 
j data 
j predicted =ε vi 
− vi 
Трудно получать аналитически, работает экспоненциальное время
Contrastive divergence 
%% 
k =ε 
ΔWij 
! 
( V)) 
∂Wij 
∂log p( 
k 
# 
$ 
& 
(( 
' 
( khkh) ≈ 
j data 
j predicted =ε vi 
− vi 
( khkh) 
j data 
j recon ≈ε vi 
− vi 
Восстановим из данных: 
1. для каждого обучающего примера v, выведем h 
2. восстановим v’ из h 
3. посчитаем “reconstruct”-часть
Sampling reconstruction part in CD 
khj recon ( ) =ε vi 
k =ε vi 
ΔWij 
khj data 
− vi 
( kh− vkh) 
j data 
i 
j T Будем сэмплировать по Гиббсу из распределений, 
делая T шагов. 
k =1| 
p vi 
! 
( h) 
! 
p h=1| 
j ( V) 
Начальная точка сэмплирования — наблюдаемые данные 
Количество шагов T будем увеличивать в процессе обучения. 
Таким образом мы будем получать все более «точные» приближения.
Gibbs sampling 
Пускай есть d случайных величин и дано их совместное распределение 
p x1, x2…xd ( ) 
Пусть на шаге t уже выбрано приближение Xt = xi 
d 
t { }i=1 
Тогда на t+1 шаге: 
1. выберем индекс i 
t ( ) 
t+1 p xi | x1 
2. выберем x по распределению i 
t…xi−1 
t …xd 
t , xi+1 
Обычно индекс выбирается как i = (t +1)%d
Общая схема обучения 
1. посчитаем data-part (для каждого пользователя и его рейтинга) 
2. выведем reconstruction-part для данного рейтинга 
3. усредним градиенты по всем пользователям 
4. запустим log-likelihood gradient ascend
Как предсказывать 
рейтинги?
Предсказание рейтингов 
k =1| 
p vi 
! 
( V)∝ exp −E vq 
Σ k, 
∝ 
! 
V, 
! 
( ( h)) 
h1…hp 
Σ + vi 
Σ 
FΠ 
k exp vi 
∝Γq 
lhjWij 
l 
il 
khjWij 
k + hjbj 
% 
& ' 
( 
) * 
hj∈{0,1} 
j=1 
= 
Σ + vi 
FΠ где Γq 
k 1+ exp vi 
= Γq 
lWij 
l 
il 
kWij 
k + bj 
% 
& ' 
( 
) * 
% 
& '' 
( 
) ** 
j=1 
k ( ) 
k = exp vq 
kbq 
Получили вероятность, что пользователь поставит фильму i оценку k
Что делать с вероятностями? 
Два варианта: 
1. просто взять оценку, у которой вероятность максимальна 
2. нормализовать вероятности так, чтобы 
p(vi = k) 
KΣ 
k=1 
=1 
и посчитать предсказание как E vi [ ]
Предсказание множества рейтингов 
14 
Если требуется предсказать рейтинги для n фильмов, то 
можно посчитать вероятность: 
k1 =1, vq2 
p vq1 
k2 =1,…, vqn 
kn =1| 
! 
( V) 
Но это требует O(Kn) времени!
Multi-predict trick 
15 
Давайте сделаем один update-шаг: 
ˆpj = p hj =1| 
! 
KΣ 
mΣ 
( V) =σ bj + vi 
kWij 
k 
k=1 
i=1 
" 
# $ 
% 
& ' 
k ( =1| pˆ) = 
p vq 
FΣ 
k + ˆpjWqj 
exp bq 
k 
j=1 
" 
% 
'' 
& $$# FΣ 
k + ˆpjWqj 
exp bq 
l 
j=1 
" 
# $$ 
% 
& '' 
KΣ 
l=1 
И снова вычислим предсказания как матожидание. 
Это немного хуже по качеству, но намного быстрее!
Gaussian hidden units 
16 
Можно ввести расширение модели, считая скрытые переменные 
гауссовскими. Тогда вероятности в модели примут вид: 
k =1| 
p vi 
! 
( h) = 
FΣ 
k + hjWij 
exp bi 
k 
j=1 
" 
# $$ 
% 
& '' 
FΣ" 
# $$ 
l + hjWij 
exp bi 
l 
j=1 
% 
& '' 
KΣ 
l=1 
p hj = h | 
! 
( V) = 
1 
2Πσ i 
&&&&& 
exp − 
kWij 
KΣ 
mΣ 
h − bj −σ j vi 
k 
k=1 
i=1 
$ 
% & 
' 
( ) 
2 
2 
2σ i 
$ 
% 
' 
))))) 
( 
N.B. для единичной дисперсии формулы обновления те же!
Как измерить качество? 
или еще раз о метриках
Prediction quality 
RMSE = 
1 
| R | 
Σ ( 2 
r− rˆ ) 
ui ui u,i∈R 
MAE = 
1 
R 
rui − ˆ rui 
Σ 
u,i∈R
Classification quality 
Истинный ответ 0 Истинный ответ 1 
Confusion matrix: 
Предсказали 0 TN FN 
Предсказали 1 FP TP 
P = 
TP 
TP + FP 
R = 
TP 
TP + FN 
F1 = 
2 
1 
P 
+ 
1 
R 
Precision: 
Recall:
More on classification quality 
nΣ 
AP = P(k)Δr(k) 
k=1 
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) 
Пусть для каждого пользователя и item-а задана «релевантность» r 
DCGu = r1 + 
nΣ 
ri 
log2 i i=2 
NDCGu = 
DCGu 
IDCGu 
NDCG = 
NDCGu 
U
Как оптимизировать 
ранжирование? 
23
│ Давайте смотреть на 
порядок пар!
BPR: problem setting 
Для пользователей u из U и фильмов i из I составим обучающее множество 
как тройки: 
+ ^ j ∈ I  Iu 
DS = {(u, i, j) : i ∈ Iu 
+} 
+ — фильмы с implicit feedback для данного пользователя 
где Iu 
>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(Θ|>u )∝ p(>u |Θ) p(Θ) 
Тогда для всех пользователей запишем: 
Π p ( Θ|>) 
= p ( i >δ j |Θ)((u,i, j )∈DS ) 
u u u∈U 
Π ⋅ 
u,i, j∈U×I×I 
⋅ 1− p i >u ( ( j |Θ))δ ((u,i, j )∉DS ) 
Тогда по свойствам порядка это можно упростить: 
Π p ( Θ|>) 
= p ( i >j |Θ) 
u u u∈U 
Π 
u,i, j∈Ds
Preference model 
Окончательно определим модель как: 
p(i >u j |Θ) =σ (xˆuij (Θ)) 
Здесь ˆ xuij — «встроенная» модель, которая отслеживает 
связь между u, i и j. Например, 
- матричное разложение 
- модель kNN
BPR-Opt 
Предположим, наконец, априорное распределение параметров: 
p(Θ) = N(0,ΣΘ) 
Тогда весь алгоритм: BPR −Opt := ln p Θ|>u ( ) 
= ln p >u ( |Θ) p(Θ) 
= ln σ ˆ xuij ( (Θ)) p(Θ) 
Π 
(u,i, j )∈Ds 
Σ σ ˆ xuij ( (Θ))+ ln p(Θ) 
= ln 
(u,i, j )∈Ds 
Σ σ ˆ xuij ( (Θ))−λΘ Θ 2 
= ln 
(u,i, j )∈Ds
LearnBPR 
1. Инициализируем параметры Θ 
2. Пока не достигнута сходимость: 
1. Выберем пример из Ds 
Θ←Θ+α 
exp(− ˆ xuij ) 
1+ exp(− ˆ xuij ) 
3. Вернем финальные параметры 
⋅ 
∂ 
∂Θ 
ˆ xuij +λΘΘ 
& 
) 
++ 
* ((' 2.
Еще раз о модели рейтинга 
Распишем ˆ xuij = ˆ xui − ˆ xuj 
В случае разложения матриц 
kΣ 
ˆ xui = wu, hi = wuf hif 
f =1 
Тогда производные распишутся как 
∂ˆ xuij 
∂θ 
= 
(hif − hjf ) 
wuf 
−wuf 
0 
если θ = wuf 
если θ = hif 
если θ = hjf 
иначе
Удачи! 
Андрей Данильченко 
группа разработки рекомендательных систем, Яндекс 
danilchenko@yandex-team.ru 
http://www.4ducks.ru/itmo-rs-2014-lecture-4.html

More Related Content

What's hot

презентация
презентацияпрезентация
презентацияLIANA180
 
User Defined Materials in LS-DYNA
User Defined Materials in LS-DYNAUser Defined Materials in LS-DYNA
User Defined Materials in LS-DYNAYury Novozhilov
 
Лекция 12 (часть 2): Языки программирования семейства PGAS: IBM X10
Лекция 12 (часть 2): Языки программирования семейства PGAS: IBM X10Лекция 12 (часть 2): Языки программирования семейства PGAS: IBM X10
Лекция 12 (часть 2): Языки программирования семейства PGAS: IBM X10Mikhail Kurnosov
 
Лекция №7 "Машина опорных векторов"
Лекция №7 "Машина опорных векторов" Лекция №7 "Машина опорных векторов"
Лекция №7 "Машина опорных векторов" Technosphere1
 
8.b proizvodnye
8.b proizvodnye8.b proizvodnye
8.b proizvodnyeNarvatk
 
Лекция №4 "Задача классификации"
Лекция №4 "Задача классификации"Лекция №4 "Задача классификации"
Лекция №4 "Задача классификации"Technosphere1
 
Лекция 10. Графы. Остовные деревья минимальной стоимости
Лекция 10. Графы. Остовные деревья минимальной стоимостиЛекция 10. Графы. Остовные деревья минимальной стоимости
Лекция 10. Графы. Остовные деревья минимальной стоимостиMikhail Kurnosov
 
Лекция 9: Графы. Кратчайшие пути в графах
Лекция 9: Графы. Кратчайшие пути в графахЛекция 9: Графы. Кратчайшие пути в графах
Лекция 9: Графы. Кратчайшие пути в графахMikhail Kurnosov
 
аппроксимация функции нескольких переменных
аппроксимация функции нескольких переменныхаппроксимация функции нескольких переменных
аппроксимация функции нескольких переменныхDmitry Protopopov
 
Лекция 13: Трудноразрешимые задачи. NP-полнота.
Лекция 13: Трудноразрешимые задачи. NP-полнота.Лекция 13: Трудноразрешимые задачи. NP-полнота.
Лекция 13: Трудноразрешимые задачи. NP-полнота.Mikhail Kurnosov
 
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 6Andrey Danilchenko
 
Лекция 9. Поиск кратчайшего пути в графе
Лекция 9. Поиск кратчайшего пути в графеЛекция 9. Поиск кратчайшего пути в графе
Лекция 9. Поиск кратчайшего пути в графеMikhail Kurnosov
 
Лекция 12: Методы разработки алгоритмов. Динамическое программирование. Жадны...
Лекция 12: Методы разработки алгоритмов. Динамическое программирование. Жадны...Лекция 12: Методы разработки алгоритмов. Динамическое программирование. Жадны...
Лекция 12: Методы разработки алгоритмов. Динамическое программирование. Жадны...Mikhail Kurnosov
 
Выявление ошибок и потенциальных уязвимостей в C и C++ коде с помощью анализа...
Выявление ошибок и потенциальных уязвимостей в C и C++ коде с помощью анализа...Выявление ошибок и потенциальных уязвимостей в C и C++ коде с помощью анализа...
Выявление ошибок и потенциальных уязвимостей в C и C++ коде с помощью анализа...Andrey Karpov
 
Matemat526
Matemat526Matemat526
Matemat526tesla21
 

What's hot (18)

Vzaimno obratnye funkcii
Vzaimno obratnye funkciiVzaimno obratnye funkcii
Vzaimno obratnye funkcii
 
презентация
презентацияпрезентация
презентация
 
User Defined Materials in LS-DYNA
User Defined Materials in LS-DYNAUser Defined Materials in LS-DYNA
User Defined Materials in LS-DYNA
 
Лекция 12 (часть 2): Языки программирования семейства PGAS: IBM X10
Лекция 12 (часть 2): Языки программирования семейства PGAS: IBM X10Лекция 12 (часть 2): Языки программирования семейства PGAS: IBM X10
Лекция 12 (часть 2): Языки программирования семейства PGAS: IBM X10
 
Лекция №7 "Машина опорных векторов"
Лекция №7 "Машина опорных векторов" Лекция №7 "Машина опорных векторов"
Лекция №7 "Машина опорных векторов"
 
8.b proizvodnye
8.b proizvodnye8.b proizvodnye
8.b proizvodnye
 
Seminar psu 05.04.2013
Seminar psu 05.04.2013Seminar psu 05.04.2013
Seminar psu 05.04.2013
 
Лекция №4 "Задача классификации"
Лекция №4 "Задача классификации"Лекция №4 "Задача классификации"
Лекция №4 "Задача классификации"
 
Лекция 10. Графы. Остовные деревья минимальной стоимости
Лекция 10. Графы. Остовные деревья минимальной стоимостиЛекция 10. Графы. Остовные деревья минимальной стоимости
Лекция 10. Графы. Остовные деревья минимальной стоимости
 
Лекция 9: Графы. Кратчайшие пути в графах
Лекция 9: Графы. Кратчайшие пути в графахЛекция 9: Графы. Кратчайшие пути в графах
Лекция 9: Графы. Кратчайшие пути в графах
 
аппроксимация функции нескольких переменных
аппроксимация функции нескольких переменныхаппроксимация функции нескольких переменных
аппроксимация функции нескольких переменных
 
Лекция 13: Трудноразрешимые задачи. NP-полнота.
Лекция 13: Трудноразрешимые задачи. NP-полнота.Лекция 13: Трудноразрешимые задачи. NP-полнота.
Лекция 13: Трудноразрешимые задачи. NP-полнота.
 
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
 
Лекция 9. Поиск кратчайшего пути в графе
Лекция 9. Поиск кратчайшего пути в графеЛекция 9. Поиск кратчайшего пути в графе
Лекция 9. Поиск кратчайшего пути в графе
 
Лекция 12: Методы разработки алгоритмов. Динамическое программирование. Жадны...
Лекция 12: Методы разработки алгоритмов. Динамическое программирование. Жадны...Лекция 12: Методы разработки алгоритмов. Динамическое программирование. Жадны...
Лекция 12: Методы разработки алгоритмов. Динамическое программирование. Жадны...
 
Выявление ошибок и потенциальных уязвимостей в C и C++ коде с помощью анализа...
Выявление ошибок и потенциальных уязвимостей в C и C++ коде с помощью анализа...Выявление ошибок и потенциальных уязвимостей в C и C++ коде с помощью анализа...
Выявление ошибок и потенциальных уязвимостей в C и C++ коде с помощью анализа...
 
все вмс
все вмсвсе вмс
все вмс
 
Matemat526
Matemat526Matemat526
Matemat526
 

Viewers also liked

Введение в рекомендательные системы. 3 case-study без NetFlix.
Введение в рекомендательные системы. 3 case-study без NetFlix.Введение в рекомендательные системы. 3 case-study без NetFlix.
Введение в рекомендательные системы. 3 case-study без NetFlix.Dmitrii Ignatov
 
A lattice-based consensus clustering
A lattice-based consensus clusteringA lattice-based consensus clustering
A lattice-based consensus clusteringDmitrii Ignatov
 
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 3Andrey Danilchenko
 
ИТМО Machine Learning 2016. Рекомендательные системы
ИТМО Machine Learning 2016. Рекомендательные системыИТМО Machine Learning 2016. Рекомендательные системы
ИТМО Machine Learning 2016. Рекомендательные системыAndrey Danilchenko
 
ИТМО Machine Learning 2015. Рекомендательные системы
ИТМО Machine Learning 2015. Рекомендательные системыИТМО Machine Learning 2015. Рекомендательные системы
ИТМО Machine Learning 2015. Рекомендательные системыAndrey Danilchenko
 
ITMO RecSys course. Autumn 2014. Lecture 5
ITMO RecSys course. Autumn 2014. Lecture 5ITMO RecSys course. Autumn 2014. Lecture 5
ITMO RecSys course. Autumn 2014. Lecture 5Andrey Danilchenko
 
Михаил Ройзнер
Михаил РойзнерМихаил Ройзнер
Михаил РойзнерCodeFest
 

Viewers also liked (7)

Введение в рекомендательные системы. 3 case-study без NetFlix.
Введение в рекомендательные системы. 3 case-study без NetFlix.Введение в рекомендательные системы. 3 case-study без NetFlix.
Введение в рекомендательные системы. 3 case-study без NetFlix.
 
A lattice-based consensus clustering
A lattice-based consensus clusteringA lattice-based consensus clustering
A lattice-based consensus clustering
 
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
 
ИТМО Machine Learning 2016. Рекомендательные системы
ИТМО Machine Learning 2016. Рекомендательные системыИТМО Machine Learning 2016. Рекомендательные системы
ИТМО Machine Learning 2016. Рекомендательные системы
 
ИТМО Machine Learning 2015. Рекомендательные системы
ИТМО Machine Learning 2015. Рекомендательные системыИТМО Machine Learning 2015. Рекомендательные системы
ИТМО Machine Learning 2015. Рекомендательные системы
 
ITMO RecSys course. Autumn 2014. Lecture 5
ITMO RecSys course. Autumn 2014. Lecture 5ITMO RecSys course. Autumn 2014. Lecture 5
ITMO RecSys course. Autumn 2014. Lecture 5
 
Михаил Ройзнер
Михаил РойзнерМихаил Ройзнер
Михаил Ройзнер
 

Similar to ITMO RecSys course. Autumn 2014. Lecture 4

ИТМО Machine Learning. Рекомендательные системы — часть 2
ИТМО Machine Learning. Рекомендательные системы — часть 2ИТМО Machine Learning. Рекомендательные системы — часть 2
ИТМО Machine Learning. Рекомендательные системы — часть 2Andrey Danilchenko
 
ИТМО Machine Learning. Рекомендательные системы — часть 1
ИТМО Machine Learning. Рекомендательные системы — часть 1ИТМО Machine Learning. Рекомендательные системы — часть 1
ИТМО Machine Learning. Рекомендательные системы — часть 1Andrey Danilchenko
 
ITMO RecSys course. Autumn 2014. Lecture 2
ITMO RecSys course. Autumn 2014. Lecture 2ITMO RecSys course. Autumn 2014. Lecture 2
ITMO RecSys course. Autumn 2014. Lecture 2Andrey Danilchenko
 
Использование GNU OCTAVE для инженерных и математических расчетов
Использование GNU OCTAVE для инженерных и математических расчетовИспользование GNU OCTAVE для инженерных и математических расчетов
Использование GNU OCTAVE для инженерных и математических расчетовТранслируем.бел
 
Лекция №10 "Алгоритмические композиции. Завершение"
Лекция №10 "Алгоритмические композиции. Завершение" Лекция №10 "Алгоритмические композиции. Завершение"
Лекция №10 "Алгоритмические композиции. Завершение" Technosphere1
 
Презентация на тему: Повторение курса информатики 7 класс
Презентация на тему: Повторение курса информатики 7 классПрезентация на тему: Повторение курса информатики 7 класс
Презентация на тему: Повторение курса информатики 7 класс2berkas
 
«QuickCheck в Python: проверка гипотез и поиск ошибок», Александр Шорин, Ramb...
«QuickCheck в Python: проверка гипотез и поиск ошибок», Александр Шорин, Ramb...«QuickCheck в Python: проверка гипотез и поиск ошибок», Александр Шорин, Ramb...
«QuickCheck в Python: проверка гипотез и поиск ошибок», Александр Шорин, Ramb...Mail.ru Group
 
Лекция №2 "Задача кластеризации и ЕМ-алгоритм"
Лекция №2 "Задача кластеризации и ЕМ-алгоритм"Лекция №2 "Задача кластеризации и ЕМ-алгоритм"
Лекция №2 "Задача кластеризации и ЕМ-алгоритм"Technosphere1
 
ITMO RecSys course. Autumn 2014. Lecture1: Introduction. kNN, SVD, evaluation
ITMO RecSys course. Autumn 2014. Lecture1: Introduction. kNN, SVD, evaluationITMO RecSys course. Autumn 2014. Lecture1: Introduction. kNN, SVD, evaluation
ITMO RecSys course. Autumn 2014. Lecture1: Introduction. kNN, SVD, evaluationAndrey Danilchenko
 
ITMO RecSys course. Autumn2014. Lecture1
ITMO RecSys course. Autumn2014. Lecture1ITMO RecSys course. Autumn2014. Lecture1
ITMO RecSys course. Autumn2014. Lecture1Andrey Danilchenko
 
Лекция 11: Методы разработки алгоритмов
Лекция 11: Методы разработки алгоритмовЛекция 11: Методы разработки алгоритмов
Лекция 11: Методы разработки алгоритмовMikhail Kurnosov
 
Лекция 11. Методы разработки алгоритмов
Лекция 11. Методы разработки алгоритмовЛекция 11. Методы разработки алгоритмов
Лекция 11. Методы разработки алгоритмовMikhail Kurnosov
 
ноид для до
ноид для доноид для до
ноид для доSuslina
 
чернякова г.в.
чернякова г.в.чернякова г.в.
чернякова г.в.sharikdp
 
Факторизационные модели в рекомендательных системах
Факторизационные модели в рекомендательных системахФакторизационные модели в рекомендательных системах
Факторизационные модели в рекомендательных системахromovpa
 
2014.12.06 04 Евгений Тюменцев — Откуда появились s.o.l.i.d. принципы
2014.12.06 04 Евгений Тюменцев — Откуда появились s.o.l.i.d. принципы2014.12.06 04 Евгений Тюменцев — Откуда появились s.o.l.i.d. принципы
2014.12.06 04 Евгений Тюменцев — Откуда появились s.o.l.i.d. принципыHappyDev
 
Методы машинного обучения в физике элементарных частиц
Методы машинного обучения в физике элементарных частицМетоды машинного обучения в физике элементарных частиц
Методы машинного обучения в физике элементарных частицAndrey Ustyuzhanin
 
Николай Паламарчук "Functional Programming basics for PHP developers"
Николай Паламарчук "Functional Programming basics for PHP developers"Николай Паламарчук "Functional Programming basics for PHP developers"
Николай Паламарчук "Functional Programming basics for PHP developers"Fwdays
 
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...Yandex
 

Similar to ITMO RecSys course. Autumn 2014. Lecture 4 (20)

ИТМО Machine Learning. Рекомендательные системы — часть 2
ИТМО Machine Learning. Рекомендательные системы — часть 2ИТМО Machine Learning. Рекомендательные системы — часть 2
ИТМО Machine Learning. Рекомендательные системы — часть 2
 
ИТМО Machine Learning. Рекомендательные системы — часть 1
ИТМО Machine Learning. Рекомендательные системы — часть 1ИТМО Machine Learning. Рекомендательные системы — часть 1
ИТМО Machine Learning. Рекомендательные системы — часть 1
 
Recsys.hse
Recsys.hseRecsys.hse
Recsys.hse
 
ITMO RecSys course. Autumn 2014. Lecture 2
ITMO RecSys course. Autumn 2014. Lecture 2ITMO RecSys course. Autumn 2014. Lecture 2
ITMO RecSys course. Autumn 2014. Lecture 2
 
Использование GNU OCTAVE для инженерных и математических расчетов
Использование GNU OCTAVE для инженерных и математических расчетовИспользование GNU OCTAVE для инженерных и математических расчетов
Использование GNU OCTAVE для инженерных и математических расчетов
 
Лекция №10 "Алгоритмические композиции. Завершение"
Лекция №10 "Алгоритмические композиции. Завершение" Лекция №10 "Алгоритмические композиции. Завершение"
Лекция №10 "Алгоритмические композиции. Завершение"
 
Презентация на тему: Повторение курса информатики 7 класс
Презентация на тему: Повторение курса информатики 7 классПрезентация на тему: Повторение курса информатики 7 класс
Презентация на тему: Повторение курса информатики 7 класс
 
«QuickCheck в Python: проверка гипотез и поиск ошибок», Александр Шорин, Ramb...
«QuickCheck в Python: проверка гипотез и поиск ошибок», Александр Шорин, Ramb...«QuickCheck в Python: проверка гипотез и поиск ошибок», Александр Шорин, Ramb...
«QuickCheck в Python: проверка гипотез и поиск ошибок», Александр Шорин, Ramb...
 
Лекция №2 "Задача кластеризации и ЕМ-алгоритм"
Лекция №2 "Задача кластеризации и ЕМ-алгоритм"Лекция №2 "Задача кластеризации и ЕМ-алгоритм"
Лекция №2 "Задача кластеризации и ЕМ-алгоритм"
 
ITMO RecSys course. Autumn 2014. Lecture1: Introduction. kNN, SVD, evaluation
ITMO RecSys course. Autumn 2014. Lecture1: Introduction. kNN, SVD, evaluationITMO RecSys course. Autumn 2014. Lecture1: Introduction. kNN, SVD, evaluation
ITMO RecSys course. Autumn 2014. Lecture1: Introduction. kNN, SVD, evaluation
 
ITMO RecSys course. Autumn2014. Lecture1
ITMO RecSys course. Autumn2014. Lecture1ITMO RecSys course. Autumn2014. Lecture1
ITMO RecSys course. Autumn2014. Lecture1
 
Лекция 11: Методы разработки алгоритмов
Лекция 11: Методы разработки алгоритмовЛекция 11: Методы разработки алгоритмов
Лекция 11: Методы разработки алгоритмов
 
Лекция 11. Методы разработки алгоритмов
Лекция 11. Методы разработки алгоритмовЛекция 11. Методы разработки алгоритмов
Лекция 11. Методы разработки алгоритмов
 
ноид для до
ноид для доноид для до
ноид для до
 
чернякова г.в.
чернякова г.в.чернякова г.в.
чернякова г.в.
 
Факторизационные модели в рекомендательных системах
Факторизационные модели в рекомендательных системахФакторизационные модели в рекомендательных системах
Факторизационные модели в рекомендательных системах
 
2014.12.06 04 Евгений Тюменцев — Откуда появились s.o.l.i.d. принципы
2014.12.06 04 Евгений Тюменцев — Откуда появились s.o.l.i.d. принципы2014.12.06 04 Евгений Тюменцев — Откуда появились s.o.l.i.d. принципы
2014.12.06 04 Евгений Тюменцев — Откуда появились s.o.l.i.d. принципы
 
Методы машинного обучения в физике элементарных частиц
Методы машинного обучения в физике элементарных частицМетоды машинного обучения в физике элементарных частиц
Методы машинного обучения в физике элементарных частиц
 
Николай Паламарчук "Functional Programming basics for PHP developers"
Николай Паламарчук "Functional Programming basics for PHP developers"Николай Паламарчук "Functional Programming basics for PHP developers"
Николай Паламарчук "Functional Programming basics for PHP developers"
 
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...
 

ITMO RecSys course. Autumn 2014. Lecture 4

  • 1. Рекомендательные системы Лекция №4: Advanced models Андрей Данильченко НИУ ИТМО, 6 декабря 2014
  • 2. Как еще можно выиграть Netflix Prize?
  • 3. Restricted Boltzmann Machine (for user) F — # of features Missing Missing Missing Missing h W V Binary hidden units Visible movie ratings … … # of movies Weights (shared between all users)
  • 4. Model distributions For n users, m movies, ratings from 1 to K, binary features from 1 to F: k =1| p vi ! ( h) = FΣ k + hjWij exp bi k j=1 " # $$ % & '' FΣ l + hjWij exp bi l j=1 " # $$ % & '' KΣ l=1 p hj =1| ! KΣ mΣ ( V) =σ bj + vi kWij k k=1 i=1 " # $ % & ' , где 1 σ (x) = 1+ e−x p ! (V) = exp −E ! V, ! ( ( h)) ! exp −E V ', ! ! ( ( h ')) Σ ! Σ ! V ', h ' h E ( ! ! V, h) = − Wij khjvi k KΣ k=1 FΣ j=1 mΣ i=1 , где энергия задается как kbi KΣ mΣ − vi k k=1 i=1 FΣ − hjbj j=1
  • 5. Обучение — data part %% k =ε ΔWij ! ( V)) ∂Wij ∂log p( k # $ & (( ' ( khkh) j data j predicted =ε vi − vi Получаем из данных: 1. для каждого обучающего примера v, выведем h 2. посчитаем частоту, с которой фильм i получил рейтинг k при соответствующем h
  • 6. Обучение — model part %% k =ε ΔWij ! ( V)) ∂Wij ∂log p( k # $ & (( ' ( khkh) j data j predicted =ε vi − vi Трудно получать аналитически, работает экспоненциальное время
  • 7. Contrastive divergence %% k =ε ΔWij ! ( V)) ∂Wij ∂log p( k # $ & (( ' ( khkh) ≈ j data j predicted =ε vi − vi ( khkh) j data j recon ≈ε vi − vi Восстановим из данных: 1. для каждого обучающего примера v, выведем h 2. восстановим v’ из h 3. посчитаем “reconstruct”-часть
  • 8. Sampling reconstruction part in CD khj recon ( ) =ε vi k =ε vi ΔWij khj data − vi ( kh− vkh) j data i j T Будем сэмплировать по Гиббсу из распределений, делая T шагов. k =1| p vi ! ( h) ! p h=1| j ( V) Начальная точка сэмплирования — наблюдаемые данные Количество шагов T будем увеличивать в процессе обучения. Таким образом мы будем получать все более «точные» приближения.
  • 9. Gibbs sampling Пускай есть d случайных величин и дано их совместное распределение p x1, x2…xd ( ) Пусть на шаге t уже выбрано приближение Xt = xi d t { }i=1 Тогда на t+1 шаге: 1. выберем индекс i t ( ) t+1 p xi | x1 2. выберем x по распределению i t…xi−1 t …xd t , xi+1 Обычно индекс выбирается как i = (t +1)%d
  • 10. Общая схема обучения 1. посчитаем data-part (для каждого пользователя и его рейтинга) 2. выведем reconstruction-part для данного рейтинга 3. усредним градиенты по всем пользователям 4. запустим log-likelihood gradient ascend
  • 12. Предсказание рейтингов k =1| p vi ! ( V)∝ exp −E vq Σ k, ∝ ! V, ! ( ( h)) h1…hp Σ + vi Σ FΠ k exp vi ∝Γq lhjWij l il khjWij k + hjbj % & ' ( ) * hj∈{0,1} j=1 = Σ + vi FΠ где Γq k 1+ exp vi = Γq lWij l il kWij k + bj % & ' ( ) * % & '' ( ) ** j=1 k ( ) k = exp vq kbq Получили вероятность, что пользователь поставит фильму i оценку k
  • 13. Что делать с вероятностями? Два варианта: 1. просто взять оценку, у которой вероятность максимальна 2. нормализовать вероятности так, чтобы p(vi = k) KΣ k=1 =1 и посчитать предсказание как E vi [ ]
  • 14. Предсказание множества рейтингов 14 Если требуется предсказать рейтинги для n фильмов, то можно посчитать вероятность: k1 =1, vq2 p vq1 k2 =1,…, vqn kn =1| ! ( V) Но это требует O(Kn) времени!
  • 15. Multi-predict trick 15 Давайте сделаем один update-шаг: ˆpj = p hj =1| ! KΣ mΣ ( V) =σ bj + vi kWij k k=1 i=1 " # $ % & ' k ( =1| pˆ) = p vq FΣ k + ˆpjWqj exp bq k j=1 " % '' & $$# FΣ k + ˆpjWqj exp bq l j=1 " # $$ % & '' KΣ l=1 И снова вычислим предсказания как матожидание. Это немного хуже по качеству, но намного быстрее!
  • 16. Gaussian hidden units 16 Можно ввести расширение модели, считая скрытые переменные гауссовскими. Тогда вероятности в модели примут вид: k =1| p vi ! ( h) = FΣ k + hjWij exp bi k j=1 " # $$ % & '' FΣ" # $$ l + hjWij exp bi l j=1 % & '' KΣ l=1 p hj = h | ! ( V) = 1 2Πσ i &&&&& exp − kWij KΣ mΣ h − bj −σ j vi k k=1 i=1 $ % & ' ( ) 2 2 2σ i $ % ' ))))) ( N.B. для единичной дисперсии формулы обновления те же!
  • 17. Как измерить качество? или еще раз о метриках
  • 18. Prediction quality RMSE = 1 | R | Σ ( 2 r− rˆ ) ui ui u,i∈R MAE = 1 R rui − ˆ rui Σ u,i∈R
  • 19. Classification quality Истинный ответ 0 Истинный ответ 1 Confusion matrix: Предсказали 0 TN FN Предсказали 1 FP TP P = TP TP + FP R = TP TP + FN F1 = 2 1 P + 1 R Precision: Recall:
  • 20. More on classification quality nΣ AP = P(k)Δr(k) k=1 MAP = AP(q) Σ q∈Q Q Average precision: Mean average precision: MAP — средняя точность на позициях, где есть попадания в top k.
  • 21. 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
  • 22. Ranking quality (NDCG) Пусть для каждого пользователя и item-а задана «релевантность» r DCGu = r1 + nΣ ri log2 i i=2 NDCGu = DCGu IDCGu NDCG = NDCGu U
  • 24. │ Давайте смотреть на порядок пар!
  • 25. BPR: problem setting Для пользователей u из U и фильмов i из I составим обучающее множество как тройки: + ^ j ∈ I Iu DS = {(u, i, j) : i ∈ Iu +} + — фильмы с implicit feedback для данного пользователя где Iu >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 полнота антисимметричность транзитивность
  • 26. Байесовская формулировка p(Θ|>u )∝ p(>u |Θ) p(Θ) Тогда для всех пользователей запишем: Π p ( Θ|>) = p ( i >δ j |Θ)((u,i, j )∈DS ) u u u∈U Π ⋅ u,i, j∈U×I×I ⋅ 1− p i >u ( ( j |Θ))δ ((u,i, j )∉DS ) Тогда по свойствам порядка это можно упростить: Π p ( Θ|>) = p ( i >j |Θ) u u u∈U Π u,i, j∈Ds
  • 27. Preference model Окончательно определим модель как: p(i >u j |Θ) =σ (xˆuij (Θ)) Здесь ˆ xuij — «встроенная» модель, которая отслеживает связь между u, i и j. Например, - матричное разложение - модель kNN
  • 28. BPR-Opt Предположим, наконец, априорное распределение параметров: p(Θ) = N(0,ΣΘ) Тогда весь алгоритм: BPR −Opt := ln p Θ|>u ( ) = ln p >u ( |Θ) p(Θ) = ln σ ˆ xuij ( (Θ)) p(Θ) Π (u,i, j )∈Ds Σ σ ˆ xuij ( (Θ))+ ln p(Θ) = ln (u,i, j )∈Ds Σ σ ˆ xuij ( (Θ))−λΘ Θ 2 = ln (u,i, j )∈Ds
  • 29. LearnBPR 1. Инициализируем параметры Θ 2. Пока не достигнута сходимость: 1. Выберем пример из Ds Θ←Θ+α exp(− ˆ xuij ) 1+ exp(− ˆ xuij ) 3. Вернем финальные параметры ⋅ ∂ ∂Θ ˆ xuij +λΘΘ & ) ++ * ((' 2.
  • 30. Еще раз о модели рейтинга Распишем ˆ xuij = ˆ xui − ˆ xuj В случае разложения матриц kΣ ˆ xui = wu, hi = wuf hif f =1 Тогда производные распишутся как ∂ˆ xuij ∂θ = (hif − hjf ) wuf −wuf 0 если θ = wuf если θ = hif если θ = hjf иначе
  • 31. Удачи! Андрей Данильченко группа разработки рекомендательных систем, Яндекс danilchenko@yandex-team.ru http://www.4ducks.ru/itmo-rs-2014-lecture-4.html