40

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

Embed Size (px)

DESCRIPTION

Лекция-введение в рекомендательные системы в рамках курса по машинному обучению для студентов четвертого курса на кафедре КТ ИТМО. Часть 2 — explanations, RBM, evaluation metrics, BPR

Citation preview

Page 1: ИТМО Machine Learning. Рекомендательные системы — часть 2
Page 2: ИТМО Machine Learning. Рекомендательные системы — часть 2

Рекомендательные системы Лекция 2

Андрей Данильченко

НИУ ИТМО, 17 ноября 2014

Page 3: ИТМО Machine Learning. Рекомендательные системы — часть 2

Как объяснять рекомендации?

Page 4: ИТМО Machine Learning. Рекомендательные системы — часть 2

Если вам нравится X, то попробуйте Y…

Вам понравится Y!

Page 5: ИТМО Machine Learning. Рекомендательные системы — часть 2

Item-based model explanation

Модель: r̂ui = wijruij∈Nu

k∑

Вклад в рейтинг: wijrui

Выберем j с максимальными вкладами — это и есть объяснение!

j

Page 6: ИТМО Machine Learning. Рекомендательные системы — часть 2

ALS explanation

Модель: r̂ui = yiT xu = yiT λI +Y TY( )−1Y Tr u( )

r̂ui = siju

u,i( )∈R∑ ruj

Wu = Y TY +λI( )−1

siju = yi

TW uyj

Выберем j с максимальными вкладами — это и есть объяснение!

Тогда перепишем модель как

Вклад в рейтинг: sijurujj

Page 7: ИТМО Machine Learning. Рекомендательные системы — часть 2

ALS explanation

Модель: r̂ui = yiT xu = yiT λI +Y TY( )−1Y Tr u( )

r̂ui = Vuqi( )T Vuqj( )ruju,i( )∈R∑

Wu = Y TY +λI( )−1

siju = yi

TW uyj

Перепишем модель как

Wu =VuTVu

VuТогда можно рассматривать как шаблон пользовательского мнения про item-ы

Page 8: ИТМО Machine Learning. Рекомендательные системы — часть 2

iALS explanation

Модель: p̂ui = yiT xu = yiT λI +Y TCuY( )−1Y TCup(u)

p̂ui = siju

pui>0∑ cuj puj

Wu = Y TCuY +λI( )−1

siju = yi

TW uyj

Выберем j с максимальными вкладами — это и есть объяснение!

Тогда перепишем модель как

Вклад в рейтинг: sijucuj puj = sij

ucujj

Page 9: ИТМО Machine Learning. Рекомендательные системы — часть 2

Как еще можно выиграть Netflix Prize?

Page 10: ИТМО Machine Learning. Рекомендательные системы — часть 2

Restricted Boltzmann Machine (for user)

Miss

ing

Miss

ing

Miss

ing

Miss

ing

… …

h

W

V

Binary hidden units

Visible movie ratings

# of movies

F — # of features

Weights (shared between all users)

Page 11: ИТМО Machine Learning. Рекомендательные системы — часть 2

Model distributions

p vik =1|

!h( ) =

exp bik + hjWij

k

j=1

F

∑"

#$$

%

&''

exp bil + hjWij

l

j=1

F

∑"

#$$

%

&''

l=1

K

For n users, m movies, ratings from 1 to K, binary features from 1 to F:

p hj =1|!V( ) =σ bj + vi

kWijk

k=1

K

∑i=1

m

∑"

#$

%

&' σ (x) = 1

1+ e−x, где

p!V( ) =

exp −E!V,!h( )( )

exp −E!V ',!h '( )( )!

V ',!h '∑!h

E!V,!h( ) = − Wij

khjvik

k=1

K

∑j=1

F

∑i=1

m

∑ − vikbi

k

k=1

K

∑i=1

m

∑ − hjbjj=1

F

, где энергия задается как

Page 12: ИТМО Machine Learning. Рекомендательные системы — часть 2

Обучение — data part

ΔWijk = ε

∂ log p(!V )( )

∂Wijk

#

$

%%

&

'

((= ε vi

khj data− vi

khj predicted( )

Получаем из данных:

1. для каждого обучающего примера v, выведем h

2. посчитаем частоту, с которой фильм i получил рейтинг k при соответствующем h

Page 13: ИТМО Machine Learning. Рекомендательные системы — часть 2

Обучение — model part

ΔWijk = ε

∂ log p(!V )( )

∂Wijk

#

$

%%

&

'

((= ε vi

khj data− vi

khj predicted( )

Трудно получать аналитически, работает экспоненциальное время

Page 14: ИТМО Machine Learning. Рекомендательные системы — часть 2

Contrastive divergence ΔWij

k = ε∂ log p(

!V )( )

∂Wijk

#

$

%%

&

'

((= ε vi

khj data− vi

khj predicted( ) ≈

≈ ε vikhj data

− vikhj recon( )

Восстановим из данных:

1. для каждого обучающего примера v, выведем h

2. восстановим v’ из h

3. посчитаем “reconstruct”-часть

Page 15: ИТМО Machine Learning. Рекомендательные системы — часть 2

Sampling reconstruction part in CD

ΔWijk = ε vi

khj data− vi

khj recon( ) = ε vikhj data

− vikhj T( )

Будем сэмплировать по Гиббсу из распределений, делая T шагов.

p vik =1|

!h( )

p hj =1|!V( )

Начальная точка сэмплирования — наблюдаемые данные

Количество шагов T будем увеличивать в процессе обучения. Таким образом мы будем получать все более «точные» приближения.

Page 16: ИТМО Machine Learning. Рекомендательные системы — часть 2

Gibbs sampling

Пускай есть d случайных величин и дано их совместное распределение

p x1, x2…xd( )

Пусть на шаге t уже выбрано приближение Xt = xit{ }i=1

d

Тогда на t+1 шаге:

1. выберем индекс i

2. выберем по распределению xit+1 p xi | x1

t…xi−1t , xi+1

t …xdt( )

Обычно индекс выбирается как i = t +1( )%d

Page 17: ИТМО Machine Learning. Рекомендательные системы — часть 2

Общая схема обучения

1.  посчитаем data-part (для каждого пользователя и его рейтинга)

2.  выведем reconstruction-part для данного рейтинга

3.  усредним градиенты по всем пользователям

4.  запустим log-likelihood gradient ascend

Page 18: ИТМО Machine Learning. Рекомендательные системы — часть 2

Как предсказывать рейтинги?

Page 19: ИТМО Machine Learning. Рекомендательные системы — часть 2

Предсказание рейтингов

p vik =1|

!V( )∝ exp −E vq

k,!V,!h( )( )

h1…hp

∑ ∝

∝Γqk exp vi

lhjWijl

il∑ + vi

khjWijk + hjbj

%

&'

(

)*

hj∈{0,1}∑

j=1

F

∏ =

= Γqk 1+ exp vi

lWijl

il∑ + vi

kWijk + bj

%

&'

(

)*

%

&''

(

)**

j=1

F

где Γqk = exp vq

kbqk( )

Получили вероятность, что пользователь поставит фильму i оценку k

Page 20: ИТМО Machine Learning. Рекомендательные системы — часть 2

Что делать с вероятностями?

Два варианта:

1. просто взять оценку, у которой вероятность максимальна

2. нормализовать вероятности так, чтобы

p vi = k( )k=1

K

∑ =1

и посчитать предсказание как E vi[ ]

Page 21: ИТМО Machine Learning. Рекомендательные системы — часть 2

Предсказание множества рейтингов

21

Если требуется предсказать рейтинги для n фильмов, то можно посчитать вероятность:

p vq1k1 =1,vq2

k2 =1,…,vqnkn =1|

!V( )

Но это требует O(Kn) времени!

Page 22: ИТМО Machine Learning. Рекомендательные системы — часть 2

Multi-predict trick

22

Давайте сделаем один update-шаг:

p̂ j = p hj =1|!V( ) =σ bj + vi

kWijk

k=1

K

∑i=1

m

∑"

#$

%

&'

p vqk =1| p̂( ) =

exp bqk + p̂ jWqj

k

j=1

F

∑"

#$$

%

&''

exp bqk + p̂ jWqj

l

j=1

F

∑"

#$$

%

&''

l=1

K

И снова вычислим предсказания как матожидание. Это немного хуже по качеству, но намного быстрее!

Page 23: ИТМО Machine Learning. Рекомендательные системы — часть 2

Gaussian hidden units

23

Можно ввести расширение модели, считая скрытые переменные гауссовскими. Тогда вероятности в модели примут вид:

p vik =1|

!h( ) =

exp bik + hjWij

k

j=1

F

∑"

#$$

%

&''

exp bil + hjWij

l

j=1

F

∑"

#$$

%

&''

l=1

K

p hj = h |!V( ) = 1

2Πσ i

exp −

h− bj −σ j vikWij

k

k=1

K

∑i=1

m

∑$

%&

'

()

2

2σ i2

$

%

&&&&&

'

(

)))))

N.B. для единичной дисперсии формулы обновления те же!

Page 24: ИТМО Machine Learning. Рекомендательные системы — часть 2

Как измерить качество? или еще раз о метриках

Page 25: ИТМО Machine Learning. Рекомендательные системы — часть 2

Prediction quality

RMSE = 1| R |

rui − r̂ui( )u,i∈R∑

2

MAE = 1R

rui − r̂uiu,i∈R∑

Page 26: ИТМО Machine Learning. Рекомендательные системы — часть 2

Classification quality

Истинный ответ 0 Истинный ответ 1

Предсказали 0 TN FN

Предсказали 1 FP TP

Confusion matrix:

P = TPTP +FP

R = TPTP +FN

F1 =2

1P+1R

Precision:

Recall:

Page 27: ИТМО Machine Learning. Рекомендательные системы — часть 2

More on classification quality

AP = P(k)Δr(k)k=1

n

MAP =AP(q)

q∈Q∑

Q

Average precision:

Mean average precision:

MAP — средняя точность на позициях, где есть попадания в top k.

Page 28: ИТМО Machine Learning. Рекомендательные системы — часть 2

Ranking quality (NDPM)

C+ = sgn rui − ruj( )sgn r̂ui − r̂uj( )ij∑

C− = sgn rui − ruj( )sgn r̂uj − r̂ui( )ij∑

Cu = sgn2 rui − ruj( )ij∑

Cs = sgn2 r̂ui − r̂uj( )ij∑

Cu0 =Cu − C+ +C−( )

NDPM =C− + 1

2Cu0

Cu

Page 29: ИТМО Machine Learning. Рекомендательные системы — часть 2

Ranking quality (NDCG)

DCGu = r1 +ri

log2 ii=2

n

NDCGu =DCGu

IDCGu

NDCG =NDCGu

U

Пусть для каждого пользователя и item-а задана «релевантность» r

Page 30: ИТМО Machine Learning. Рекомендательные системы — часть 2

Как оптимизировать ранжирование?

30

Page 31: ИТМО Machine Learning. Рекомендательные системы — часть 2

│ Давайте смотреть на порядок пар!

Page 32: ИТМО Machine Learning. Рекомендательные системы — часть 2

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

полнота

антисимметричность

транзитивность

Page 33: ИТМО Machine Learning. Рекомендательные системы — часть 2

Байесовская формулировка

p Θ |>u( )∝ p >u |Θ( ) p Θ( )

p Θ |>u( )u∈U∏ = p i >u j |Θ( )δ (u,i, j )∈DS( )

u,i, j∈U×I×I∏ ⋅

⋅ 1− p i >u j |Θ( )( )δ (u,i, j )∉DS( )

Тогда для всех пользователей запишем:

p Θ |>u( )u∈U∏ = p i >u j |Θ( )

u,i, j∈Ds∏

Тогда по свойствам порядка это можно упростить:

Page 34: ИТМО Machine Learning. Рекомендательные системы — часть 2

Preference model

p i >u j |Θ( ) =σ (x̂uij (Θ))

Окончательно определим модель как:

Здесь x̂uij — «встроенная» модель, которая отслеживает

связь между u, i и j. Например,

-  матричное разложение

-  модель kNN

Page 35: ИТМО Machine Learning. Рекомендательные системы — часть 2

BPR-Opt

p Θ( ) = N(0,ΣΘ )Предположим, наконец, априорное распределение параметров:

Тогда весь алгоритм: BPR−Opt := ln p Θ |>u( )= ln p >u |Θ( ) p(Θ)= ln σ x̂uij Θ( )( ) p Θ( )

(u,i, j )∈Ds∏

= ln(u,i, j )∈Ds∑ σ x̂uij Θ( )( )+ ln p Θ( )

= ln(u,i, j )∈Ds∑ σ x̂uij Θ( )( )−λΘ Θ

2

Page 36: ИТМО Machine Learning. Рекомендательные системы — часть 2

LearnBPR

1.  Инициализируем параметры Θ 2.  Пока не достигнута сходимость:

1.  Выберем пример из Ds

3. Вернем финальные параметры

Θ←Θ+αexp(−x̂uij )1+ exp(−x̂uij )

⋅∂∂Θ

x̂uij +λΘΘ&

'((

)

*++2.

Page 37: ИТМО Machine Learning. Рекомендательные системы — часть 2

Еще раз о модели рейтинга

Распишем x̂uij = x̂ui − x̂uj

В случае разложения матриц

x̂ui = wu,hi = wuf hiff =1

k

Тогда производные распишутся как

∂x̂uij∂θ

=

(hif − hjf )

wuf

−wuf

0

если θ = wuf

если θ = hifесли θ = hjfиначе

Page 38: ИТМО Machine Learning. Рекомендательные системы — часть 2

If you like this lecture you will like these books

Page 39: ИТМО Machine Learning. Рекомендательные системы — часть 2

If you like this lecture you will probably like

http://www.4ducks.ru/pages/itmo-rs-2014.html

Page 40: ИТМО Machine Learning. Рекомендательные системы — часть 2

Удачи! Андрей Данильченко группа разработки рекомендательных систем, Яндекс [email protected]

http://www.4ducks.ru/itmo-ml-course-recsys-part-2.html