SlideShare a Scribd company logo
1 of 36
Download to read offline
Рекомендательные 
системы 
Лекция №3: 
SVD environment 
Андрей Данильченко 
8 ноября 2014
Структура 
• Demo 
• Таксономия 
• Similar items & candidate selection 
• Как строить 
• Как искать 
• metric trees 
• LSH, ALSH
Demo 
https://github.com/cloudera/oryx
Архитектура системы
Audioscrobbler dataset (2005) 
• 148 111 пользователей 
• 1 631 028 исполнителей 
• 24 296 858 «событий» 
http://www-etud.iro.umontreal.ca/~bergstrj/audioscrobbler_data.html
Давайте попробуем!
Таксономия 
• Koren’s 
• Tag
Таксономия 
Koren’s
Items are not alone!
Baseline model revisited 
Модель: 
rˆuui =μ + bu + bi 
argmin 
p*q*b* 
Σ ( 2 
r−μ − b− b) 
uui u i (u,i )∈R 
( 2 + b2 ) 
i 
+λ bu 
Функция ошибки:
Baseline taxonomy 
Таксономия: 
дан трек i, его исполнитель artist(i) и жанры G(i) 
Модель: 
ˆ rui =μ + bu + Bi 
argmin 
p*q*b* 
где Σ 
Σ ( 2 
r−μ − b− B) 
uui u i (u,i )∈R 
( 2 + B2 ) 
i 
+λ bu 
Функция ошибки: 
Bi = bi + bartist (i ) + 
1 
G(i) 
bg 
g∈G(i )
SVD taxonomy 
Таксономия: 
дан трек i, его исполнитель artist(i) и жанры G(i) 
Модель: 
TQi 
ˆ rui =μ + bu + Bi + pu 
argmin 
p*q*b* 
Σ 2 
( r−μ − b− B− pTQ) 
uui u i u 
i (u,i )∈R 
( 2 + B2 ) 
i 
+λ bu 
2 + pu 
2 +Qi 
Функция ошибки: 
Bi = bi + bartist (i ) + 
1 
G(i) 
bg 
Σ 
g∈G(i ) 
где 
Qi = qi + qartist (i ) + 
1 
G(i) 
qg 
Σ 
g∈G(i )
Таксономия 
Tag
ALS revisited 
Модель: 
Tqi 
rˆuui = pu 
argmin 
p*q*b* 
Σ 2 
( r− pTq) 
uui u 
i (u,i )∈R 
2 ( ) 
+λ pu 
2 
+ qi 
Функция ошибки: 
P-step: 
pu = λnuI + Au ( )−1 du 
Au =Q[u]TQ[u] = qiqi 
T 
Σ 
i:(u,i)∈R 
Σ 
d =Q[u]T ru = ruiqi 
i:(u,i)∈R 
Q-step: 
qi = λniI + Ai ( )−1 di 
Ai = P[i]T P[i] = pupu 
T 
Σ 
u:(u,i)∈R 
Σ 
di = P[i]T ri = rui pu 
u:(u,i)∈R
ALS graph 
users 
items
ALS graph 
1 
2 
3 
users 
items 
1 
2 
3 
links
Taxonomy idea 
1 
2 
3 
links users 
items 
1 
2 
3
Similarities & candidates 
Metric trees
Similarities 
Inner product: sij = qi 
Tqj 
Cosine distance: sij = 
qTqi 
j 
qqi j 
L2 distance: sij = qik − qjk ( )2 
k Σ 
= qi − qj 
2
Как быстро находить 
кандидатов?
Metric tree idea
Metric tree construction 
function TreeNode kdTree(points, depth) { 
int axis = depth mod k; 
select median by axis from points; 
TreeNode node; 
node.location = median; 
node.left = kdTree(points before median, depth+1); 
node.right = kdTree(points after median, depth+1); 
return node; 
} 
Работает за O(n logn)
Nearest neighbor search in KD tree 
1. Спускаемся по дереву до листа 
2. Назначаем его «лучшим» 
3. Поднимаемся вверх по дереву: 
1. Если текущий элемент ближе, то он становится «лучшим» 
2. Проверяем, могут ли быть более близкие элементы в другом 
поддереве 
• Если да, то выполняем такой же рекурсивный поиск в поддереве 
• Если нет — поднимаемся выше 
4. Если дошли до корня, выводим «лучший» 
Работает за O(logn)
А что делать с косинусным 
расстоянием?
А что делать с поиском 
кандидатов?
Преобразование пространства 
φ = maxi yi MIP => NN: 
T ( )T 
g(yi ) = φ 2 − yi 
2 , yi 
h(x) = 0, xT ( )T 
Тогда j = argmin 
i 
h(x)− g(yi ) 2 = argmax 
i 
x ⋅ yi 
То есть получилось сведение MIP к NN 
Можно построить и обратные преобразования!
Эвристика для поиска в дереве 
• Построим PCA-tree— kd-tree по осям главных 
компонент 
• Пронумеруем листы в дереве двоичными 
числами 
• Будем искать соседей только с расстоянием 
Хэмминга 1
Similarities & candidates 
Locality Sensitive Hashing
Locality Sensitive Hashing Family 
Введем такое семейство хэш-функций H , что 
x, y ∈ ℜдля любых n 
если sim(x, y) > S0 то PH (h(x) = h(y)) ≥ p1 
если sim(x, y) < cS0 то PH (h(x) = h(y)) < p2 
Требуется и 
c <1 p1 < p2 
Возьмем k хэшей из H и составим мета-хэш Bi (x) 
Таких мета-хэшей посчитаем L штук независимо.
Search for LSH 
• Pre-processing: 
– По всей базе посчитаем значения всех мета-хэшей 
• Query: 
– Посчитаем для вектора-запроса мета-хэши и вернем все исходные 
вектора, у которых совпал хотя бы один мета-хэш 
Поиск работает за O ( n с памяти p logn) O(n1+p ) 
p = 
log p1 
log p2 
<1
LSH for L2 
L2 = 
ha,b 
aT x + b 
r 
! 
# 
# 
$ !" Хэш-функция из H: 
ai ~ N (0,1) 
b ~U(0,1) 
r общая для всех 
(хорошо работают маленькие)
Но это для L2!
Asymmetric LSH Family 
Введем такое семейство хэш-функций H , что 
x, y ∈ ℜдля любых n 
если sim(q, x) > S0 то PH (h(Q(q)) = h(P(x))) ≥ p1 
если sim(q, x) < cS0 то PH (h(Q(q)) = h(P(x))) < p2 
Требуется и 
c <1 p1 < p2 
Дальше аналогично составим мета-хэши 
и построим поиск
Преобразования пространства 
P(x) = x, x 2 , x 4… x 2m ( ) 
2…1 
2 ( ) 
Q(q) = q, 1 
2 
, 1
Доказательство 
P(x) = x, x 2 , x 4… x 2m ( ) 
2…1 
2 ( ) 
Q(q) = q, 1 
2 
, 1 
Положим xi ≤U <1 
q =1 
Тогда P(x) 2 = x 2 + x 4 +…+ x 2m + x 2m+1 ( ) 
Q(q) 2 = q 2 + 
m 
4 
=1+ 
m 
4 
Q(q)T P(x) = qT x + 
1 
2 
x 2 + x 4 +…+ x 2m ( ) 
В итоге Q(q)− P(x) 2 = 1+ 
m 
4 
" 
# $ 
% 
& ' 
− 2qT x + x 2m 
argmin Q(q)− P(x) 2 ≈ argmaxqT x
Андрей Данильченко 
разработчик 
www.4ducks.ru

More Related Content

What's hot

Лекция 6. Фибоначчиевы кучи (Fibonacci heaps)
Лекция 6. Фибоначчиевы кучи (Fibonacci heaps)Лекция 6. Фибоначчиевы кучи (Fibonacci heaps)
Лекция 6. Фибоначчиевы кучи (Fibonacci heaps)Mikhail Kurnosov
 
Лекция №15. Методы программирования. Предмет "Структуры и алгоритмы обработки...
Лекция №15. Методы программирования. Предмет "Структуры и алгоритмы обработки...Лекция №15. Методы программирования. Предмет "Структуры и алгоритмы обработки...
Лекция №15. Методы программирования. Предмет "Структуры и алгоритмы обработки...Nikolay Grebenshikov
 
Лекция №13. Графы: сильно связные компоненты и остовные деревья. Предмет "Стр...
Лекция №13. Графы: сильно связные компоненты и остовные деревья. Предмет "Стр...Лекция №13. Графы: сильно связные компоненты и остовные деревья. Предмет "Стр...
Лекция №13. Графы: сильно связные компоненты и остовные деревья. Предмет "Стр...Nikolay Grebenshikov
 
Лекция №11. Работа с внешней памятью (файлами). Предмет "Структуры и алгоритм...
Лекция №11. Работа с внешней памятью (файлами). Предмет "Структуры и алгоритм...Лекция №11. Работа с внешней памятью (файлами). Предмет "Структуры и алгоритм...
Лекция №11. Работа с внешней памятью (файлами). Предмет "Структуры и алгоритм...Nikolay Grebenshikov
 
Лекция 4. Стеки и очереди
Лекция 4. Стеки и очередиЛекция 4. Стеки и очереди
Лекция 4. Стеки и очередиMikhail Kurnosov
 
Лекция №14. Графы: кратчайшие пути и максимальные потоки. Предмет "Структуры ...
Лекция №14. Графы: кратчайшие пути и максимальные потоки. Предмет "Структуры ...Лекция №14. Графы: кратчайшие пути и максимальные потоки. Предмет "Структуры ...
Лекция №14. Графы: кратчайшие пути и максимальные потоки. Предмет "Структуры ...Nikolay Grebenshikov
 
Лекция 11. Методы разработки алгоритмов
Лекция 11. Методы разработки алгоритмовЛекция 11. Методы разработки алгоритмов
Лекция 11. Методы разработки алгоритмовMikhail Kurnosov
 
Pony ORM - маппер нового поколения (Алексей Малашкевич и Александр Козловский)
Pony ORM - маппер нового поколения (Алексей Малашкевич и Александр Козловский)Pony ORM - маппер нового поколения (Алексей Малашкевич и Александр Козловский)
Pony ORM - маппер нового поколения (Алексей Малашкевич и Александр Козловский)IT-Доминанта
 
Лекция 4: Стек. Очередь
Лекция 4: Стек. ОчередьЛекция 4: Стек. Очередь
Лекция 4: Стек. ОчередьMikhail Kurnosov
 
Highload. Создание специализированных высокопроизводительных индексов
Highload. Создание специализированных высокопроизводительных индексовHighload. Создание специализированных высокопроизводительных индексов
Highload. Создание специализированных высокопроизводительных индексовAlexander Byndyu
 
Лекция 13: Трудноразрешимые задачи. NP-полнота.
Лекция 13: Трудноразрешимые задачи. NP-полнота.Лекция 13: Трудноразрешимые задачи. NP-полнота.
Лекция 13: Трудноразрешимые задачи. NP-полнота.Mikhail Kurnosov
 
Лекция 10. Графы. Остовные деревья минимальной стоимости
Лекция 10. Графы. Остовные деревья минимальной стоимостиЛекция 10. Графы. Остовные деревья минимальной стоимости
Лекция 10. Графы. Остовные деревья минимальной стоимостиMikhail Kurnosov
 
Лекция 10: Графы. Остовные деревья минимальной стоимости
Лекция 10: Графы. Остовные деревья минимальной стоимостиЛекция 10: Графы. Остовные деревья минимальной стоимости
Лекция 10: Графы. Остовные деревья минимальной стоимостиMikhail Kurnosov
 
Лекция 1. Анализ эффективности алгоритмов
Лекция 1. Анализ эффективности алгоритмовЛекция 1. Анализ эффективности алгоритмов
Лекция 1. Анализ эффективности алгоритмовMikhail Kurnosov
 
Лекция 8: Графы. Обходы графов
Лекция 8: Графы. Обходы графовЛекция 8: Графы. Обходы графов
Лекция 8: Графы. Обходы графовMikhail Kurnosov
 
Алгоритмы и структуры данных осень 2013 лекция 1
Алгоритмы и структуры данных осень 2013 лекция 1Алгоритмы и структуры данных осень 2013 лекция 1
Алгоритмы и структуры данных осень 2013 лекция 1Technopark
 
Haskell Type System with Dzmitry Ivashnev.
Haskell Type System with Dzmitry Ivashnev.Haskell Type System with Dzmitry Ivashnev.
Haskell Type System with Dzmitry Ivashnev.Sergey Tihon
 

What's hot (20)

Лекция 6. Фибоначчиевы кучи (Fibonacci heaps)
Лекция 6. Фибоначчиевы кучи (Fibonacci heaps)Лекция 6. Фибоначчиевы кучи (Fibonacci heaps)
Лекция 6. Фибоначчиевы кучи (Fibonacci heaps)
 
Java8. Innovations
Java8. InnovationsJava8. Innovations
Java8. Innovations
 
Лекция №15. Методы программирования. Предмет "Структуры и алгоритмы обработки...
Лекция №15. Методы программирования. Предмет "Структуры и алгоритмы обработки...Лекция №15. Методы программирования. Предмет "Структуры и алгоритмы обработки...
Лекция №15. Методы программирования. Предмет "Структуры и алгоритмы обработки...
 
Sequence recommenders
Sequence recommendersSequence recommenders
Sequence recommenders
 
Лекция №13. Графы: сильно связные компоненты и остовные деревья. Предмет "Стр...
Лекция №13. Графы: сильно связные компоненты и остовные деревья. Предмет "Стр...Лекция №13. Графы: сильно связные компоненты и остовные деревья. Предмет "Стр...
Лекция №13. Графы: сильно связные компоненты и остовные деревья. Предмет "Стр...
 
Лекция №11. Работа с внешней памятью (файлами). Предмет "Структуры и алгоритм...
Лекция №11. Работа с внешней памятью (файлами). Предмет "Структуры и алгоритм...Лекция №11. Работа с внешней памятью (файлами). Предмет "Структуры и алгоритм...
Лекция №11. Работа с внешней памятью (файлами). Предмет "Структуры и алгоритм...
 
Лекция 4. Стеки и очереди
Лекция 4. Стеки и очередиЛекция 4. Стеки и очереди
Лекция 4. Стеки и очереди
 
Лекция №14. Графы: кратчайшие пути и максимальные потоки. Предмет "Структуры ...
Лекция №14. Графы: кратчайшие пути и максимальные потоки. Предмет "Структуры ...Лекция №14. Графы: кратчайшие пути и максимальные потоки. Предмет "Структуры ...
Лекция №14. Графы: кратчайшие пути и максимальные потоки. Предмет "Структуры ...
 
Лекция 11. Методы разработки алгоритмов
Лекция 11. Методы разработки алгоритмовЛекция 11. Методы разработки алгоритмов
Лекция 11. Методы разработки алгоритмов
 
Pony ORM - маппер нового поколения (Алексей Малашкевич и Александр Козловский)
Pony ORM - маппер нового поколения (Алексей Малашкевич и Александр Козловский)Pony ORM - маппер нового поколения (Алексей Малашкевич и Александр Козловский)
Pony ORM - маппер нового поколения (Алексей Малашкевич и Александр Козловский)
 
Лекция 4: Стек. Очередь
Лекция 4: Стек. ОчередьЛекция 4: Стек. Очередь
Лекция 4: Стек. Очередь
 
Highload. Создание специализированных высокопроизводительных индексов
Highload. Создание специализированных высокопроизводительных индексовHighload. Создание специализированных высокопроизводительных индексов
Highload. Создание специализированных высокопроизводительных индексов
 
Лекция 13: Трудноразрешимые задачи. NP-полнота.
Лекция 13: Трудноразрешимые задачи. NP-полнота.Лекция 13: Трудноразрешимые задачи. NP-полнота.
Лекция 13: Трудноразрешимые задачи. NP-полнота.
 
Лекция 10. Графы. Остовные деревья минимальной стоимости
Лекция 10. Графы. Остовные деревья минимальной стоимостиЛекция 10. Графы. Остовные деревья минимальной стоимости
Лекция 10. Графы. Остовные деревья минимальной стоимости
 
Лекция 10: Графы. Остовные деревья минимальной стоимости
Лекция 10: Графы. Остовные деревья минимальной стоимостиЛекция 10: Графы. Остовные деревья минимальной стоимости
Лекция 10: Графы. Остовные деревья минимальной стоимости
 
Лекция 1. Анализ эффективности алгоритмов
Лекция 1. Анализ эффективности алгоритмовЛекция 1. Анализ эффективности алгоритмов
Лекция 1. Анализ эффективности алгоритмов
 
Синтез функциональных программ при помощи метода дедуктивных таблиц
Синтез функциональных программ при помощи метода дедуктивных таблицСинтез функциональных программ при помощи метода дедуктивных таблиц
Синтез функциональных программ при помощи метода дедуктивных таблиц
 
Лекция 8: Графы. Обходы графов
Лекция 8: Графы. Обходы графовЛекция 8: Графы. Обходы графов
Лекция 8: Графы. Обходы графов
 
Алгоритмы и структуры данных осень 2013 лекция 1
Алгоритмы и структуры данных осень 2013 лекция 1Алгоритмы и структуры данных осень 2013 лекция 1
Алгоритмы и структуры данных осень 2013 лекция 1
 
Haskell Type System with Dzmitry Ivashnev.
Haskell Type System with Dzmitry Ivashnev.Haskell Type System with Dzmitry Ivashnev.
Haskell Type System with Dzmitry Ivashnev.
 

Similar to ITMO RecSys course. Autumn 2014. Lecture 3

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
 
Pyton – пробуем функциональный стиль
Pyton – пробуем функциональный стильPyton – пробуем функциональный стиль
Pyton – пробуем функциональный стильPython Meetup
 
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
 
Лекция №10 "Алгоритмические композиции. Завершение"
Лекция №10 "Алгоритмические композиции. Завершение" Лекция №10 "Алгоритмические композиции. Завершение"
Лекция №10 "Алгоритмические композиции. Завершение" Technosphere1
 
Лекция о языке программирования Haskell
Лекция о языке программирования HaskellЛекция о языке программирования Haskell
Лекция о языке программирования Haskellhusniyarova
 
Функциональное программирование на F#
Функциональное программирование на F#Функциональное программирование на F#
Функциональное программирование на F#akrakovetsky
 
ИТМО Machine Learning 2015. Рекомендательные системы
ИТМО Machine Learning 2015. Рекомендательные системыИТМО Machine Learning 2015. Рекомендательные системы
ИТМО Machine Learning 2015. Рекомендательные системыAndrey Danilchenko
 
Факторизационные модели в рекомендательных системах
Факторизационные модели в рекомендательных системахФакторизационные модели в рекомендательных системах
Факторизационные модели в рекомендательных системахromovpa
 
ИТМО Machine Learning. Рекомендательные системы — часть 1
ИТМО Machine Learning. Рекомендательные системы — часть 1ИТМО Machine Learning. Рекомендательные системы — часть 1
ИТМО Machine Learning. Рекомендательные системы — часть 1Andrey Danilchenko
 
Лекция 11: Методы разработки алгоритмов
Лекция 11: Методы разработки алгоритмовЛекция 11: Методы разработки алгоритмов
Лекция 11: Методы разработки алгоритмовMikhail Kurnosov
 
L5: Л5 Байесовские алгоритмы
L5: Л5 Байесовские алгоритмыL5: Л5 Байесовские алгоритмы
L5: Л5 Байесовские алгоритмыTechnosphere1
 
Математическое обоснование S.O.L.I.D принципов
Математическое обоснование S.O.L.I.D принциповМатематическое обоснование S.O.L.I.D принципов
Математическое обоснование S.O.L.I.D принциповetyumentcev
 
Мир Python функционалим с помощью библиотек
Мир Python  функционалим с помощью библиотекМир Python  функционалим с помощью библиотек
Мир Python функционалим с помощью библиотекPyNSK
 
Лекция №5 "Обработка текстов, Naive Bayes"
Лекция №5 "Обработка текстов, Naive Bayes" Лекция №5 "Обработка текстов, Naive Bayes"
Лекция №5 "Обработка текстов, Naive Bayes" Technosphere1
 
Николай Паламарчук "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
 
02 сортировка и поиск
02 сортировка и поиск02 сортировка и поиск
02 сортировка и поискFedor Tsarev
 
чернякова г.в.
чернякова г.в.чернякова г.в.
чернякова г.в.sharikdp
 

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

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
 
Pyton – пробуем функциональный стиль
Pyton – пробуем функциональный стильPyton – пробуем функциональный стиль
Pyton – пробуем функциональный стиль
 
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
 
Лекция №10 "Алгоритмические композиции. Завершение"
Лекция №10 "Алгоритмические композиции. Завершение" Лекция №10 "Алгоритмические композиции. Завершение"
Лекция №10 "Алгоритмические композиции. Завершение"
 
Лекция о языке программирования Haskell
Лекция о языке программирования HaskellЛекция о языке программирования Haskell
Лекция о языке программирования Haskell
 
Функциональное программирование на F#
Функциональное программирование на F#Функциональное программирование на F#
Функциональное программирование на F#
 
ИТМО Machine Learning 2015. Рекомендательные системы
ИТМО Machine Learning 2015. Рекомендательные системыИТМО Machine Learning 2015. Рекомендательные системы
ИТМО Machine Learning 2015. Рекомендательные системы
 
Введение в Learning To Rank
Введение в Learning To RankВведение в Learning To Rank
Введение в Learning To Rank
 
Факторизационные модели в рекомендательных системах
Факторизационные модели в рекомендательных системахФакторизационные модели в рекомендательных системах
Факторизационные модели в рекомендательных системах
 
ИТМО Machine Learning. Рекомендательные системы — часть 1
ИТМО Machine Learning. Рекомендательные системы — часть 1ИТМО Machine Learning. Рекомендательные системы — часть 1
ИТМО Machine Learning. Рекомендательные системы — часть 1
 
Лекция 11: Методы разработки алгоритмов
Лекция 11: Методы разработки алгоритмовЛекция 11: Методы разработки алгоритмов
Лекция 11: Методы разработки алгоритмов
 
L5: Л5 Байесовские алгоритмы
L5: Л5 Байесовские алгоритмыL5: Л5 Байесовские алгоритмы
L5: Л5 Байесовские алгоритмы
 
Математическое обоснование S.O.L.I.D принципов
Математическое обоснование S.O.L.I.D принциповМатематическое обоснование S.O.L.I.D принципов
Математическое обоснование S.O.L.I.D принципов
 
Recsys.hse
Recsys.hseRecsys.hse
Recsys.hse
 
Мир Python функционалим с помощью библиотек
Мир Python  функционалим с помощью библиотекМир Python  функционалим с помощью библиотек
Мир Python функционалим с помощью библиотек
 
Лекция №5 "Обработка текстов, Naive Bayes"
Лекция №5 "Обработка текстов, Naive Bayes" Лекция №5 "Обработка текстов, Naive Bayes"
Лекция №5 "Обработка текстов, Naive Bayes"
 
Николай Паламарчук "Functional Programming basics for PHP developers"
Николай Паламарчук "Functional Programming basics for PHP developers"Николай Паламарчук "Functional Programming basics for PHP developers"
Николай Паламарчук "Functional Programming basics for PHP developers"
 
02 сортировка и поиск
02 сортировка и поиск02 сортировка и поиск
02 сортировка и поиск
 
чернякова г.в.
чернякова г.в.чернякова г.в.
чернякова г.в.
 

More from Andrey Danilchenko

ИТМО Machine Learning 2016. Рекомендательные системы
ИТМО Machine Learning 2016. Рекомендательные системыИТМО Machine Learning 2016. Рекомендательные системы
ИТМО Machine Learning 2016. Рекомендательные системы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
 
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 4Andrey Danilchenko
 
ИТМО Machine Learning. Рекомендательные системы — часть 2
ИТМО Machine Learning. Рекомендательные системы — часть 2ИТМО Machine Learning. Рекомендательные системы — часть 2
ИТМО Machine Learning. Рекомендательные системы — часть 2Andrey 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
 
Рекомендательная система: быстрый старт
Рекомендательная система: быстрый стартРекомендательная система: быстрый старт
Рекомендательная система: быстрый стартAndrey Danilchenko
 
Введение в рекомендательные системы
Введение в рекомендательные системыВведение в рекомендательные системы
Введение в рекомендательные системыAndrey Danilchenko
 

More from Andrey Danilchenko (8)

ИТМО Machine Learning 2016. Рекомендательные системы
ИТМО Machine Learning 2016. Рекомендательные системыИТМО Machine Learning 2016. Рекомендательные системы
ИТМО Machine Learning 2016. Рекомендательные системы
 
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
 
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
 
ИТМО Machine Learning. Рекомендательные системы — часть 2
ИТМО Machine Learning. Рекомендательные системы — часть 2ИТМО Machine Learning. Рекомендательные системы — часть 2
ИТМО Machine Learning. Рекомендательные системы — часть 2
 
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
 
Cs center-intern-autumn2014
Cs center-intern-autumn2014Cs center-intern-autumn2014
Cs center-intern-autumn2014
 
Рекомендательная система: быстрый старт
Рекомендательная система: быстрый стартРекомендательная система: быстрый старт
Рекомендательная система: быстрый старт
 
Введение в рекомендательные системы
Введение в рекомендательные системыВведение в рекомендательные системы
Введение в рекомендательные системы
 

ITMO RecSys course. Autumn 2014. Lecture 3

  • 1. Рекомендательные системы Лекция №3: SVD environment Андрей Данильченко 8 ноября 2014
  • 2. Структура • Demo • Таксономия • Similar items & candidate selection • Как строить • Как искать • metric trees • LSH, ALSH
  • 5. Audioscrobbler dataset (2005) • 148 111 пользователей • 1 631 028 исполнителей • 24 296 858 «событий» http://www-etud.iro.umontreal.ca/~bergstrj/audioscrobbler_data.html
  • 9. Items are not alone!
  • 10. Baseline model revisited Модель: rˆuui =μ + bu + bi argmin p*q*b* Σ ( 2 r−μ − b− b) uui u i (u,i )∈R ( 2 + b2 ) i +λ bu Функция ошибки:
  • 11. Baseline taxonomy Таксономия: дан трек i, его исполнитель artist(i) и жанры G(i) Модель: ˆ rui =μ + bu + Bi argmin p*q*b* где Σ Σ ( 2 r−μ − b− B) uui u i (u,i )∈R ( 2 + B2 ) i +λ bu Функция ошибки: Bi = bi + bartist (i ) + 1 G(i) bg g∈G(i )
  • 12. SVD taxonomy Таксономия: дан трек i, его исполнитель artist(i) и жанры G(i) Модель: TQi ˆ rui =μ + bu + Bi + pu argmin p*q*b* Σ 2 ( r−μ − b− B− pTQ) uui u i u i (u,i )∈R ( 2 + B2 ) i +λ bu 2 + pu 2 +Qi Функция ошибки: Bi = bi + bartist (i ) + 1 G(i) bg Σ g∈G(i ) где Qi = qi + qartist (i ) + 1 G(i) qg Σ g∈G(i )
  • 14. ALS revisited Модель: Tqi rˆuui = pu argmin p*q*b* Σ 2 ( r− pTq) uui u i (u,i )∈R 2 ( ) +λ pu 2 + qi Функция ошибки: P-step: pu = λnuI + Au ( )−1 du Au =Q[u]TQ[u] = qiqi T Σ i:(u,i)∈R Σ d =Q[u]T ru = ruiqi i:(u,i)∈R Q-step: qi = λniI + Ai ( )−1 di Ai = P[i]T P[i] = pupu T Σ u:(u,i)∈R Σ di = P[i]T ri = rui pu u:(u,i)∈R
  • 16. ALS graph 1 2 3 users items 1 2 3 links
  • 17. Taxonomy idea 1 2 3 links users items 1 2 3
  • 19. Similarities Inner product: sij = qi Tqj Cosine distance: sij = qTqi j qqi j L2 distance: sij = qik − qjk ( )2 k Σ = qi − qj 2
  • 20. Как быстро находить кандидатов?
  • 22. Metric tree construction function TreeNode kdTree(points, depth) { int axis = depth mod k; select median by axis from points; TreeNode node; node.location = median; node.left = kdTree(points before median, depth+1); node.right = kdTree(points after median, depth+1); return node; } Работает за O(n logn)
  • 23. Nearest neighbor search in KD tree 1. Спускаемся по дереву до листа 2. Назначаем его «лучшим» 3. Поднимаемся вверх по дереву: 1. Если текущий элемент ближе, то он становится «лучшим» 2. Проверяем, могут ли быть более близкие элементы в другом поддереве • Если да, то выполняем такой же рекурсивный поиск в поддереве • Если нет — поднимаемся выше 4. Если дошли до корня, выводим «лучший» Работает за O(logn)
  • 24. А что делать с косинусным расстоянием?
  • 25. А что делать с поиском кандидатов?
  • 26. Преобразование пространства φ = maxi yi MIP => NN: T ( )T g(yi ) = φ 2 − yi 2 , yi h(x) = 0, xT ( )T Тогда j = argmin i h(x)− g(yi ) 2 = argmax i x ⋅ yi То есть получилось сведение MIP к NN Можно построить и обратные преобразования!
  • 27. Эвристика для поиска в дереве • Построим PCA-tree— kd-tree по осям главных компонент • Пронумеруем листы в дереве двоичными числами • Будем искать соседей только с расстоянием Хэмминга 1
  • 28. Similarities & candidates Locality Sensitive Hashing
  • 29. Locality Sensitive Hashing Family Введем такое семейство хэш-функций H , что x, y ∈ ℜдля любых n если sim(x, y) > S0 то PH (h(x) = h(y)) ≥ p1 если sim(x, y) < cS0 то PH (h(x) = h(y)) < p2 Требуется и c <1 p1 < p2 Возьмем k хэшей из H и составим мета-хэш Bi (x) Таких мета-хэшей посчитаем L штук независимо.
  • 30. Search for LSH • Pre-processing: – По всей базе посчитаем значения всех мета-хэшей • Query: – Посчитаем для вектора-запроса мета-хэши и вернем все исходные вектора, у которых совпал хотя бы один мета-хэш Поиск работает за O ( n с памяти p logn) O(n1+p ) p = log p1 log p2 <1
  • 31. LSH for L2 L2 = ha,b aT x + b r ! # # $ !" Хэш-функция из H: ai ~ N (0,1) b ~U(0,1) r общая для всех (хорошо работают маленькие)
  • 33. Asymmetric LSH Family Введем такое семейство хэш-функций H , что x, y ∈ ℜдля любых n если sim(q, x) > S0 то PH (h(Q(q)) = h(P(x))) ≥ p1 если sim(q, x) < cS0 то PH (h(Q(q)) = h(P(x))) < p2 Требуется и c <1 p1 < p2 Дальше аналогично составим мета-хэши и построим поиск
  • 34. Преобразования пространства P(x) = x, x 2 , x 4… x 2m ( ) 2…1 2 ( ) Q(q) = q, 1 2 , 1
  • 35. Доказательство P(x) = x, x 2 , x 4… x 2m ( ) 2…1 2 ( ) Q(q) = q, 1 2 , 1 Положим xi ≤U <1 q =1 Тогда P(x) 2 = x 2 + x 4 +…+ x 2m + x 2m+1 ( ) Q(q) 2 = q 2 + m 4 =1+ m 4 Q(q)T P(x) = qT x + 1 2 x 2 + x 4 +…+ x 2m ( ) В итоге Q(q)− P(x) 2 = 1+ m 4 " # $ % & ' − 2qT x + x 2m argmin Q(q)− P(x) 2 ≈ argmaxqT x