Upload
codefest
View
547
Download
1
Embed Size (px)
Citation preview
Яндекс.Дзен
Персональный журнал
› Знает, что вы любите
› Собирает статьи по всему Интернету
› Рекомендует лучшее для вас
zen.yandex.ru 5
Рекомендации на основе содержания
7
Вася
Большой куш
Поймай меня, если сможешь
Счастливое число Слевина
Лучшее предложение
Нравится
Рекомендации на основе содержания
7
Игра на понижение
Карты, деньги, два ствола
Волк с Уолл-стрит
11 друзей Оушена
Рекомендации
Вася
Большой куш
Поймай меня, если сможешь
Счастливое число Слевина
Лучшее предложение
Нравится
Netflix Prize
› 2006–2009
› 100 млн оценок
› Задача: улучшить качество предсказания оценки пользователя на 10%
› $1 000 000
netflixprize.com 8
Похожим пользователям — похожие объекты
10
Дэдпул
?
Катя
Люди Икс
Человекпаук
Железный человек
Капитан Америка
Света
Маша
Петя
4
3
5
5
4
4
5
4
5
4
4
4
4
4
5
5
5
4
3 5Вася
Похожим пользователям — похожие объекты
10
Дэдпул
Катя
Люди Икс
Человекпаук
Железный человек
Капитан Америка
Света
Маша
Петя
4
3
5
5
4
4
5
4
5
4
4
4
4
4
5
5
5
4
3 5 4.6Вася
Недостатки коллаборативной фильтрации
› Проблема холодный старта
› Особенности предметной области
11
Недостатки коллаборативной фильтрации
› Проблема холодный старта
› Особенности предметной области
› Контекст действий пользователя
11
Матрикснет
› Мощный алгоритм машинного обучения
› Основан на градиентном бустинге деревьев решений (GBDT)
› Поддерживает различные типы задач машинного обучения (регрессия, классификация, ранжирование)
› Устойчив к переобучению
› Хорошо работает даже без настройки
yandex.ru/company/technologies/matrixnet 13
Матрикснет
› Мощный алгоритм машинного обучения
› Основан на градиентном бустинге деревьев решений (GBDT)
› Поддерживает различные типы задач машинного обучения (регрессия, классификация, ранжирование)
› Устойчив к переобучению
› Хорошо работает даже без настройки
yandex.ru/company/technologies/matrixnet 13
Матрикснет
› Мощный алгоритм машинного обучения
› Основан на градиентном бустинге деревьев решений (GBDT)
› Поддерживает различные типы задач машинного обучения (регрессия, классификация, ранжирование)
› Устойчив к переобучению
› Хорошо работает даже без настройки
yandex.ru/company/technologies/matrixnet 13
пол
возр
аст
врем
я су
ток
…
геол
окац
ия
признаки
Матрикснет
› Мощный алгоритм машинного обучения
› Основан на градиентном бустинге деревьев решений (GBDT)
› Поддерживает различные типы задач машинного обучения (регрессия, классификация, ранжирование)
› Устойчив к переобучению
› Хорошо работает даже без настройки
yandex.ru/company/technologies/matrixnet 13
пол
возр
аст
врем
я су
ток
…
геол
окац
ия
признакиlike
dislike
like
like
like
dislike
Матрикснет
› Мощный алгоритм машинного обучения
› Основан на градиентном бустинге деревьев решений (GBDT)
› Поддерживает различные типы задач машинного обучения (регрессия, классификация, ранжирование)
› Устойчив к переобучению
› Хорошо работает даже без настройки
yandex.ru/company/technologies/matrixnet 13
пол
возр
аст
врем
я су
ток
…
геол
окац
ия
признакиlike
dislike
like
like
like
dislike
Матрикснет
› Мощный алгоритм машинного обучения
› Основан на градиентном бустинге деревьев решений (GBDT)
› Поддерживает различные типы задач машинного обучения (регрессия, классификация, ранжирование)
› Устойчив к переобучению
› Хорошо работает даже без настройки
yandex.ru/company/technologies/matrixnet 13
пол
возр
аст
врем
я су
ток
…
геол
окац
ия
признакиlike
dislike
like
like
like
dislike
like
15
Матрикснет
Пользователь
Крипта (предсказанные возраст, пол, доход,
интересы)
Поисковый запросы
Посещенные сайты
16
Матрикснет
Пользователь
Крипта (предсказанные возраст, пол, доход,
интересы)
Поисковый запросы
Посещенные сайты
Объект
Метаинформация
Признаки контента (жанры, категории, теги)
Совместные факторы
17
Матрикснет
Статистика (различные исторические агрегаты)
Пользователь
Крипта (предсказанные возраст, пол, доход,
интересы)
Поисковый запросы
Посещенные сайты
Объект
Метаинформация
Признаки контента (жанры, категории, теги)
› Вместо явных идентификаторов можно использовать агрегат по истории
Статистические агрегаты
– CTR документа
› Вместо явных идентификаторов можно использовать агрегат по истории
Статистические агрегаты
– CTR документа
– Доля лайков среди всех прослушиваний трека
› Вместо явных идентификаторов можно использовать агрегат по истории
› Можно использовать всю историю действий с объектом или только персональную
Статистические агрегаты
– CTR документа
– Доля лайков среди всех прослушиваний трека
› Вместо явных идентификаторов можно использовать агрегат по истории
› Можно использовать всю историю действий с объектом или только персональную
Статистические агрегаты
– CTR документа
– Доля лайков среди всех прослушиваний трека
– Сколько раз данный пользователь слушал данный трек
› Вместо явных идентификаторов можно использовать агрегат по истории
› Можно использовать всю историю действий с объектом или только персональную
› Можно использовать связи объектов
Статистические агрегаты
– CTR документа
– Доля лайков среди всех прослушиваний трека
– Сколько раз данный пользователь слушал данный трек
› Вместо явных идентификаторов можно использовать агрегат по истории
› Можно использовать всю историю действий с объектом или только персональную
› Можно использовать связи объектов
Статистические агрегаты
– CTR документа
– Доля лайков среди всех прослушиваний трека
– Сколько раз данный пользователь слушал данный трек
– Когда пользователь в последний раз покупал товар той же категории
› Среднее значение какого-то признака объектов, с которыми взаимодействовал пользователь
Статистические агрегаты
› Среднее значение какого-то признака объектов, с которыми взаимодействовал пользователь
Статистические агрегаты
– Средняя цена просмотренных пользователей товаров
› Среднее значение какого-то признака объектов, с которыми взаимодействовал пользователь
› Среднее значение какого-то признака пользователей, которые взаимодействовали с объектом
Статистические агрегаты
– Средняя цена просмотренных пользователей товаров
› Среднее значение какого-то признака объектов, с которыми взаимодействовал пользователь
› Среднее значение какого-то признака пользователей, которые взаимодействовали с объектом
Статистические агрегаты
– Средняя цена просмотренных пользователей товаров
– Средний возраст пользователей, покупающих этот товар
Совместные факторы
20
Матрикснет
Статистика (различные исторические агрегаты)
Пользователь
Крипта (предсказанные возраст, пол, доход,
интересы)
Поисковый запросы
Посещенные сайты
Объект
Метаинформация
Признаки контента (жанры, категории, теги)
Совместные факторы
21
Матрикснет
Матричная факторизация
Статистика (различные исторические агрегаты)
Пользователь
Крипта (предсказанные возраст, пол, доход,
интересы)
Поисковый запросы
Посещенные сайты
Объект
Метаинформация
Признаки контента (жанры, категории, теги)
Матричная факторизация (SVD)
22
≈Use
rs
Items
×Use
rs
Items
d
d
R P Q
brui = hpu, qii =dX
k=1
p(k)u q(k)i
Обучение модели — оптимизация функционала
23
X
(u,i)2D
�hpu, qii � rui
�2+ �
X
u2U
kpuk2 + �X
i2I
kqik2 �! min
Обучение модели — оптимизация функционала
24
X
(u,i)2D
�hpu, qii � rui
�2+ �
X
u2U
kpuk2 + �X
i2I
kqik2 �! min
Обучение модели — оптимизация функционала
25
X
(u,i)2D
�hpu, qii � rui
�2+ �
X
u2U
kpuk2 + �X
i2I
kqik2 �! min
Обучение модели — оптимизация функционала
26
X
(u,i)2D
�hpu, qii � rui
�2+ �
X
u2U
kpuk2 + �X
i2I
kqik2 �! min
Градиентный спуск
27
Обновление параметров на каждой итерации:
pNEWu = pu � 2⌘
⇣ X
i2Du
�hpu, qii � rui
�qi + �pu
⌘
qNEWi = qi � 2⌘
⇣ X
u2Di
�hpu, qii � rui
�pu + �qi
⌘
X
(u,i)2D
�hpu, qii � rui
�2+ �
X
u2U
kpuk2 + �X
i2I
kqik2 �! min
pNEWu = pu � 2⌘
⇣ X
i2Du
�hpu, qii � rui
�qi + �pu
⌘
qNEWi = qi � 2⌘
⇣ X
u2Di
�hpu, qii � rui
�pu + �qi
⌘
pNEWu = pu � 2⌘
⇣ X
i2Du
�hpu, qii � rui
�qi + �pu
⌘
qNEWi = qi � 2⌘
⇣ X
u2Di
�hpu, qii � rui
�pu + �qi
⌘
Градиентный спуск
27
Обновление параметров на каждой итерации:
pNEWu = pu � 2⌘
⇣ X
i2Du
�hpu, qii � rui
�qi + �pu
⌘
qNEWi = qi � 2⌘
⇣ X
u2Di
�hpu, qii � rui
�pu + �qi
⌘
X
(u,i)2D
�hpu, qii � rui
�2+ �
X
u2U
kpuk2 + �X
i2I
kqik2 �! min
pNEWu = pu � 2⌘
⇣ X
i2Du
�hpu, qii � rui
�qi + �pu
⌘
qNEWi = qi � 2⌘
⇣ X
u2Di
�hpu, qii � rui
�pu + �qi
⌘
pNEWu = pu � 2⌘
⇣ X
i2Du
�hpu, qii � rui
�qi + �pu
⌘
qNEWi = qi � 2⌘
⇣ X
u2Di
�hpu, qii � rui
�pu + �qi
⌘
Стохастический градиентный спуск
28
Обновление параметров на каждой итерации:
X
(u,i)2D
�hpu, qii � rui
�2+ �
X
u2U
kpuk2 + �X
i2I
kqik2 �! min
pNEWu = pu � 2⌘
⇣ X
i2Du
�hpu, qii � rui
�qi + �pu
⌘
qNEWi = qi � 2⌘
⇣ X
u2Di
�hpu, qii � rui
�pu + �qi
⌘
pNEWu = pu � 2⌘
⇣ X
i2Du
�hpu, qii � rui
�qi + �pu
⌘
qNEWi = qi � 2⌘
⇣ X
u2Di
�hpu, qii � rui
�pu + �qi
⌘
Стохастический градиентный спуск
28
Обновление параметров на каждой итерации:
X
(u,i)2D
�hpu, qii � rui
�2+ �
X
u2U
kpuk2 + �X
i2I
kqik2 �! min
pNEWu = pu � 2⌘
⇣ X
i2Du
�hpu, qii � rui
�qi + �pu
⌘
qNEWi = qi � 2⌘
⇣ X
u2Di
�hpu, qii � rui
�pu + �qi
⌘
pNEWu = pu � 2⌘
⇣ X
i2Du
�hpu, qii � rui
�qi + �pu
⌘
qNEWi = qi � 2⌘
⇣ X
u2Di
�hpu, qii � rui
�pu + �qi
⌘
Alternating Least Squares (ALS)
29
X
(u,i)2D
�hpu, qii � rui
�2+ �
X
u2U
kpuk2 + �X
i2I
kqik2 �! min
Обновление параметров на каждой итерации с помощью метода наименьших квадратов:
Alternating Least Squares (ALS)
29
pNEWu = argmin
pu
⇣ X
i2Du
�hpu, qii � rui
�2+ �kpuk2
⌘= (QT
uQu + �I)�1QuRu
X
(u,i)2D
�hpu, qii � rui
�2+ �
X
u2U
kpuk2 + �X
i2I
kqik2 �! min
Обновление параметров на каждой итерации с помощью метода наименьших квадратов:
Alternating Least Squares (ALS)
29
pNEWu = argmin
pu
⇣ X
i2Du
�hpu, qii � rui
�2+ �kpuk2
⌘= (QT
uQu + �I)�1QuRu
X
(u,i)2D
�hpu, qii � rui
�2+ �
X
u2U
kpuk2 + �X
i2I
kqik2 �! min
pNEWu = argmin
pu
⇣ X
i2Du
�hpu, qii � rui
�2+ �kpuk2
⌘= (QT
uQu + �I)�1QuRu
Обновление параметров на каждой итерации с помощью метода наименьших квадратов:
Alternating Least Squares (ALS)
29
pNEWu = argmin
pu
⇣ X
i2Du
�hpu, qii � rui
�2+ �kpuk2
⌘= (QT
uQu + �I)�1QuRu
X
(u,i)2D
�hpu, qii � rui
�2+ �
X
u2U
kpuk2 + �X
i2I
kqik2 �! min
qNEWi = argmin
qi
⇣ X
u2Di
�hpu, qii � rui
�2+ �kqik2
⌘= (PT
i Pi + �I)�1PiRiqNEWi = argmin
qi
⇣ X
u2Di
�hpu, qii � rui
�2+ �kqik2
⌘= (PT
i Pi + �I)�1PiRi
pNEWu = argmin
pu
⇣ X
i2Du
�hpu, qii � rui
�2+ �kpuk2
⌘= (QT
uQu + �I)�1QuRu
Особенности реализации и модификации
› Обучение в реальном времени
› Учёт неявных предпочтений пользователей (алгоритм IALS)
30
Особенности реализации и модификации
› Обучение в реальном времени
› Учёт неявных предпочтений пользователей (алгоритм IALS)
› Учёт связей между объектами
30
Особенности реализации и модификации
› Обучение в реальном времени
› Учёт неявных предпочтений пользователей (алгоритм IALS)
› Учёт связей между объектами
› Подбор гиперпараметров
30
32
Обновление параметров
пользователя
Диско
Отборкандидатов
Обученнаямодель
История пользователя
Подсчет факторов
32
Обновление параметров
пользователя
Диско
Отборкандидатов
Оценка релевантности
Обученнаямодель
История пользователя
Подсчет факторов
35
Диско
Оценка релевантности
Подсчет факторов
Отборкандидатов
Обновление параметров
пользователя
История пользователя
Обученнаямодель
35
Диско
Оценка релевантности
Подсчет факторов
Отборкандидатов
Обновление параметров
пользователя
История пользователя
Обученнаямодель
Составление рекомендаций
35
Диско
Оценка релевантности
Подсчет факторов
Отборкандидатов
Обновление параметров
пользователя
История пользователя
Обученнаямодель
Составление рекомендаций
Ключевые особенности системы Диско
› Обучается в реальном времени
› Сочетает коллаборативную фильтрацию и рекомендации на основании контента
36
Ключевые особенности системы Диско
› Обучается в реальном времени
› Сочетает коллаборативную фильтрацию и рекомендации на основании контента
› Использует как внутреннюю, так и внешнюю историю пользовательских действий
36
Ключевые особенности системы Диско
› Обучается в реальном времени
› Сочетает коллаборативную фильтрацию и рекомендации на основании контента
› Использует как внутреннюю, так и внешнюю историю пользовательских действий
› Поддерживает оптимизацию различных целевых метрик, интересных для сервиса
36
Ключевые особенности системы Диско
› Обучается в реальном времени
› Сочетает коллаборативную фильтрацию и рекомендации на основании контента
› Использует как внутреннюю, так и внешнюю историю пользовательских действий
› Поддерживает оптимизацию различных целевых метрик, интересных для сервиса
› Увеличивает DISCOvery
36
Результаты использования системы ДискоМузыка и Радио
› Среднее время прослушивания на пользователя: +50%
› Возвращаемость пользователей: +100%
Маркет
› Переходы в магазины: +146%
› Доход через блоки рекомендаций: +110%
Дзен
› Запущен новый сервис. CTR после запуска: +220%37
Полезные ссылки
› IALS: Pilászy, Zibriczky, Tikk. Fast ALS-based Matrix Factorization for Explicit and Implicit Feedback Datasets. RecSys-2010.
› Spark: spark.apache.org
› Oryx: github.com/cloudera/oryx
› Hyperopt: github.com/hyperopt/hyperopt
› XGBoost: github.com/dmlc/xgboost
38
39
Михаил Ройзнер
Ведущий разработчик
Контакты
@MRoizner
MRoizner
+7 (916) 131 57 69