Автор: Энрике Крус

В Foursquare мы гордимся тем, что даем возможность нашему сообществу исследовать окружающий мир. Наше потребительское приложение Foursquare City Guide - это система рекомендаций и поисковиков на основе местоположения. Одним из основных действий наших пользователей является написание советов (или коротких общедоступных текстов), прикрепленных к месту проведения, которые часто служат в качестве быстрого обзора или предложения. За прошедшие годы пользователи Foursquare написали более 95 миллионов советов. Хотя эти советы ценны, они предоставляют пользователям массу полезной информации. Вот почему определение того, какие советы лучше, чем другие для данного места, является важной задачей в экосистеме приложений Foursquare.

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

Прошлые подходы

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

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

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

Давность: это показатель времени, прошедшего с момента создания подсказки. Это измерение отлично демонстрирует активность сообщества Foursquare, но не дает никаких гарантий качества или актуальности.

Наш блестящий новый рейтинг подсказок

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

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

Идентификация языка. Это языковой классификатор, созданный с использованием набора решений с открытым исходным кодом и собственных решений, чтобы не давать подсказок на языках, которые пользователь не понимает.

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

Доверие автора. Это статистика автора, такая как период пребывания в качестве пользователя Foursquare City Guide, общая популярность и другие совокупные факты, связанные с ранее написанными советами пользователя. Эти сигналы пытаются продемонстрировать надежность пользователя как автора подсказки.

Глобальное качество. Это набор оценок от различных статистических классификаторов, которые обучены определять конкретные черты, такие как настроение подсказки (обучаемое с использованием явных оценок «нравится» и «не нравится»), которые пользователь предоставил место в тот же день, когда была написана подсказка. Затем используется обработка естественного языка (NLP), чтобы узнать, какие слова и фразы лучше всего предсказывают каждый класс подсказок. Что касается вероятности того, что подсказка будет сочтена спамом - это можно тренировать, глядя на предыдущие подсказки, отмеченные как спам, и изучая атрибуты, которые лучше всего коррелируют с этим.

Внедрение новых функций и сбор обучающих данных

Чтобы обучить нашу модель с использованием этих новых функций, мы сгенерировали некоторые обучающие данные, используя существующие платформы краудсорсинга. Чтобы собрать наши данные, мы сначала определили 1000 самых популярных заведений по просмотрам пользователей и приступили к случайной выборке 100 различных пар советов от каждого из этих заведений. После учета некоторой языковой фильтрации и дедупликации это дало набор данных из 75 000 пар подсказок.

Затем мы создали ярлыки для этих данных, разработав задание на Рисунке 8 (ранее CrowdFlower, краудсорсинговая платформа для задач, аналогичных Amazon Mechanical Turk), где судьям будет показана пара подсказок из нашего пула образцов рядом с соответствующим местом проведения. Затем судьям был задан вопрос: «Если бы вы в данный момент находились в этом месте или рассматриваете возможность его посещения, какой из следующих материалов будет более информативным?» Мы разработали тест таким образом, чтобы подсказки отображались в контексте, аналогичном тому, как они отображаются в приложении City Guide, предоставляя нашим судьям ту же контекстную информацию, которая влияет на то, как наши реальные пользователи видят подсказку. В результате нашей работы на Рисунке восемь было получено около 50 000 помеченных пар советов, которые мы разделили на данные обучения и оценки.

Для дальнейшего обучения нашего нового средства ранжирования подсказок мы изучили множество алгоритмов, включая LambdaMART, Coordinate Ascent и RankBoost. После оценки результатов мы остановились на использовании SVMrank (реализация машин поддерживающих векторов) в качестве алгоритма контролируемого обучения. Наша цель состояла в том, чтобы свести к минимуму количество неупорядоченных пар подсказок в свете наших краудсорсинговых обучающих лейблов.

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

В последней модели, Tip Ranker с текстовыми функциями, наибольший вес имели следующие функции:

  • Длина подсказки и количество жетонов
  • Наличие фото
  • Положительный настрой
  • Новизна

Признаки с наименьшей предсказательной силой оказались:

  • Популярность
  • Общая статистика автора

Результаты A / B-тестирования и приложения

После обнадеживающих результатов недавно обученного составителя рейтинга подсказок на нашем имеющемся наборе данных, мы запустили модель в производство, чтобы использовать ее во всем нашем корпусе, и использовали ее в различных точках взаимодействия в экосистеме Foursquare. Ниже приведены некоторые из мест, где мы экспериментировали с новым средством ранжирования, а также результаты выполнения A / B-тестов с 50% -ным разделением нашей пользовательской базы.

  • Приложение «Пинг в месте проведения»: когда мы обнаруживаем, что пользователь находится в определенном месте с определенной вероятностью, Foursquare отправляет ему пинг, содержащий лучший совет (не ранее просмотренный пользователем) для места проведения. Ранее это определялось с использованием только глобальных характеристик качества, которые вводились в модель случайного леса для оценки, сортировки и фильтрации кандидатов на подсказки.
  • Результат:. Наш новый ранжер значительно улучшил показатели контрольной группы, что привело к увеличению CTR на 1,5%, а также позволило нам отправлять на 32% больше чаевых. путем удаления некоторых существующих калиброванных фильтров, которые существовали из-за отсутствия уверенности в предыдущем методе выбора. Кроме того, экспериментальная группа привела к увеличению количества дней активности основных приложений на 5%.

  • Приложение Post Check-in Insight: Когда наши пользователи регистрируются в другом нашем потребительском приложении, Foursquare Swarm, мы показываем определенные фрагменты контента для того места, где пользователь только что зарегистрировался. Среди них совет Foursquare City Guide для места проведения и дополнительная возможность просмотреть все советы, если у них установлено приложение Foursquare City Guide (или загрузить его в противном случае). Раньше этот выбор подсказок производился исключительно по социальным сигналам.
  • Результат. Тест A / B с новой моделью показал значительное увеличение всех действий, связанных с чаевыми (например, лайков, советов и фотографий), а также чистый прирост активных пользователей Foursquare City Guide на 1% за счет того, что все больше пользователей выбирают дополнительные продажи.

  • Приложение «Сортировка по умолчанию на странице места проведения»: при отображении страницы места проведения мы показываем список лучших советов по месту проведения на вкладке выделения. Ранее это использовалось по умолчанию для положительных социальных сигналов для советов. Мы провели A / B-тест, сгруппированный по площадкам, чтобы измерить любые изменения SEO.
  • Результат: хотя версия эксперимента с авторизацией не дала значительных результатов, версия SEO привела к увеличению общего глобального реферального трафика на 2,40%. Мы предполагаем, что это в основном было вызвано тем, что составитель рейтинга предпочитал контент, который был длиннее, включал больше фотографий и был написан совсем недавно.

Будущая работа и возможное продление

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

Некоторые из них включают:

  • Отрицательные социальные сигналы. На момент создания модели Foursquare City Guide предоставлял пользователям только способы «поставить лайк» и сохранить подсказку или пометить ее как спам. С тех пор мы ввели новое взаимодействие для отрицательного голосования за подсказку. В будущем было бы интересно переобучить модель с этим новым сигналом, чтобы проверить, обладает ли он какой-либо прогностической силой.
  • Отношение к рейтинговому соответствию. Модель в подавляющем большинстве предпочитает советы с позитивным настроением. Несмотря на то, что это полезно, это вызывает некоторый диссонанс, когда у заведения низкий рейтинг, но лучшие советы в основном положительные. Расширение этой работы может ранжировать советы, чтобы показать распределение настроений, которое лучше отражает рейтинг места проведения и лежащее в его основе распределение голосов.

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

Чтобы получить дополнительную информацию о наших инженерных разработках, следите за Foursquare Engineering on Medium и будьте в курсе наших вакансий.