Команда Epic Growth подготовила доклад Тимура Гарифзянова, Product Lead в Badoo, в котором он рассказывает про сложности создания алгоритма рекомендаций и матчинга в продукте и как команда решала эту проблему.

Не так давно продукт Badoo объединился с компанией MagicLab, которая владеет похожими дейтинг-приложениями: Bumble — приложением для знакомств, поиска друзей, нетворкинга и нашим самым популярным продуктом для Северной Америки, Lumen — дейтингом для пожилых, Chappy — дейтингом и поиском друзей.

Уже более 550 млн людей по всему миру пользуются нашими брендами. И основная миссия нашей компании — помогать людям строить отношения.

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

О продукте Badoo

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

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

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

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

Первая проблема — тяжело изолировать контрольную группу

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

Например, есть две аудитории — мужчины и женщины. Соответственно, алгоритм работает с двумя сторонами. И тут возникает проблема — как выделить контрольную группу, ее какой-то сегмент, чтобы проверить, как действительно сработал эксперимент.

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

Долго искали решение, но поняли, что A/B-тесты нам все-таки не подходят. При том, что мы регулярно запускаем около 100–150 A/B-тестов в других частях продукта и в других брендах. Конкретно для этой задачи они не подходят.

К счастью, мы обнаружили инструмент Causal Impact — фреймворк, написанный в Google, позволяющий предсказывать, как бы вела себя метрика, если бы не было вашего влияния.

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

Например, одна из наших метрик — количество людей, которые не получили голос «да». И на графике видно, что мы улучшили эту метрику на 5%. Благодаря ему мы достаточно качественно и математически верно можем оценивать эксперимент, не применяя A/В-тесты.

Вторая проблема — неоднородная аудитория

Вторая наша проблема — это достаточно неоднородная аудитория. Badoo появился 13 лет назад, за это время собрал много пользователей. Есть большая аудитория тех, кто зарегистрировался 12 лет назад, и есть те, кто зарегистрирован, например, 5 лет назад.

На графике синий сегмент — те пользователи, которые в нашем продукте зарегистрированы сегодня, а оранжевый сегмент — которые зарегистрированы не сегодня. Для оранжевого сегмента бессмысленно считать такие метрики, как day one retention, week one retention или количество людей, которые получили match в первый день, так как большинство из этих пользователей зарегистрировались более года назад.

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

Наша команда вывела метрику — next day retention. Считается она довольно просто и показывает, сколько пользователей, из тех, кто был активен сегодня, вернутся к нам завтра. Для нас очень важно, чтобы пользователи возвращались назад — они тем самым генерируют какую-то новую активность. Если у них не получилось найти партнера сегодня, мы хотим им помочь найти его завтра.

Поэтому next day retention — одна из основных метрик для нашего алгоритма в продукте на текущий момент. Так, мы научились считать и тестировать на всю аудиторию, а не только на какой-то маленький сегмент.

Третья проблема — сегменты ведут себя по-разному

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

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

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

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

Четвертая проблема — сложность ручного режима

В какой-то момент нам стало достаточно сложно следить за метриками в ручном режиме. У нас порядка 237 стран, где есть хотя бы один активный пользователь. Одна только Россия насчитывает около 3500 городов хотя бы с одним пользователем.

Например, у нас есть шесть пользователей на Земле Франца-Иосифа, и они достаточно активно пользуются нашим продуктом, возможно потому, что им там скучно.

Только за 2018 год все наши бренды помогли сгенерировать 3 млрд матчей по всему миру, а за такими объемами бессмысленно следить в ручном режиме. Поэтому мы построили простую систему детектирования аномалий, написанную внутри нашей компании.

Она автоматически строит прогноз, а мы следим за тем, как метрика себя ведет. Когда что-то выходит из тренда, все получают уведомления на Mattermost, по e-mail или SMS. Если аномалия достаточно большая, наша команда начинает разбираться, почему так происходит.

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

Благодаря этому мы научились следить за метриками в автоматическом режиме и понимать, когда и что нам нужно менять или делать.

Пятая проблема — похожие страны не похожи

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

Например, в Белоруссии женщины более открыты к отношениям, чем в России — каждый день они ставят на 20% больше голосов «да». И нам совершенно непонятно, почему так происходит. Вручную за этим невозможно уследить: мы бы просто потратили много времени, пытаясь отследить малейшие изменения в конкретной стране, пробуя их оптимизировать.

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

Шестая проблема — неконтролируемые факторы

Однако это не помогло решить все проблемы. Остался определенный объем факторов, которые система не может контролировать. Как пример: сравнительный анализ активности в праздники, на 26 декабря, в России и Британии.

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

1 января же все уходит вниз и в России, и в Британии, потому что, если можно праздновать два раза, — почему бы и нет.

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

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

Как мы пытаемся это предсказать

У нас есть большая команда user support, которая отвечает за обработку обратной связи от наших пользователей. И одна из их задач состоит в том, чтобы вести календарь праздников, в том числе неофициальных. Есть официальные праздники, которые можно посмотреть на множестве ресурсов. Но есть большое количество неофициальных праздников, которые также влияют на наши метрики.

Например, в России Рождество приходится 7 января и сильно влияет на наши метрики. Мы это учитываем, когда анализируем все продуктовые графики, накладывая на них, когда это необходимо, date range — дату праздника.

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

Седьмая проблема — сложный CustDev

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

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

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

Фильтры Snapchat

И напоследок — Snapchat filters. Мы ошибочно полагали, что все любят Snapchat filters, на самом деле их не любит никто. Это кросс-национальная и кросс-возрастная история.

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

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

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

Но мы открыты к их экспериментам и стараемся принимать решения не только на основе того, что они советуют, но также, как взаимодействуют с нашим продуктом — на основе данных, Big Data и так далее.

Зачем вообще бороться с этими сложностями

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

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

Подводя итоги

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

Также я взял нанокоэффициент в 15% и с его помощью получил примерное количество детей, которые помог сгенерировать продукт Badoo — 821 250 детей. Это даже больше по последней переписи, чем Центральный округ Москвы. И так каждый год — продукт Badoo помогает генерировать свой «Центральный округ Москвы» в каждой стране.

Поэтому пользуйтесь этими инструментами, делайте хорошие продукты и, главное, генерируйте детей!

Больше про рост продуктов и гроус-процессы — в Telegram-канале Epic Growth Channel.

Материал опубликован пользователем.
Нажмите кнопку «Написать», чтобы поделиться мнением или рассказать о своём проекте.


Написать