SlideShare a Scribd company logo
Рекомендательные 
системы 
Лекция 1 
Андрей Данильченко 
НИУ ИТМО, 10 ноября 2014
Что такое 
рекомендательная 
система?
5
7
8
│ Recommender Systems 
are software tools and 
techniques providing 
suggestions for items to 
be of use to a user 
F. Ricci “Recommender Systems Handbook” 
9
Количество статей в области 
по данным google scholar (от 2014-10-17)
11
Какие бывают 
рекомендательные 
системы?
Классификация RS 
Available data 
Tags 
& 
Metadata 
User history Content 
Collaborative Content-based 
Hybrid
Данные 
• Рейтинги (explicit feedback) 
• унарные (like) 
• бинарные (like/dislike) 
• числовые (stars) 
• История действий пользователя (implicit feedback) 
• Тэги, метаданные 
• Комментарии, отзывы 
• Друзья
Рекомендательные задачи 
15 
• Predict 
• Recommend 
• Similar
Как построить простую 
рекомендательную 
систему? 
16
User-based kNN 
Как продукт оценили похожие пользователи? 
ˆ rui = 
1 
Ni (u) 
rvi 
Σ 
v∈Ni (u) 
Взвесим вклад каждого 
ˆ rui = 
wuvrvi 
Σ 
v∈Ni (u) 
wuv 
Σ 
v∈Ni (u) 
И нормализуем рейтинги 
ˆ rui = h−1 
wuvh rvi ( ) 
Σ 
v∈Ni (u) 
wuv 
Σ 
v∈Ni (u) 
$ 
&&& 
% 
' 
))) 
(
Как посчитать расстояние? 
Косинусное расстояние 
Корреляция Пирсона 
cos(u, v) = 
ruirvi 
Σ 
i∈Iuv 
Σ r2 
rui 
vj 
i∈Iu 
2 
Σ 
j∈Iv 
PC(u, v) = 
(rui − ru )(rvi − rv ) 
Σ 
i∈Iuv 
Σ (r− r)2 
(r− r)2 
ui u vj v i∈Iu 
Σ 
j∈Iv 
Поправленное косинусное 
расстояние 
(adjusted cosine) 
AC(u, v) = 
(rui − ri )(rvi − ri ) 
Σ 
i∈Iuv 
Σ (r− r)2 
(r− r)2 
ui i vj j i∈Iu 
Σ 
j∈Iv
Как нормализовать рейтинги? 
19 
h rui ( ) = rui − ru 
h rui ( ) = 
rui − ru 
σ u 
h rui ( ) = 
j ∈ Iu : ruj ≤ rui { } 
Iu 
Mean centering 
Z-score 
Percentile score
Как выиграть Netflix Prize?
http://sifter.org/~simon/journal/20061211.html
Singular Value Decomposition 
Теорема: 
если в матрице λ оставить k наибольших элементов, то полученное 
произведение A’ будет наилучшим среди всех матриц ранга k 
приближением матрицы A.
Baseline predictors 
Модель: 
rˆuui =μ + bu + bi 
argmin 
b* 
Σ ( 2 
r−μ − b− b) 
uui u i (u,i )∈R 
Σ 2 + 
Σ 
bi 
+λ bu 
u∈U 
2 
i∈I 
$ 
% & 
' 
( ) 
Функция ошибки:
SVD 
Модель: 
ˆ rui =μ + bu + bi + pu 
Функция ошибки: 
Tqi 
argmin 
p*q*b* 
Σ 2 
( r−μ − b− b− pTq) 
ui u i u 
i (u,i )∈R 
2 ( ) 
+λ pu 
2 
+ qi 
2 
+ bu 
2 + bi
Optimization by SGD 
Модель: 
ˆ rui =μ + bu + bi + pu 
Функция ошибки: 
Tqi 
argmin 
p*q*b* 
Σ 2 
( r−μ − b− b− pTq) 
ui u i u 
i (u,i )∈R 
2 ( ) 
+λ pu 
2 
+ qi 
2 
+ bu 
2 + bi 
Шаг стохастического градиентного спуска: 
bu ←bu +γ1 eui −λ1bu ( ) 
bi ←bi +γ1 eui −λ1bi ( ) 
pu ← pu +γ 2 euiqi −λ2 pu ( ) 
qu ←qi +γ 2 eui pu −λ2qi ( )
Alternating Least Squares 
P-step: обновление при фиксированных векторах item-ов 
pu = λnuI + Au ( )−1 du 
Au =Q[u]TQ[u] = qiqi 
T 
Σ 
i:(u,i)∈R 
Σ 
du =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
Что делать с implicit 
feedback?
Как использовать implicit feedback? 
Идея: rating => (preference, confidence) 
pui ∈ {0,1} 
cui ∈ ℜ+ 
∀(u, i) ∈ R 
pui =1 
pui = 0 иначе 
cui =1+αrui 
или 
cui =1+α log 1+ rui 
( β )
Обучение модели 
argmin 
x*y* 
Σ 2 
T yi ( ) 
cui pui − xu 
(u,i ) 
Σ + yi 
+λ xu 
2 
u 
2 
Σ 
i 
# 
$ % 
& 
' ( 
Функция ошибки: 
xu = (λ I +Y TCuY )−1 
Y TCup(u) 
yi = λ I + XTCi( X)−1 
XTCi p(i) 
Это сводится к уравнениям для ALS:
Обучение модели 
argmin 
x*y* 
Σ 2 
T yi ( ) 
cui pui − xu 
(u,i ) 
Σ + yi 
+λ xu 
2 
u 
2 
Σ 
i 
# 
$ % 
& 
' ( 
Функция ошибки: 
xu = (λ I +Y TCuY )−1 
Y TCup(u) 
yi = λ I + XTCi( X)−1 
XTCi p(i) 
Это сводится к уравнениям для ALS: 
Но есть проблема!
Ускорение iALS 
Идея: 
Y TCuY = Y TY +Y T (Cu − I )Y 
Cu − I 
В матрице всего ненулевых элементов, 
Cup(u) 
в матрице всего ненулевых элементов, 
Y TY 
O f 2N + f 3 ( U ) 
nu 
nu 
а не зависит от пользователя! 
Итого: обновляем вектора пользователей за
Интуиция iALS 
Выпишем ALS-шаг в упрощенной форме: 
xu = (λ I +Y TCuY )−1 
Y TCu p(u) = λ I + Au ( )−1 du 
Введем «нулевого» пользователя без фидбека: 
Σ 
Σ T yd= cpyi 
0 0 0i 
A0 = c0yi 
i 
i 
T yi 
Тогда для остальных пользователей выводим: 
Σ 
Au = A0 + (cui − c0 )yi 
(u,i )∈N(u) 
Σ 
du = d0 + cui pui − c0 p0 ( ) yi 
(u,i)∈N(u)
Как выбирать c0 и p0? 
∀(u, i) ∈ N 
Как и раньше: 
pui =1 
pui = 0 иначе 
cui =1+αrui
Как выбирать c0 и p0? 
∀(u, i) ∈ N 
Как и раньше: 
pui =1 
pui = 0 иначе 
cui =1+αrui 
p0 = 0 
c0 =1
А разве что-то еще 
осталось? 
35
If you like this lecture you will like these books
If you like this lecture you will also like
If you like this lecture you will probably like 
http://www.4ducks.ru/pages/itmo-rs-2014.html
Удачи! 
Андрей Данильченко 
группа разработки рекомендательных систем, Яндекс 
danilchenko@yandex-team.ru

More Related Content

What's hot

Лекция №9 "Алгоритмические композиции. Начало"
Лекция №9 "Алгоритмические композиции. Начало"Лекция №9 "Алгоритмические композиции. Начало"
Лекция №9 "Алгоритмические композиции. Начало"
Technosphere1
 
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
Andrey Danilchenko
 
Лекция №10 "Алгоритмические композиции. Завершение"
Лекция №10 "Алгоритмические композиции. Завершение" Лекция №10 "Алгоритмические композиции. Завершение"
Лекция №10 "Алгоритмические композиции. Завершение"
Technosphere1
 
Структурное обучение и S-SVM
Структурное обучение и S-SVMСтруктурное обучение и S-SVM
Структурное обучение и S-SVM
romovpa
 
Лекция №2 "Задача кластеризации и ЕМ-алгоритм"
Лекция №2 "Задача кластеризации и ЕМ-алгоритм"Лекция №2 "Задача кластеризации и ЕМ-алгоритм"
Лекция №2 "Задача кластеризации и ЕМ-алгоритм"
Technosphere1
 
Лекция №5 "Обработка текстов, Naive Bayes"
Лекция №5 "Обработка текстов, Naive Bayes" Лекция №5 "Обработка текстов, Naive Bayes"
Лекция №5 "Обработка текстов, Naive Bayes"
Technosphere1
 
Решение краевых задач методом конечных элементов
Решение краевых задач методом конечных элементовРешение краевых задач методом конечных элементов
Решение краевых задач методом конечных элементовTheoretical mechanics department
 
Лекция №4 "Задача классификации"
Лекция №4 "Задача классификации"Лекция №4 "Задача классификации"
Лекция №4 "Задача классификации"
Technosphere1
 
L6: Метод опорных векторов
L6: Метод опорных векторовL6: Метод опорных векторов
L6: Метод опорных векторов
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, evaluation
Andrey Danilchenko
 
ITMO RecSys course. Autumn2014. Lecture1
ITMO RecSys course. Autumn2014. Lecture1ITMO RecSys course. Autumn2014. Lecture1
ITMO RecSys course. Autumn2014. Lecture1Andrey Danilchenko
 
Основы MATLAB. Численные методы
Основы MATLAB. Численные методыОсновы MATLAB. Численные методы
Основы MATLAB. Численные методы
Theoretical mechanics department
 
Лекция №8 "Методы снижения размерности пространства"
Лекция №8 "Методы снижения размерности пространства" Лекция №8 "Методы снижения размерности пространства"
Лекция №8 "Методы снижения размерности пространства"
Technosphere1
 
L11: Метод ансамблей
L11: Метод ансамблейL11: Метод ансамблей
L11: Метод ансамблей
Technosphere1
 
L2: Задача классификации и регрессии. Метрики ошибок
L2: Задача классификации и регрессии. Метрики ошибокL2: Задача классификации и регрессии. Метрики ошибок
L2: Задача классификации и регрессии. Метрики ошибок
Technosphere1
 
Лекция №12 "Ограниченная машина Больцмана"
Лекция №12 "Ограниченная машина Больцмана" Лекция №12 "Ограниченная машина Больцмана"
Лекция №12 "Ограниченная машина Больцмана"
Technosphere1
 
L5: Л5 Байесовские алгоритмы
L5: Л5 Байесовские алгоритмыL5: Л5 Байесовские алгоритмы
L5: Л5 Байесовские алгоритмы
Technosphere1
 
L3: Линейная и логистическая регрессия
L3: Линейная и логистическая регрессияL3: Линейная и логистическая регрессия
L3: Линейная и логистическая регрессия
Technosphere1
 
Лекция №1 "Задачи Data Mining"
Лекция №1 "Задачи Data Mining" Лекция №1 "Задачи Data Mining"
Лекция №1 "Задачи Data Mining"
Technosphere1
 

What's hot (20)

Лекция №9 "Алгоритмические композиции. Начало"
Лекция №9 "Алгоритмические композиции. Начало"Лекция №9 "Алгоритмические композиции. Начало"
Лекция №9 "Алгоритмические композиции. Начало"
 
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 "Алгоритмические композиции. Завершение"
 
Структурное обучение и S-SVM
Структурное обучение и S-SVMСтруктурное обучение и S-SVM
Структурное обучение и S-SVM
 
Лекция №2 "Задача кластеризации и ЕМ-алгоритм"
Лекция №2 "Задача кластеризации и ЕМ-алгоритм"Лекция №2 "Задача кластеризации и ЕМ-алгоритм"
Лекция №2 "Задача кластеризации и ЕМ-алгоритм"
 
Лекция №5 "Обработка текстов, Naive Bayes"
Лекция №5 "Обработка текстов, Naive Bayes" Лекция №5 "Обработка текстов, Naive Bayes"
Лекция №5 "Обработка текстов, Naive Bayes"
 
Решение краевых задач методом конечных элементов
Решение краевых задач методом конечных элементовРешение краевых задач методом конечных элементов
Решение краевых задач методом конечных элементов
 
Лекция №4 "Задача классификации"
Лекция №4 "Задача классификации"Лекция №4 "Задача классификации"
Лекция №4 "Задача классификации"
 
Метод конечных разностей
Метод конечных разностейМетод конечных разностей
Метод конечных разностей
 
L6: Метод опорных векторов
L6: Метод опорных векторовL6: Метод опорных векторов
L6: Метод опорных векторов
 
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
 
Основы MATLAB. Численные методы
Основы MATLAB. Численные методыОсновы MATLAB. Численные методы
Основы MATLAB. Численные методы
 
Лекция №8 "Методы снижения размерности пространства"
Лекция №8 "Методы снижения размерности пространства" Лекция №8 "Методы снижения размерности пространства"
Лекция №8 "Методы снижения размерности пространства"
 
L11: Метод ансамблей
L11: Метод ансамблейL11: Метод ансамблей
L11: Метод ансамблей
 
L2: Задача классификации и регрессии. Метрики ошибок
L2: Задача классификации и регрессии. Метрики ошибокL2: Задача классификации и регрессии. Метрики ошибок
L2: Задача классификации и регрессии. Метрики ошибок
 
Лекция №12 "Ограниченная машина Больцмана"
Лекция №12 "Ограниченная машина Больцмана" Лекция №12 "Ограниченная машина Больцмана"
Лекция №12 "Ограниченная машина Больцмана"
 
L5: Л5 Байесовские алгоритмы
L5: Л5 Байесовские алгоритмыL5: Л5 Байесовские алгоритмы
L5: Л5 Байесовские алгоритмы
 
L3: Линейная и логистическая регрессия
L3: Линейная и логистическая регрессияL3: Линейная и логистическая регрессия
L3: Линейная и логистическая регрессия
 
Лекция №1 "Задачи Data Mining"
Лекция №1 "Задачи Data Mining" Лекция №1 "Задачи Data Mining"
Лекция №1 "Задачи Data Mining"
 

Viewers also liked

Xtrem n p1560t
Xtrem n p1560tXtrem n p1560t
Xtrem n p1560t
Devanceiro
 
SECON'2014 - Андрей Устюжанин - Маленькие секреты больших данных
SECON'2014 - Андрей Устюжанин - Маленькие секреты больших данныхSECON'2014 - Андрей Устюжанин - Маленькие секреты больших данных
SECON'2014 - Андрей Устюжанин - Маленькие секреты больших данных
Конференция разработчиков программного обеспечения SECON'2014
 
Большие данные в телеком
Большие данные в телекомБольшие данные в телеком
Большие данные в телеком
glebmikh
 
Юлмарт. История создания, Дмитрий Завалишин (DZ Systems)
Юлмарт. История создания, Дмитрий Завалишин (DZ Systems)Юлмарт. История создания, Дмитрий Завалишин (DZ Systems)
Юлмарт. История создания, Дмитрий Завалишин (DZ Systems)
Ontico
 
Sublinear tolerant property_testing_halfplane
Sublinear tolerant property_testing_halfplaneSublinear tolerant property_testing_halfplane
Sublinear tolerant property_testing_halfplane
Igor Kleiner
 
ИТМО Machine Learning 2015. Рекомендательные системы
ИТМО Machine Learning 2015. Рекомендательные системыИТМО Machine Learning 2015. Рекомендательные системы
ИТМО Machine Learning 2015. Рекомендательные системы
Andrey Danilchenko
 
שיטות הסתברותיות תרגול 6
שיטות הסתברותיות תרגול 6שיטות הסתברותיות תרגול 6
שיטות הסתברותיות תרגול 6
Igor Kleiner
 
Практическое использование «больших данных» в бизнесе
Практическое использование «больших данных» в бизнесеПрактическое использование «больших данных» в бизнесе
Практическое использование «больших данных» в бизнесе
Anton Vokrug
 
Онлайн-революция: от ранних репозиториев – к современным МООС-курсам
Онлайн-революция: от ранних репозиториев – к современным МООС-курсамОнлайн-революция: от ранних репозиториев – к современным МООС-курсам
Онлайн-революция: от ранних репозиториев – к современным МООС-курсам
CEE-SEC(R)
 
51 Use Cases and implications for HPC & Apache Big Data Stack
51 Use Cases and implications for HPC & Apache Big Data Stack51 Use Cases and implications for HPC & Apache Big Data Stack
51 Use Cases and implications for HPC & Apache Big Data Stack
Geoffrey Fox
 
Александр Петров (E-contenta)
Александр Петров (E-contenta)Александр Петров (E-contenta)
Александр Петров (E-contenta)
Edutainme
 
Александр Семенов (НИУ ВШЭ)
Александр Семенов (НИУ ВШЭ)Александр Семенов (НИУ ВШЭ)
Александр Семенов (НИУ ВШЭ)
Edutainme
 
Антон Конушин (НИУ ВШЭ)
Антон Конушин (НИУ ВШЭ)Антон Конушин (НИУ ВШЭ)
Антон Конушин (НИУ ВШЭ)
Edutainme
 
Григорий Бакунов (Яндекс)
Григорий Бакунов (Яндекс)Григорий Бакунов (Яндекс)
Григорий Бакунов (Яндекс)
Edutainme
 
Алексей Натекин (Deloitte)
Алексей Натекин (Deloitte)Алексей Натекин (Deloitte)
Алексей Натекин (Deloitte)
Edutainme
 
Кадомский Сергей - Как продать аналитику бизнесу - Wargaming
Кадомский Сергей - Как продать аналитику бизнесу - WargamingКадомский Сергей - Как продать аналитику бизнесу - Wargaming
Кадомский Сергей - Как продать аналитику бизнесу - Wargaming
WG_ Events
 
NVIDIA Deep Learning.
NVIDIA Deep Learning. NVIDIA Deep Learning.
NVIDIA Deep Learning.
Skolkovo Robotics Center
 
Александра Кирсанова "Использование Data mining"
Александра Кирсанова "Использование Data mining"Александра Кирсанова "Использование Data mining"
Александра Кирсанова "Использование Data mining"
Cossa
 
Григорий Сапунов (eclass)
Григорий Сапунов (eclass)Григорий Сапунов (eclass)
Григорий Сапунов (eclass)
Edutainme
 
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
Andrey Danilchenko
 

Viewers also liked (20)

Xtrem n p1560t
Xtrem n p1560tXtrem n p1560t
Xtrem n p1560t
 
SECON'2014 - Андрей Устюжанин - Маленькие секреты больших данных
SECON'2014 - Андрей Устюжанин - Маленькие секреты больших данныхSECON'2014 - Андрей Устюжанин - Маленькие секреты больших данных
SECON'2014 - Андрей Устюжанин - Маленькие секреты больших данных
 
Большие данные в телеком
Большие данные в телекомБольшие данные в телеком
Большие данные в телеком
 
Юлмарт. История создания, Дмитрий Завалишин (DZ Systems)
Юлмарт. История создания, Дмитрий Завалишин (DZ Systems)Юлмарт. История создания, Дмитрий Завалишин (DZ Systems)
Юлмарт. История создания, Дмитрий Завалишин (DZ Systems)
 
Sublinear tolerant property_testing_halfplane
Sublinear tolerant property_testing_halfplaneSublinear tolerant property_testing_halfplane
Sublinear tolerant property_testing_halfplane
 
ИТМО Machine Learning 2015. Рекомендательные системы
ИТМО Machine Learning 2015. Рекомендательные системыИТМО Machine Learning 2015. Рекомендательные системы
ИТМО Machine Learning 2015. Рекомендательные системы
 
שיטות הסתברותיות תרגול 6
שיטות הסתברותיות תרגול 6שיטות הסתברותיות תרגול 6
שיטות הסתברותיות תרגול 6
 
Практическое использование «больших данных» в бизнесе
Практическое использование «больших данных» в бизнесеПрактическое использование «больших данных» в бизнесе
Практическое использование «больших данных» в бизнесе
 
Онлайн-революция: от ранних репозиториев – к современным МООС-курсам
Онлайн-революция: от ранних репозиториев – к современным МООС-курсамОнлайн-революция: от ранних репозиториев – к современным МООС-курсам
Онлайн-революция: от ранних репозиториев – к современным МООС-курсам
 
51 Use Cases and implications for HPC & Apache Big Data Stack
51 Use Cases and implications for HPC & Apache Big Data Stack51 Use Cases and implications for HPC & Apache Big Data Stack
51 Use Cases and implications for HPC & Apache Big Data Stack
 
Александр Петров (E-contenta)
Александр Петров (E-contenta)Александр Петров (E-contenta)
Александр Петров (E-contenta)
 
Александр Семенов (НИУ ВШЭ)
Александр Семенов (НИУ ВШЭ)Александр Семенов (НИУ ВШЭ)
Александр Семенов (НИУ ВШЭ)
 
Антон Конушин (НИУ ВШЭ)
Антон Конушин (НИУ ВШЭ)Антон Конушин (НИУ ВШЭ)
Антон Конушин (НИУ ВШЭ)
 
Григорий Бакунов (Яндекс)
Григорий Бакунов (Яндекс)Григорий Бакунов (Яндекс)
Григорий Бакунов (Яндекс)
 
Алексей Натекин (Deloitte)
Алексей Натекин (Deloitte)Алексей Натекин (Deloitte)
Алексей Натекин (Deloitte)
 
Кадомский Сергей - Как продать аналитику бизнесу - Wargaming
Кадомский Сергей - Как продать аналитику бизнесу - WargamingКадомский Сергей - Как продать аналитику бизнесу - Wargaming
Кадомский Сергей - Как продать аналитику бизнесу - Wargaming
 
NVIDIA Deep Learning.
NVIDIA Deep Learning. NVIDIA Deep Learning.
NVIDIA Deep Learning.
 
Александра Кирсанова "Использование Data mining"
Александра Кирсанова "Использование Data mining"Александра Кирсанова "Использование Data mining"
Александра Кирсанова "Использование Data mining"
 
Григорий Сапунов (eclass)
Григорий Сапунов (eclass)Григорий Сапунов (eclass)
Григорий Сапунов (eclass)
 
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 ИТМО Machine Learning. Рекомендательные системы — часть 1

Факторизационные модели в рекомендательных системах
Факторизационные модели в рекомендательных системахФакторизационные модели в рекомендательных системах
Факторизационные модели в рекомендательных системах
romovpa
 
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
Andrey Danilchenko
 
Математическое обоснование SOLID принципов - Евгений Тюменцев Dev2Dev v2.0 30...
Математическое обоснование SOLID принципов - Евгений Тюменцев Dev2Dev v2.0 30...Математическое обоснование SOLID принципов - Евгений Тюменцев Dev2Dev v2.0 30...
Математическое обоснование SOLID принципов - Евгений Тюменцев Dev2Dev v2.0 30...
Dev2Dev
 
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
 
Математическое обоснование S.O.L.I.D принципов
Математическое обоснование S.O.L.I.D принциповМатематическое обоснование S.O.L.I.D принципов
Математическое обоснование S.O.L.I.D принципов
etyumentcev
 
20100927 28 reqformalization-kuliamin
20100927 28 reqformalization-kuliamin20100927 28 reqformalization-kuliamin
20100927 28 reqformalization-kuliaminComputer Science Club
 
2013 03 21_bigdata_seminar_05
2013 03 21_bigdata_seminar_052013 03 21_bigdata_seminar_05
2013 03 21_bigdata_seminar_05
Roman Brovko
 
Основы SciPy
Основы SciPyОсновы SciPy
Стажировка 2016-07-08 01 Евгений Тюменцев. S.O.L.I.D.
Стажировка 2016-07-08 01 Евгений Тюменцев. S.O.L.I.D.Стажировка 2016-07-08 01 Евгений Тюменцев. S.O.L.I.D.
Стажировка 2016-07-08 01 Евгений Тюменцев. S.O.L.I.D.
SmartTools
 
20100425 model based_testing_kuliamin_lectures01-03
20100425 model based_testing_kuliamin_lectures01-0320100425 model based_testing_kuliamin_lectures01-03
20100425 model based_testing_kuliamin_lectures01-03Computer Science Club
 
Повседневный С++: алгоритмы и итераторы @ C++ Russia 2017
Повседневный С++: алгоритмы и итераторы @ C++ Russia 2017Повседневный С++: алгоритмы и итераторы @ C++ Russia 2017
Повседневный С++: алгоритмы и итераторы @ C++ Russia 2017
Mikhail Matrosov
 
07 HappyDev-lite-2015 spring. Евгений Тюменцев. Зачем программисту нужно зна...
07 HappyDev-lite-2015 spring. Евгений Тюменцев. Зачем программисту нужно зна...07 HappyDev-lite-2015 spring. Евгений Тюменцев. Зачем программисту нужно зна...
07 HappyDev-lite-2015 spring. Евгений Тюменцев. Зачем программисту нужно зна...
HappyDev-lite
 
2015-04-12 07 Евгений Тюменцев. Зачем программисту нужно знать математику?
2015-04-12 07 Евгений Тюменцев. Зачем программисту нужно знать математику?2015-04-12 07 Евгений Тюменцев. Зачем программисту нужно знать математику?
2015-04-12 07 Евгений Тюменцев. Зачем программисту нужно знать математику?
HappyDev
 
чернякова г.в.
чернякова г.в.чернякова г.в.
чернякова г.в.sharikdp
 
Data Mining in RTB
Data Mining in RTBData Mining in RTB
Data Mining in RTB
Pavel Kalaidin
 
02 сортировка и поиск
02 сортировка и поиск02 сортировка и поиск
02 сортировка и поиск
Fedor Tsarev
 
D-кучи и их применение
D-кучи и их применениеD-кучи и их применение
D-кучи и их применение
DEVTYPE
 
05 динамическое программирование
05 динамическое программирование05 динамическое программирование
05 динамическое программирование
Fedor Tsarev
 
Ошибка. Осознание, примирение, извлечение пользы. Вадим Макишвили
Ошибка. Осознание, примирение, извлечение пользы. Вадим МакишвилиОшибка. Осознание, примирение, извлечение пользы. Вадим Макишвили
Ошибка. Осознание, примирение, извлечение пользы. Вадим Макишвили
Транслируем.бел
 

Similar to ИТМО Machine Learning. Рекомендательные системы — часть 1 (20)

Факторизационные модели в рекомендательных системах
Факторизационные модели в рекомендательных системахФакторизационные модели в рекомендательных системах
Факторизационные модели в рекомендательных системах
 
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
 
Математическое обоснование SOLID принципов - Евгений Тюменцев Dev2Dev v2.0 30...
Математическое обоснование SOLID принципов - Евгений Тюменцев Dev2Dev v2.0 30...Математическое обоснование SOLID принципов - Евгений Тюменцев Dev2Dev v2.0 30...
Математическое обоснование SOLID принципов - Евгений Тюменцев Dev2Dev v2.0 30...
 
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. принципы
 
Математическое обоснование S.O.L.I.D принципов
Математическое обоснование S.O.L.I.D принциповМатематическое обоснование S.O.L.I.D принципов
Математическое обоснование S.O.L.I.D принципов
 
20100927 28 reqformalization-kuliamin
20100927 28 reqformalization-kuliamin20100927 28 reqformalization-kuliamin
20100927 28 reqformalization-kuliamin
 
2013 03 21_bigdata_seminar_05
2013 03 21_bigdata_seminar_052013 03 21_bigdata_seminar_05
2013 03 21_bigdata_seminar_05
 
Основы SciPy
Основы SciPyОсновы SciPy
Основы SciPy
 
Стажировка 2016-07-08 01 Евгений Тюменцев. S.O.L.I.D.
Стажировка 2016-07-08 01 Евгений Тюменцев. S.O.L.I.D.Стажировка 2016-07-08 01 Евгений Тюменцев. S.O.L.I.D.
Стажировка 2016-07-08 01 Евгений Тюменцев. S.O.L.I.D.
 
20100425 model based_testing_kuliamin_lectures01-03
20100425 model based_testing_kuliamin_lectures01-0320100425 model based_testing_kuliamin_lectures01-03
20100425 model based_testing_kuliamin_lectures01-03
 
Повседневный С++: алгоритмы и итераторы @ C++ Russia 2017
Повседневный С++: алгоритмы и итераторы @ C++ Russia 2017Повседневный С++: алгоритмы и итераторы @ C++ Russia 2017
Повседневный С++: алгоритмы и итераторы @ C++ Russia 2017
 
07 HappyDev-lite-2015 spring. Евгений Тюменцев. Зачем программисту нужно зна...
07 HappyDev-lite-2015 spring. Евгений Тюменцев. Зачем программисту нужно зна...07 HappyDev-lite-2015 spring. Евгений Тюменцев. Зачем программисту нужно зна...
07 HappyDev-lite-2015 spring. Евгений Тюменцев. Зачем программисту нужно зна...
 
2015-04-12 07 Евгений Тюменцев. Зачем программисту нужно знать математику?
2015-04-12 07 Евгений Тюменцев. Зачем программисту нужно знать математику?2015-04-12 07 Евгений Тюменцев. Зачем программисту нужно знать математику?
2015-04-12 07 Евгений Тюменцев. Зачем программисту нужно знать математику?
 
чернякова г.в.
чернякова г.в.чернякова г.в.
чернякова г.в.
 
Data Mining in RTB
Data Mining in RTBData Mining in RTB
Data Mining in RTB
 
02 сортировка и поиск
02 сортировка и поиск02 сортировка и поиск
02 сортировка и поиск
 
D-кучи и их применение
D-кучи и их применениеD-кучи и их применение
D-кучи и их применение
 
05 динамическое программирование
05 динамическое программирование05 динамическое программирование
05 динамическое программирование
 
Ошибки
ОшибкиОшибки
Ошибки
 
Ошибка. Осознание, примирение, извлечение пользы. Вадим Макишвили
Ошибка. Осознание, примирение, извлечение пользы. Вадим МакишвилиОшибка. Осознание, примирение, извлечение пользы. Вадим Макишвили
Ошибка. Осознание, примирение, извлечение пользы. Вадим Макишвили
 

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

  • 1.
  • 2. Рекомендательные системы Лекция 1 Андрей Данильченко НИУ ИТМО, 10 ноября 2014
  • 4.
  • 5. 5
  • 6.
  • 7. 7
  • 8. 8
  • 9. │ Recommender Systems are software tools and techniques providing suggestions for items to be of use to a user F. Ricci “Recommender Systems Handbook” 9
  • 10. Количество статей в области по данным google scholar (от 2014-10-17)
  • 11. 11
  • 13. Классификация RS Available data Tags & Metadata User history Content Collaborative Content-based Hybrid
  • 14. Данные • Рейтинги (explicit feedback) • унарные (like) • бинарные (like/dislike) • числовые (stars) • История действий пользователя (implicit feedback) • Тэги, метаданные • Комментарии, отзывы • Друзья
  • 15. Рекомендательные задачи 15 • Predict • Recommend • Similar
  • 16. Как построить простую рекомендательную систему? 16
  • 17. User-based kNN Как продукт оценили похожие пользователи? ˆ rui = 1 Ni (u) rvi Σ v∈Ni (u) Взвесим вклад каждого ˆ rui = wuvrvi Σ v∈Ni (u) wuv Σ v∈Ni (u) И нормализуем рейтинги ˆ rui = h−1 wuvh rvi ( ) Σ v∈Ni (u) wuv Σ v∈Ni (u) $ &&& % ' ))) (
  • 18. Как посчитать расстояние? Косинусное расстояние Корреляция Пирсона cos(u, v) = ruirvi Σ i∈Iuv Σ r2 rui vj i∈Iu 2 Σ j∈Iv PC(u, v) = (rui − ru )(rvi − rv ) Σ i∈Iuv Σ (r− r)2 (r− r)2 ui u vj v i∈Iu Σ j∈Iv Поправленное косинусное расстояние (adjusted cosine) AC(u, v) = (rui − ri )(rvi − ri ) Σ i∈Iuv Σ (r− r)2 (r− r)2 ui i vj j i∈Iu Σ j∈Iv
  • 19. Как нормализовать рейтинги? 19 h rui ( ) = rui − ru h rui ( ) = rui − ru σ u h rui ( ) = j ∈ Iu : ruj ≤ rui { } Iu Mean centering Z-score Percentile score
  • 22. Singular Value Decomposition Теорема: если в матрице λ оставить k наибольших элементов, то полученное произведение A’ будет наилучшим среди всех матриц ранга k приближением матрицы A.
  • 23. Baseline predictors Модель: rˆuui =μ + bu + bi argmin b* Σ ( 2 r−μ − b− b) uui u i (u,i )∈R Σ 2 + Σ bi +λ bu u∈U 2 i∈I $ % & ' ( ) Функция ошибки:
  • 24. SVD Модель: ˆ rui =μ + bu + bi + pu Функция ошибки: Tqi argmin p*q*b* Σ 2 ( r−μ − b− b− pTq) ui u i u i (u,i )∈R 2 ( ) +λ pu 2 + qi 2 + bu 2 + bi
  • 25. Optimization by SGD Модель: ˆ rui =μ + bu + bi + pu Функция ошибки: Tqi argmin p*q*b* Σ 2 ( r−μ − b− b− pTq) ui u i u i (u,i )∈R 2 ( ) +λ pu 2 + qi 2 + bu 2 + bi Шаг стохастического градиентного спуска: bu ←bu +γ1 eui −λ1bu ( ) bi ←bi +γ1 eui −λ1bi ( ) pu ← pu +γ 2 euiqi −λ2 pu ( ) qu ←qi +γ 2 eui pu −λ2qi ( )
  • 26. Alternating Least Squares P-step: обновление при фиксированных векторах item-ов pu = λnuI + Au ( )−1 du Au =Q[u]TQ[u] = qiqi T Σ i:(u,i)∈R Σ du =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
  • 27. Что делать с implicit feedback?
  • 28. Как использовать implicit feedback? Идея: rating => (preference, confidence) pui ∈ {0,1} cui ∈ ℜ+ ∀(u, i) ∈ R pui =1 pui = 0 иначе cui =1+αrui или cui =1+α log 1+ rui ( β )
  • 29. Обучение модели argmin x*y* Σ 2 T yi ( ) cui pui − xu (u,i ) Σ + yi +λ xu 2 u 2 Σ i # $ % & ' ( Функция ошибки: xu = (λ I +Y TCuY )−1 Y TCup(u) yi = λ I + XTCi( X)−1 XTCi p(i) Это сводится к уравнениям для ALS:
  • 30. Обучение модели argmin x*y* Σ 2 T yi ( ) cui pui − xu (u,i ) Σ + yi +λ xu 2 u 2 Σ i # $ % & ' ( Функция ошибки: xu = (λ I +Y TCuY )−1 Y TCup(u) yi = λ I + XTCi( X)−1 XTCi p(i) Это сводится к уравнениям для ALS: Но есть проблема!
  • 31. Ускорение iALS Идея: Y TCuY = Y TY +Y T (Cu − I )Y Cu − I В матрице всего ненулевых элементов, Cup(u) в матрице всего ненулевых элементов, Y TY O f 2N + f 3 ( U ) nu nu а не зависит от пользователя! Итого: обновляем вектора пользователей за
  • 32. Интуиция iALS Выпишем ALS-шаг в упрощенной форме: xu = (λ I +Y TCuY )−1 Y TCu p(u) = λ I + Au ( )−1 du Введем «нулевого» пользователя без фидбека: Σ Σ T yd= cpyi 0 0 0i A0 = c0yi i i T yi Тогда для остальных пользователей выводим: Σ Au = A0 + (cui − c0 )yi (u,i )∈N(u) Σ du = d0 + cui pui − c0 p0 ( ) yi (u,i)∈N(u)
  • 33. Как выбирать c0 и p0? ∀(u, i) ∈ N Как и раньше: pui =1 pui = 0 иначе cui =1+αrui
  • 34. Как выбирать c0 и p0? ∀(u, i) ∈ N Как и раньше: pui =1 pui = 0 иначе cui =1+αrui p0 = 0 c0 =1
  • 35. А разве что-то еще осталось? 35
  • 36. If you like this lecture you will like these books
  • 37. If you like this lecture you will also like
  • 38. If you like this lecture you will probably like http://www.4ducks.ru/pages/itmo-rs-2014.html
  • 39. Удачи! Андрей Данильченко группа разработки рекомендательных систем, Яндекс danilchenko@yandex-team.ru