Pinterest — это визуальный каталог с несколькими миллиардами пинов, которые представляют собой визуальные закладки, содержащие описание, ссылку и изображение или видео. Основная проблема, с которой сталкивается Pinterest, заключается в предоставлении персонализированных, привлекательных и своевременных рекомендаций из пула, состоящего из более чем 3 миллиардов элементов, более чем 200 миллионам активных пользователей в месяц. Рекомендации в Pinterest — это проблема, масштаб которой выходит за рамки классических проблем рекомендаций, изученных в литературе. У Pinterest есть каталог из нескольких миллиардов пинов, из которых может выбирать рекомендательная система. Однако классические рекомендательные системы, которые рассматривают каталоги, содержащие только миллионы элементов. В отличие от этого, Pinterest рекомендует из каталога из миллиардов элементов, что значительно усложняет проблему рекомендаций. Вторая важная проблема связана с тем, что рекомендации должны рассчитываться по запросу и в режиме реального времени. Это требование реального времени (т. е. задержка менее 100 миллисекунд на запрос рекомендации) имеет решающее значение по двум причинам:

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

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

Настоящая работа: Пикси. Здесь мы представляем Pixie, масштабируемую систему рекомендаций на основе графиков в реальном времени, развернутую в Pinterest. В настоящее время пины, рекомендованные Pixie, составляют более 80% всего взаимодействия пользователей с Pinterest. В A/B-тестах рекомендации, предоставленные Pixie, увеличивают количество вовлеченных пинов на 50 % по сравнению с предыдущими системами рекомендаций Pinterest. Пользователи Pinterest просматривают пины и объединяют их в коллекции, называемые досками. Таким образом, один пин может быть сохранен тысячами пользователей на десятках тысяч разных досок. Например, один и тот же значок рецепта может быть сохранен разными пользователями на нескольких разных досках, таких как рецепты, быстрые в приготовлении, вегетарианские или летние рецепты. объекты. С сотнями миллионов пользователей, которые вручную распределяют контакты по категориям и классифицируют их по доскам, мы получаем объектный граф многогранных отношений между контактами. Таким образом, мы можем думать о Pinterest как о гигантском двудольном графе, созданном человеком, состоящем из 7 миллиардов булавок и досок и более 100 миллиардов ребер 1 . Мы используем этот двудольный граф контактов и досок для создания рекомендаций. Когда пользователь взаимодействует с булавками в Pinterest, наш метод использует эти булавки для создания набора запросов Q из булавок, каждая из которых имеет свой собственный вес. Набор запросов зависит от пользователя и динамически изменяется. Он может содержать контакты, с которыми вы недавно взаимодействовали, а также выводы, сделанные давно. Учитывая запрос Q, мы затем генерируем рекомендации, используя алгоритм Pixie Random Walk. Поскольку прогулка посещает обе доски, а также контакты, оба типа объектов могут быть рекомендованы пользователю. Кроме того, алгоритм является быстрым, масштабируемым и работает за постоянное время, которое не зависит от размера входного графа. Наш новый алгоритм случайного блуждания пикси включает в себя следующие инновации, которые имеют решающее значение для предоставления высококачественных рекомендаций: (1) мы смещаем случайное блуждание пикси в зависимости от пользователя, например, на основе темы и языка пользователя;

(2) мы допускаем несколько пинов запроса с разным весом важности, что позволяет нам зафиксировать весь контекст предыдущего поведения пользователя;

(3) Наш метод объединяет результаты нескольких независимых случайных блужданий таким образом, что он вознаграждает рекомендации, связанные с несколькими выводами запроса. В сочетании с (2) это приводит к более актуальным рекомендациям;

(4) Наш Pixie Random Walk использует специальные критерии сходимости, которые позволяют выполнять раннюю остановку и имеют решающее значение для достижения производительности и пропускной способности в реальном времени; Последний,

(5) наш алгоритм Pixie позволяет рекомендовать как контакты, так и платы, что помогает решить проблему холодного запуска.

Чтобы порекомендовать свежие новые выводы, Pixie сначала рекомендует доски (а не выводы), а затем предоставляет новые выводы, сохраненные на этих досках. Кроме того, мы также разрабатываем стратегию курирования графов, которая еще больше повышает качество рекомендаций на 58%. Это курирование также уменьшает размер графика в шесть раз, что еще больше повышает производительность Pixie во время выполнения. Наш алгоритм Pixie имеет несколько важных преимуществ. Алгоритм предлагает гибкость для динамического смещения ходьбы. Например, в Pixie мы предпочтем прогулку, чтобы рекомендовать контент, локальный для языка пользователя, что повышает вовлеченность пользователей. Pixie позволяет вычислять рекомендации на основе нескольких булавок запроса. Кроме того, мы можем варьировать продолжительность ходьбы, чтобы найти компромисс между более широкими и более узкими рекомендациями. Для областей Pinterest, предназначенных для предоставления неожиданных исследовательских рекомендаций, Pixie может пройти дальше по графику, чтобы получить более разнообразные рекомендации. С другой стороны, для выработки узконаправленных и актуальных рекомендаций Пикси может использовать более короткие прогулки. Pixie Random Walk также имеет несколько преимуществ перед традиционными случайными блужданиями (или перед простым подсчетом количества общих соседей): в классических случайных блужданиях узлы низкой степени с меньшим количеством ребер вносят меньший сигнал. Это нежелательно, потому что меньшие доски (узлы более низкого уровня) имеют тенденцию быть более тематически сфокусированными и с большей вероятностью будут давать релевантные рекомендации. В Pixie Random Walk мы решаем эту проблему, увеличивая влияние меньших досок. И наконец, Pixie Random Walk эффективен и работает за постоянное время, которое не зависит от размера входного графа. Развертывание Pixie облегчается наличием машин с большой оперативной памятью. В частности, мы используем кластер машин Amazon AWS r3.8xlarge с оперативной памятью 244 ГБ. Мы урезали граф Pinterest с 3 миллиардами узлов и 17 миллиардами ребер примерно на 120 ГБ основной памяти. Это дает несколько важных преимуществ:

(1) Случайное блуждание не должно пересекать машины, что дает огромные преимущества в производительности;

(2) система может отвечать на запросы в режиме реального времени, а несколько обходов могут выполняться на графе параллельно; И,

(3) Pixie можно масштабировать и распараллеливать, просто добавляя новые машины в кластер. В целом Pixie выдает рекомендации менее чем за 60 миллисекунд (99-процентная задержка).

Сегодня один сервер Pixie может обслуживать около 1200 запросов рекомендаций в секунду, а общий кластер обслуживает почти 100 000 запросов рекомендаций в секунду. Pixie написан на C++ и построен на основе Стэнфордской платформы сетевого анализа (SNAP).

Кредит: https://cs.stanford.edu/people/jure/pubs/pixie-www18.pdf

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