93

Михаил Ройзнер

Embed Size (px)

Citation preview

Диско — Рекомендательная система ЯндексаМихаил Ройзнер

Яндекс.Музыка и Яндекс.Радио

Музыка Радио

music.yandex.ru, radio.yandex.ru 3

Яндекс.Маркет

market.yandex.ru 4

Яндекс.Дзен

Персональный журнал

› Знает, что вы любите

› Собирает статьи по всему Интернету

› Рекомендует лучшее для вас

zen.yandex.ru 5

Простая схема взаимодействия

6

Простая схема взаимодействия

6

Яндекс.Сервис

Простая схема взаимодействия

6

Яндекс.Сервис Диско

Простая схема взаимодействия

6

Яндекс.Сервис Диско

Информация о пользователе

Информация об объектах

Простая схема взаимодействия

6

Яндекс.Сервис Диско

Информация о пользователе

Информация об объектах

Рекомендации на основе содержания

7

Вася

Рекомендации на основе содержания

7

Вася

Большой куш

Поймай меня, если сможешь

Счастливое число Слевина

Лучшее предложение

Нравится

Рекомендации на основе содержания

7

Игра на понижение

Карты, деньги, два ствола

Волк с Уолл-стрит

11 друзей Оушена

Рекомендации

Вася

Большой куш

Поймай меня, если сможешь

Счастливое число Слевина

Лучшее предложение

Нравится

Netflix Prize

› 2006–2009

› 100 млн оценок

› Задача: улучшить качество предсказания оценки пользователя на 10%

› $1 000 000

netflixprize.com 8

Коллаборативная фильтрация

Похожим пользователям — похожие объекты

10

Похожим пользователям — похожие объекты

10

Дэдпул

?Вася

Похожим пользователям — похожие объекты

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

Недостатки коллаборативной фильтрации

› Проблема холодный старта

› Особенности предметной области

› Контекст действий пользователя

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

14

Матрикснет

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

X

(u,i)2D

�hpu, qii � rui

�2+ �

X

u2U

kpuk2 + �X

i2I

kqik2 �! min

Градиентный спуск

27

X

(u,i)2D

�hpu, qii � rui

�2+ �

X

u2U

kpuk2 + �X

i2I

kqik2 �! min

Градиентный спуск

27

X

(u,i)2D

�hpu, qii � rui

�2+ �

X

u2U

kpuk2 + �X

i2I

kqik2 �! min

Градиентный спуск

27

X

(u,i)2D

�hpu, qii � rui

�2+ �

X

u2U

kpuk2 + �X

i2I

kqik2 �! min

Градиентный спуск

27

X

(u,i)2D

�hpu, qii � rui

�2+ �

X

u2U

kpuk2 + �X

i2I

kqik2 �! min

Градиентный спуск

27

X

(u,i)2D

�hpu, qii � rui

�2+ �

X

u2U

kpuk2 + �X

i2I

kqik2 �! min

Градиентный спуск

27

X

(u,i)2D

�hpu, qii � rui

�2+ �

X

u2U

kpuk2 + �X

i2I

kqik2 �! min

Градиентный спуск

27

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

Особенности реализации и модификации

› Обучение в реальном времени

30

Особенности реализации и модификации

› Обучение в реальном времени

› Учёт неявных предпочтений пользователей (алгоритм IALS)

30

Особенности реализации и модификации

› Обучение в реальном времени

› Учёт неявных предпочтений пользователей (алгоритм IALS)

› Учёт связей между объектами

30

Особенности реализации и модификации

› Обучение в реальном времени

› Учёт неявных предпочтений пользователей (алгоритм IALS)

› Учёт связей между объектами

› Подбор гиперпараметров

30

Полная схема рекомендаций

32

32

Диско

32

Обновление параметров

пользователя

Диско

История пользователя

32

Обновление параметров

пользователя

Диско

Отборкандидатов

История пользователя

32

Обновление параметров

пользователя

Диско

Отборкандидатов

Обученнаямодель

История пользователя

32

Обновление параметров

пользователя

Диско

Отборкандидатов

Обученнаямодель

История пользователя

Подсчет факторов

32

Обновление параметров

пользователя

Диско

Отборкандидатов

Оценка релевантности

Обученнаямодель

История пользователя

Подсчет факторов

33

34

35

Диско

Оценка релевантности

Подсчет факторов

Отборкандидатов

Обновление параметров

пользователя

История пользователя

Обученнаямодель

35

Диско

Оценка релевантности

Подсчет факторов

Отборкандидатов

Обновление параметров

пользователя

История пользователя

Обученнаямодель

Составление рекомендаций

35

Диско

Оценка релевантности

Подсчет факторов

Отборкандидатов

Обновление параметров

пользователя

История пользователя

Обученнаямодель

Составление рекомендаций

Ключевые особенности системы Диско

36

Ключевые особенности системы Диско

› Обучается в реальном времени

36

Ключевые особенности системы Диско

› Обучается в реальном времени

› Сочетает коллаборативную фильтрацию и рекомендации на основании контента

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

[email protected]