360 likes | 565 Views
Как понять, чего хочет пользователь, без единого запроса? Строим рекомендательную систему. Андрей Федоровский , fedorovsky@gmail.com Дмитрий Исайкин, isaykin@corp.mai.ru Варвара Логачева , v.logacheva@corp.mail.ru. Рекомендательные системы: зачем они?.
E N D
Как понять, чего хочет пользователь, без единого запроса? Строим рекомендательную систему. Андрей Федоровский,fedorovsky@gmail.com Дмитрий Исайкин, isaykin@corp.mai.ru Варвара Логачева, v.logacheva@corp.mail.ru
Рекомендательные системы: зачем они? Цель – изучить вкусы пользователя и понять, какие объекты из коллекции он оценит выше других. Анализируем - Его оценки объектов и лог его действий - Оценки и действия других пользователей
Как это делать? 1) Показать 10 самых лучших объектов
Как это делать? 1) Показать 10 самых лучших объектов 2) Совместная встречаемость объектов в сессиях
Как это делать? 1) Показать 10 самых лучших объектов 2) Совместная встречаемость объектов в сессиях 3) Ввести рубрикацию/теги объектов
Как это делать? 1) Показать 10 самых лучших объектов 2) Совместная встречаемость объектов в сессиях 3) Ввести рубрикацию/теги объектов Малое число тегов на объект Нет отрицательных отношений
Подходы Content-based: теги = ключевые термины из описания объекта
Подходы Content-based: теги = ключевые термины из описания объекта Collaborative filtering: учет оценок других пользователей
Подходы Content-based: теги = ключевые термины из описания объекта Collaborative filtering: учет оценок других пользователей Neighbourhood-based CF: учитываем оценки близких пользователей
Подходы Content-based: теги = ключевые термины из описания объекта Collaborative filtering: учет оценок других пользователей Neighbourhood-based CF: учитываем оценки близких пользователей В каком пространстве?
Подходы Content-based: теги = ключевые термины из описания объекта Collaborative filtering: учет оценок других пользователей Neighbourhood-based CF: учитываем оценки близких пользователей Matrix factorization: построение профилей из скрытых признаков
Требования к системе Масштабирование до миллиардов оценок Высокая скорость работы Универсальная работа с разными наборами данных Явные оценки и неявные (логи действий) Добавление новых оценок, объектов, пользователей без рестарта
Требования к системе Масштабирование до миллиардов оценок Высокая скорость работы Универсальная работа с разными наборами данныхне получилось Явные оценки и неявные (логи действий) Добавление новых оценок, объектов, пользователей без рестарта
MF - профили пользователей - профили объектов
Оптимизация параметров системы Градиентные методы не подходят. Выбрали покоординатный спуск. Переобучение: Несколько запусков, разные семплы Регуляризация в модели Validation set
Неявные данные 50к оценок против 400М действий
Неявные данные 50к оценок против 400М действий Проблема – матрица НЕразрежена.
Неявные данные 50к оценок против 400М действий Проблема – матрица НЕразрежена. Синтетические явные оценки:
Неявные данные 50к оценок против 400М действий Проблема – матрица НЕразрежена. Синтетические явные оценки: NB: Чем плотнее матрица, тем лучше идет обучение. Поэтому лучше начинать с ядра. NB2: Объекты с единичными оценками кластеризуем
Построение выдачи RMSE – качество на всей коллекции. А нам важны 10 лучших для пользователя.
Построение выдачи: мера качества RMSE – качество на всей коллекции. А нам важны 10 лучших для пользователя. ARP: есть T результатов. Лучшие – на местах ARP = 0 – идеал. ARP = 1 – идеально плохо.
Построение выдачи: скорость Случайные проекции LSH - гиперплоскости в Задано разбиение на сектора, а - их m-битная нумерация. Сортируем только объекты, близкие к пользователю (попавшие в один сектор)
Наборы данных * на основе 400 000 000 действий
Результаты Адаптировали BRISMF для неявных данных LSH4выдает приемлемое качество с высокой скоростью Система умеет добавлять новые оценки, пользователей, объекты на лету, без пересчета матриц.