Рекомендательная система

Разработка рекомендательной системы общего назначения на основе глубокого обучения (Deep Learning) и LSTM.

Deep learning
CUDA
LSTM
Torch

2015

Коротко о главном

Задача

Разработать ПО для рекомендации нового материала на основе истории пользователя.

Решение

  • Построена модель на основе LSTM
  • Реализован программный комплекс сбора и обработки данных
  • Запущена веб-панель для анализа статистики и получаемых рекомендаций

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

В любой сфере, где пользователям предлагается контент в той или иной форме, рекомендации нового материала — важнейший элемент системы. Действительно, увеличение продаж даже на несколько процентов может принести миллионы долларов.

Показателен пример соревнования Netflix Prize. В 2006 году компания Netflix, крупнейший поставщик потокового видео, запустила соревнование, в рамках которого участники по базе оценок фильмов пользователями пытались предсказать, какой следующий фильм стоит посмотреть. Задача: улучшить точность существующих рекомендаций на 10%. Приз составлял ни больше, ни меньше — миллион долларов. Ведь нетрудно посчитать, какую прибыль даст компании с оборотом в $3,61 миллиарда долларов подобное увеличение продаж.

Рис 1. Netflix.com

Конечно, область рекомендаций не ограничивается только лишь фильмами. Советовать можно все, что угодно:

  • Фильмы, сериалы, ТВ-передачи
  • Музыку
  • Товары в магазине
  • Книги
  • Новости
  • Веб-сайты

Способы

Есть несколько основных способов построения рекомендательных систем: фильтрация содержимого и коллаборативная фильтрация.

Фильтрация содержимого — простой и понятный метод, при котором мы учитываем параметры содержимого, которым интересовался пользователь и ищем похожие. К примеру, если человек посмотрел фильм «Терминатор», можно подыскать другие фильмы с Арнольдом Шварценеггером в жанре «фантастика».

Однако, на сегодняшний день, главным подходом к построению рекомендательных систем является коллаборативная фильтрация. При коллаборативной фильтрации используется информация о поведении всех пользователей в прошлом — например, информация о покупках или оценках. Скажем, если человек посмотрел фильм «Один дома», рекомендательная система может проанализировать, какие фильмы другие пользователи смотрели вместе с ним. Вполне возможно, этим фильмом окажется «Рождественская история» — оба фильма смотрят под рождество. Такие зависимости очень сложно явно запрограммировать, но, зато, с этой задачей замечательно справляются компьютерные модели.

Рис 2. Коллаборативная фильтрация

В результате мы имеем дело с огромной матрицей пользователь-объект каждый раз, когда нам требуется обновить рекомендации. Многие алгоритмы используют метод Matrix factorization для решения этой проблемы. Это неплохой подход, дающий результаты, однако существуют более современные решения.

Модель

Наш подход использует рекуррентные нейронные сети, если точнее — LSTM (Long short term memory). Подобные сети идеально подходят для создания модели предсказания следующего события по цепочке предыдущих. В нашем примере это может быть следующий фильм для просмотра на основе истории просмотров, товар для рекомендации в корзине на основе переходов по сайту и т.д.

Метод является очень гибким и позволяет использовать любую информацию об интересующих нас объектах. Кроме того, что немаловажно, учитывается последовательность просмотров, что позволяет отдавать предпочтение последним событиям и, в то же время, адекватно реагировать на резкую смену настроения. Еще один важный плюс — для получения новых рекомендаций не требуется пересчитывать модель, можно получать ответы в режиме реального времени.

Конечные модели тестируются на реальном продукте для повышения качества рекомендаций. Для возможности анализа результатов и управления параметрами была реализована веб-панель при помощи фреймворков Angular и Node.JS.

Следующий проект

Дефекты дорожного полотна аэропортов