ITMO RecSys course. Autumn 2014. Lecture 2

Post on 07-Jul-2015

168 views 2 download

description

ITMO RecSys course. Autumn 2014. Lecture 2: SVD continued. Advanced SVD methods: iALS, ALS1, iALS1, rankALS. Explanations for SVD recommendations

Transcript of ITMO RecSys course. Autumn 2014. Lecture 2

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

Андрей Данильченко 25 октября 2014

Структура

•  Advanced SVD methods •  iALS •  ALS1, iALS1 •  rankALS

•  Explanations for SVD

Advanced SVD methods

•  iALS

•  ALS1-optimization

•  rankALS

Advanced SVD methods

iALS

SVD revisited

Модель: ruiu = µ + bu + bi + pu

Tqi

argminp*q*b*

ruiu −µ − bu − bi − puTqi( )

(u,i)∈R∑

2+λ pu

2+ qi

2+ bu

2 + bi2( )

Функция ошибки:

SVD revisited

Модель: ruiu = µ + bu + bi + pu

Tqi

argminp*q*b*

ruiu −µ − bu − bi − puTqi( )

(u,i)∈R∑

2+λ pu

2+ qi

2+ bu

2 + bi2( )

Функция ошибки:

Но что такое ? ruiu

Как использовать implicit feedback?

Implicit feedback prediction

Идея: rating => (preference, confidence)

pui ∈ {0,1}

cui ∈ℜ+

∀(u, i)∈ R

cui =1+αrui

pui =1

pui = 0 иначе

или cui =1+α log 1+

ruiβ( )

Implicit SVD model

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:

Implicit SVD model

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( )Yпричем в всего ненулевых элементов, Cu − I nu

так же в всего ненулевых элементов, Cup(u) nu

а не зависит от пользователя! Y TY

Итого: обновляем вектора пользователей за

O f 2N + f 3 U( )

Интуиция 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-шаг в упрощенной форме:

Интуиция iALS — продолжение

Как выбирать и ? c0 p0

Интуиция iALS — продолжение

Как выбирать и ? c0 p0

∀(u, i)∈ N

cui =1+αrui

pui =1

pui = 0 иначе

Как и раньше:

Интуиция iALS — продолжение

Как выбирать и ? c0 p0

∀(u, i)∈ N

cui =1+αrui

pui =1

pui = 0 иначе

Как и раньше:

c0 =1

p0 = 0

Advanced SVD methods

ALS1-optimization

Ridge regression

Модель: yi ← wT xiwTw→ 0

argminw

yi −wT xi( )

2+λwTw

i=1

n

∑#

$%

&

'(

Функция ошибки:

Точное решение: w = λI + XTX( )

−1XT y = λI + A( )−1 d

A = XTXd = XT y

ALS revisited

Модель: ruiu = pu

Tqi

argminp*q*b*

ruiu − puTqi( )

(u,i)∈R∑

2+λ pu

2+ qi

2( )Функция ошибки:

P-step: pu = λnuI + Au( )−1 duAu =Q[u]

TQ[u]= qiqiT

i: u,i( )∈R∑

d =Q[u]T ru = ruiqii: 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∑

Ridge regression (RR1 optimization)

Модель: yi ← wT xiwTw→ 0

argminw

λwTw+ wT xi − yi( )2

i=1

n

∑#

$%

&

'(

Функция ошибки:

Покоординатный спуск (по всем k): ∀i=1

n wkxik ≈ yi − wlxill≠k∑

wk ←xikeii=1

n∑

λ + xik xiki=1

n∑( )

ALS1-оптимизация модели SVD

Модель: ruiu = pu

Tqi

argminp*q*b*

ruiu − puTqi( )

(u,i)∈R∑

2+λ pu

2+ qi

2( )Функция ошибки:

P-step: RR1 для pu

Q-step: RR1 для qi

ALS1: разбор P-шага

for k in 1..f:

ei = ei +wkxik

ei = yi +wT xi

wk =cixikeii=1

n∑

λ + cixik xiki=1

n∑( )

ei = ei −wkxik

Итого: обновляем одного пользователя за Полное обновление за

O nu f( )O Nf( )

iALS1

Идея: вместо «синтетического» пользователя будем использовать «синтетический» фидбек

Каждому пользователю сопоставим фидбек: •  positive: поставил всем для •  negative (cancellation): всем для •  negative (synthetic): всем для •  regularization: j-й строке для

pui,cui( ) qi i ∈ N(u)p0,−c0( ) qi i ∈ N(u)

rk,c0( ) gk k ∈1..K0,1( ) λI j ∈1..K

Как считать «синтетические» вектора?

A0 = c0yiT yi

i∑ = SΛST

Разложим матрицу по собственным векторам:

причем в матрица — диагональная Λ K ×K

A0 = SΛST =GTG

G = ΛST

GT = S Λ

вектора g — строки G

d0 =GTr

Аналогично

, откуда получим значения rk

Advanced SVD methods

Rank ALS

Оптимизировать ранжирование для задачи ранжирования — хорошо!

Objective functions

fP Θ( ) = cui rui − rui( )2i∈I∑

u∈U∑

fR Θ( ) = cui s j rui − ruj( )− rui − ruj( )#$ %&2

j∈I∑

i∈I∑

u∈U∑

For prediction:

For ranking (pairwise):

Training prediction

∂fP Θ( )∂pu

= cui qiT pu − rui( )qi

i∈I∑ =

= cuiqiqiT

i∈I∑&

'(

)

*+ pu − cuiruiqi

T

i∈I∑ =

= Aupu − bu

P-шаг:

Время работы: O f 2N + f 3 U( )

Training ranking

∂fR P,Q( )∂pu

= cui s jj∈I∑ qi − qj( )

Tpu − rui − ruj( )%

&'()* qi − qj( )

i∈I∑ =

= sjj∑+

,--

.

/00 cuiqiqi

T

i∑+

,-

.

/0 pu − cuiqi

i∑+

,-

.

/0 sjqj

T

j∑+

,--

.

/00 pu −

− sjqjj∑+

,--

.

/00 cuiqi

T

i∑+

,-

.

/0 pu + cuiqiqi

T

i∑+

,-

.

/0 sjqjqj

T

j∑+

,--

.

/00 pu −

− cuiruii∑+

,-

.

/0 sjqj

j∑+

,--

.

/00− cui

i∑+

,-

.

/0 sjqjruj

j∑+

,--

.

/00=

= !1A − q !qT − !qqT + 1 !A( ) pu − b !1− q!r − r !q+ 1 !b( )

Кто понял?

Training ranking (for user)

∂fR P,Q( )∂pu

= cui s jj∈I∑ qi − qj( )

Tpu − rui − ruj( )%

&'()* qi − qj( )

i∈I∑ =

= sjj∑+

,--

.

/00 cuiqiqi

T

i∑+

,-

.

/0 pu − cuiqi

i∑+

,-

.

/0 sjqj

T

j∑+

,--

.

/00 pu −

− sjqjj∑+

,--

.

/00 cuiqi

T

i∑+

,-

.

/0 pu + cuiqiqi

T

i∑+

,-

.

/0 sjqjqj

T

j∑+

,--

.

/00 pu −

− cuiruii∑+

,-

.

/0 sjqj

j∑+

,--

.

/00− cui

i∑+

,-

.

/0 sjqjruj

j∑+

,--

.

/00=

= !1A − q !qT − !qqT + 1 !A( ) pu − b !1− q!r − r !q+ 1 !b( )

Training ranking (for user)

∂fR P,Q( )∂pu

= cui s jj∈I∑ qi − qj( )

Tpu − rui − ruj( )%

&'()* qi − qj( )

i∈I∑ =

= sjj∑+

,--

.

/00 cuiqiqi

T

i∑+

,-

.

/0 pu − cuiqi

i∑+

,-

.

/0 sjqj

T

j∑+

,--

.

/00 pu −

− sjqjj∑+

,--

.

/00 cuiqi

T

i∑+

,-

.

/0 pu + cuiqiqi

T

i∑+

,-

.

/0 sjqjqj

T

j∑+

,--

.

/00 pu −

− cuiruii∑+

,-

.

/0 sjqj

j∑+

,--

.

/00− cui

i∑+

,-

.

/0 sjqjruj

j∑+

,--

.

/00=

= !1A − q !qT − !qqT + 1 !A( ) pu − b !1− q!r − r !q+ 1 !b( )

Training ranking (for user)

∂fR P,Q( )∂pu

= cui s jj∈I∑ qi − qj( )

Tpu − rui − ruj( )%

&'()* qi − qj( )

i∈I∑ =

= sjj∑+

,--

.

/00 cuiqiqi

T

i∑+

,-

.

/0 pu − cuiqi

i∑+

,-

.

/0 sjqj

T

j∑+

,--

.

/00 pu −

− sjqjj∑+

,--

.

/00 cuiqi

T

i∑+

,-

.

/0 pu + cuiqiqi

T

i∑+

,-

.

/0 sjqjqj

T

j∑+

,--

.

/00 pu −

− cuiruii∑+

,-

.

/0 sjqj

j∑+

,--

.

/00− cui

i∑+

,-

.

/0 sjqjruj

j∑+

,--

.

/00=

= !1A − q !qT − !qqT + 1 !A( ) pu − b !1− q!r − r !q+ 1 !b( )

Нет двойных зависимостей!

Training ranking (for item) ∂fR P,Q( )

∂qi= cuis j pu

j∈I∑ pu

T qi − qj( )− rui − ruj( )%& '(u∈U∑ +

+ cujsi −pu( )j∈I∑ pu

T qj − qi( )− ruj − rui( )%& '(u∈U∑ =

= cui pupuT

u∑)

*+

,

-. sj

j∑)

*++

,

-..qi − cui pupu

T

u∑)

*+

,

-. sjqj

T

j∑)

*++

,

-..−

− cui puruiu∑)

*+

,

-. sj

j∑)

*++

,

-..+ cui s jruj

j∑)

*++

,

-..

u∑ pu)

*++

,

-..−

− pupuT cujqj

j∑)

*++

,

-..

u∑)

*++

,

-..si − pupu

T cujj∑)

*++

,

-..

u∑)

*++

,

-..siqi +

+ cujrujj∑)

*++

,

-..

u∑ pu)

*++

,

-..si − puruj cuj

j∑)

*++

,

-..

u∑)

*++

,

-..si =

= A!1+ Asi( )qi − −A !q− b !1+ p1 − p2 + p3si − bsi( )

А теперь добавим регуляризацию…

Explanations

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

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

Item-based model explanation

rui = wijruij∈Nu

k∑Модель:

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

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

j

ALS explanation

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

rui = siju

u,i( )∈R∑ ruj

Wu = Y TY +λI( )−1

siju = yi

TW uyj

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

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

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

ALS explanation

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

rui = Vuqi( )T Vuqj( )ruju,i( )∈R∑

Wu = Y TY +λI( )−1

siju = yi

TW uyj

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

Wu =VuTVu

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

iALS explanation

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

pui = siju

pui>0∑ cuj puj

Wu = Y TCuY +λI( )−1

siju = yi

TW uyj

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

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

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

ucujj

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

разработчик

www.4ducks.ru