Post on 07-Jul-2015
description
Рекомендательные системы Лекция №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