В этой статье я, кофаундер Random Coffee Паша Козлов, и Пётр Пушкарь из компании ACMetric рассказываем, как мы перешли к умному мэтчингу в сервисе знакомств, какие данные используем при подборе собеседников и что из этого вышло.
Кстати, почитать про другие наши разработки и внутреннюю кухню проекта можно в телеграм-канале Random Coffee Talk. Мы ведём его всей командой и рассказываем как про фичи для улучшения пользовательского опыта, так и про то, как искать друзей после 30 — подписывайтесь!
Что дано
Сервис для профессиональных и дружеских знакомств. Основной продукт Random Coffee — встречи один на один внутри тематических сообществ на базе Телеграма: по сфере деятельности, хобби и интересам. Каждый понедельник боты сообществ распределяют внутри них пользователей по парам, отправляют контакты и анкету, чтобы те самостоятельно списались и договорились о встрече вживую или онлайн. Пользователей становилось больше, и нужно было уходить от случайного распределения пар, чтобы увеличить количество успешных состоявшихся встреч.
Умный мэтчинг 1.0
Силами технического директора Рамиля в сообществах был сделан мэтчинг по раундам. Это по сути копия того, что есть в дейтинг сервисах. Сначала мы учитываем все факторы: город, возраст, рейтинг ответственности (насколько ты держишь обещания перед своими собеседниками и ходишь на встречи) и так далее. Из условных 100 человек 20 совпало по всем критериям — это идеальный матч. Остальные 80 переходят в следующий раунд. У 20 из них не совпадают, например, ожидания от встречи — «фан-польза» — но совпадает всё остальное. Получилось ещё 10 пар, остальных — в следующий раунд.
Умный мэтчинг 2.0
Но нам хотелось двигаться дальше и использовать данные об истории встреч в математической модели, чтобы она предсказывала, кого с кем надо соединить на следующей неделе, чтобы получилось максимальное количество успешных встреч. К этому шагу мы подключили ребят из ACMetric.
Здесь большую часть процесса занимает выбор алгоритма, который замещает раунды. Это классическая задача по экономике, когда ты не просто перебираешь лучшие мэтчи, а создаёшь оптимальную картину для всех. Это то, что называется maximum weight matching — когда мы хотим оптимизировать что-то одно. Главный вопрос, что именно выбрать.
Мы решили оптимизировать количество встреч, которые, скорее всего, случатся. Эти предположения мы строим на основе истории встреч пользователей. Машина обучения пытается предсказать по паре людей, которые ещё не виделись, вероятность того, увидятся они или нет. И в итоге алгоритм мэтчинга максимизирует количество встреч, которые произойдут.
Что ещё учитывает модель
Когда пользователь заполняет анкету, он рассказывает, сколько ему лет, откуда он, что ему интересно, что он хочет получить от встречи и так далее. Мы стараемся использовать это в нашей модели. Конечно, хочется учитывать как можно больше факторов при предсказании, но на практике модель может запутаться, если использовать слишком много данных.
В итоге мы отобрали несколько критериев, которые модель учитывает при мэтчинге:
История встреч пользователя
Этот параметр очень важен: если человек ходит на встречи регулярно, то, скорее всего, будет продолжать. И наоборот — если он пропустил четыре встречи, то модель предскажет, что скорее всего, он пропустит и следующую. Также модель обучилась предсказывать, что если пользователей пишет какую-то абракадабру вместо имени, то, скорее всего, встреча не состоится — не потому, что он не захочет пойти, а потому что его собеседник не захочет встречаться с каким-то анонимом.
Ожидания от встречи
Во время заполнения анкеты пользователи указывают в процентном соотношении, чего ожидают от встречи — фана или пользы. И учёт этого параметра повышает эффективность алгоритма, то есть максимизирует количество успешных встреч.
Предпочитаемый формат встречи
Иногда мы даём модели жёсткие ограничения — например, не мэтчить людей из разных городов, которые принципиально хотят встретиться офлайн. Конечно, пользователи обычно идут на уступки и созваниваются онлайн, но когда мы подкрутили этот параметр, процент успешных встреч вырос.
Интересы и рассказ о себе
В анкете люди указывают интересы и пишут небольшое интро о себе — и пока это самые сложные данные для использования в умном мэтчинге. Проблема в том, что простого пересечения слов недостаточно, потому что люди любят покреативить и могут сказать одно и то же разными словами: «Практикую mindfulness» и «Люблю практики осознанности» — и из-за этого многие ключевые слова просто выкидываются. Мы не можем позволить себе создать свой Chat GPT, нам нужно работать с готовыми решениями, которые, в свою очередь, знают только самые популярные слова, термины и так далее. В частности мы пробуем расширять через словарь синонимов тексты людей о себе и уже потом искать пересечения по интересам. Это то, что нам ещё предстоит улучшать в будущем.
Особенность маленьких сообществ
То, что мы описали выше, работает на больших сообществах (~ от 800 человек и больше), когда есть много данных, на которых алгоритм обучается. Но дальше встает вопрос, что делать с сообществами поменьше. Первый вариант: можно делать всё то же самое, что и в больших сообществах, но тогда есть шанс, что некоторые маленькие сообщества могут стать очень особенными, специфическими. И так как таких данных будет мало, наша модель никогда не сможет обучится на этом конкретном сообществе. Обязательно найдётся сообщество, где люди, например, хотят встречаться только онлайн или замэчтиться с теми, кто вообще на них не похож.
Для таких сообществ мы разработали другой путь — то что мы называем формулой. Это когда нет предсказательной модели, но есть алгоритм, который позволяет просто сообщить модели, что здесь, например, надо мэтчить людей точь-в-точь одного возраста. И так можно вручную выбрать важность разных критериев.
Итого
Процент успешно состоявшихся встреч растет, но пока не для всех факторов мэтчинга мы придумали, как совместить принципы, этику и эффективность алгоритма — продолжаем думать и экспериментировать в этом направлении вместе с дата-сайнтистами из ACMetric. Использование модели для подбора собеседников вряд ли «решит все проблемы», но точно может сделать процесс поиска новых друзей и профессиональных связей более простым и эффективным.