Рекомендательные системы на 641 миллиард долларов

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

Винсент Вега недоумевает, куда подевался консультант.

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

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

Сложности задаче добавляет еще то, что пользователи не всегда имеют сформулированный запрос, например открыл youtube, чтобы скоротать время. Поэтому важным остается организация сбора, а также выявление полезных данных сигнализирующих о пользовательских предпочтениях. А чтобы рекомендации можно было улучшать, то необходимо понимание преследуемой цели – целевых метриках на которые мы оказываем влияние.

Разберем старые и надежные рекомендательные алгоритмы как: коллаборативная фильтрация, item-based, user-based, фильтрация на основе содержания, фильтрация на основе знаний, гибридные рекомендательные системы.

Рекомендательные системы существуют уже как минимум 30 лет и по большому счету, все новые разработки и усовершенствования базируются на перечисленных методах.

Постановка задачи

Формализуем задачу. Пусть у нас есть множество пользователей U, а также множество объектов P. Также у нас есть пользовательские рейтинги R, представим их в формате матрицы размером количество пользователей * количество объектов.

Возможными значениями рейтингов R могут быть числа от 1 (совсем не понравилось) до 5 (очень понравилось), либо значениями понравилось/не понравилось, выраженные 0 и 1, либо другие. Если пользователь никак не оценил объект, то на соответствующем месте в матрице будет стоять пустое значение.

Описанную матрицу рейтингов можно представить в виде таблицы

Матрица рейтингов
Матрица рейтингов

Пусть rp наш прогноз относительно того, какую оценку r пользователь поставит продукту. Наша задача наилучшим образом предсказать, какие оценки должны стоять на месте пропусков в матрице рейтингов, то есть рассчитать rp.

Затем для каждого пользователя u на основе спрогнозированных оценок нам нужно сформировать список из N продуктов, которые наиболее точно удовлетворяют предпочтениям пользователя, и, которые еще не были им оценены.

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

Системы коллаборативной фильтрации или collaborative filtering

Идея заключается в том, что если у пользователей были схожие интересы в прошлом, то и в будущем с большой вероятностью они тоже будут совпадать.

Рассмотрим пример стримингово сервиса. Пользователи А и Б имеют историю схожих музыкальных предпочтений. Пользователю А понравилась песня, которую еще не слышал пользователь Б. В этом случае, разумно будет предложить эту песню пользователю Б.

Прогнозирование оценки пользователя с помощью коллаборативной фильтрации. Пользователи оставляют оценки различным предметам. После этого система прогнозирует оценки пользователя для предметов, которые он ещё не оценил.

Данный принцип коллаборативной фильтрации основывается на статистике о пользовательских предпочтениях и называется user-based.

Плюсы

  • Рекомендации достаточно точные – учитывают пользовательские предпочтения, та самая коллаборативность.
  • Для работы совсем не нужно информации о объектах – при прогнозировании оценки мы не смотрим на информацию о объекте (цвет, жанр, стоимость и др)

Минусы

  • Проблема холодного старта – нет понимания, что рекомендовать для новых пользователей, про предпочтения которых еще ничего не известно.
  • Данные о пользователях часто дополняются и модель рекомендаций нужно пересчитывать.
  • Нужно много статистических данных для обеспечения лучшего качества рекомендаций.

В user-based мы сравнивали похожесть между пользователями, основываясь на рейтингах оцененных объектов. Давайте используем ту же статистику, но для сравнения продуктов между собой (транспонируем нашу матрицу рейтингов).

Пример, в нашей медиатеке пользователям нравится композиция А, а вместе с ней композиция Б. Если пользователю понравилась композиция А, то разумно будет вместе с ней предложить композицию Б.

Такой принцип основанный на схожести двух продуктов, называется item-based.

Рассмотрим пример реализации в приложении Lamoda. На карточке товара в разделе “С этим товаром покупают” предлагаются сопутствующие или дополняющие покупку товары. Решение должно повлиять на средний чек.

Плюсы

  • Теперь можно рекомендовать товары нетипичным или новым пользователям
  • Экономия на вычислениях. Профили пользователей не нужно часто пересчитывать.

Минусы:

  • Рекомендации часто тривиальны – нет коллаборативности.
  • Для работы нужна детальная информация о продуктах (например: автор, жанр, стиль)
  • Проблема холодного старта – нет понимания, как рекомендовать новые продукты, про историю которых еще ничего не известно.

Первой публикацией на данную тему был материал от 1992 года David Goldberg, David Nichols "Using collaborative filtering to weave an information Tapestry”. Именно разработчики Tapestry впервые использовали термин “коллаборативная фильтрация”.

Название обусловлено термином “коллаборация” – объединение пользователей, схожих по некоторым предпочтениям, которые мы изучаем.

Коллаборативная фильтрация может давать довольно качественные рекомендации и значительно превосходит простой подход с усредненной оценкой по продуктам как раз за счет коллаборативности.

Системы фильтрации на основе содержания или content-based

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

В примере с аудиосервисом система могла определить, что автору нравятся панк-рок и альтернатива от определенных авторов, и в последствии рекомендовать композиции этих стилей или авторов.

Пример реализации в приложении Avito. На основании выбранного пользователем объявления, система предлагает похожие. Таким образом предоставляя возможность пользователю уточнить поиск желаемого товара. Решение должно влиять на конверсию в успешный поиск товара и длительность сессии.

Плюсы

  • Не требует большой группы пользователей.
  • Нет проблемы холодного старта. Новые элементы можно рекомендовать сразу, как только у них заполняются характеристики.
  • Первоначальные предпочтения пользователя можно уточнить в моменте первого знакомства с ним. Зачастую метод используется для рекомендаций новым пользователям

Минусы

  • Сильная зависимость от предметной области.
  • Рекомендации тривиальны, рекомендуется бестселлеры.

Системы, основанные на знаниях или knowledge-based

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

Пример реализации в приложении sports.ru. На этапе знакомства с пользователем уточняются его предпочтения. Круто сделано то, что не нужно прокручивать ленту вниз в поисках предпочтительных айтемов, вместо этого динамически подставляются уточнения на основании указанных пользователем верхнеуровневых интересов. Решение должно повлиять на количество собранных интересов и помочь с проблемой холодного старта.

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

Просто представлять продукт, удовлетворяющий выбранному пользователем набору характеристик, является недостаточным, поскольку в таком случае каждый пользователь получает одинаковые рекомендации с теми, кто выбрал такой же набор характеристик. Таким образом, данные системы должны не просто собирать информацию о желаемых характеристиках, а также формировать некоторый профиль пользователя.

Поэтому важным аспектом построения таких систем является настройка взаимодействия между пользователем и системой. Если вспомнить пример со стриминговым сервисом и алгоритмом коллаборативной фильтрации, то можно заметить, что пользователь может взаимодействовать с программой ограниченным числом способов. Множество приложений допускает только возможность ставить рейтинги от 1 до 5. Возвращаясь к примеру с фотокамерой, когда у нас нет информации об истории покупок пользователя, нам необходимо настроить диалог между пользователем и системой, в процессе которого программа задаст вопрос о требованиях покупателя, таких как максимальная цена, минимальное разрешение и т.д.

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

Плюсы

  • Требования пользователей могут быть определены точнее, благодаря явному взаимодействию.
  • Метод дает хороший результат в случаях, когда нет исторических данных.

Минусы

  • От пользователя требуются дополнительные действия, чтобы система могла собрать данные о его предпочтениях.
  • Данные о требованиях пользователя могут быть неправильно интерпретированы системой.

Гибридные системы или hybrid

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

Например, у нас есть данные об описании продуктов, профиль пользователей и история его покупок, тогда мы можем улучшить рекомендательную систему путем объединения методов коллаборативной фильтрации и алгоритмов фильтрации по содержанию. Таким образом, в случае появления нового пользователя в системе, о котором нет истории покупок, мы сможем использовать рекомендации на основе алгоритмов фильтрации по содержанию, а в случае большого объема статистических данных строить более точный прогноз, используя методы коллаборативной фильтрации.

Пример реализации в приложении Pinterest. На карточке товара предоставляются похожие пины, давая возможность пользователю доуточнить свой запрос не прибегаю к поиску. Мера должна повлиять на продолжительность сессии, а также на конверсию в найденный пин.

Несмотря на то, что гибридные системы помогают бороться с недостатками описанных ранее методов, нужно умело комбинировать подходы при проектировании такой системы:

  • Какие системы выбрать и при каких условиях включать?
  • Стоит ли для каждого случая использовать одну систему или объединять работу нескольких систем работающих параллельно для получения единого результата?
  • Как распределить веса в случае параллельной работы нескольких систем?

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

В зависимости от продуктовых задач существует целый ряд целевых сервисов, причем как отечественных так и зарубежных. Также не редки примеры реализации рекомендательных систем in-house.

Надеюсь это материал окажется полезен вам.

Буду рад, если поделитесь вашим опытом применения рекомендательных систем.

33
8 комментариев

Комментарий недоступен

Ответить

Ну правда, есть еще простор для персонализаций, рекомендаций и "умнения" сервисов

Ответить

PS: хочу вернуть поколение Z из 2021ого, нынешнее ни на что не годится

Ответить

опять ликбез и ничего личного :)

Ответить

Не рубите с плеча, доберемся и до кейсов

Ответить