Нерандомный кофе: как мы в Random Coffee знакомим людей с помощью «умных» алгоритмов

Когда работаешь в ИТ, потихоньку замечаешь, что всё вокруг «умное»: технологии, алгоритмы и так далее. И приходишь к мысли, что и свой продукт пора обучать. Вот и мы решили подключить искусственный интеллект к нашему сервису для знакомств Random Coffee. В этой статье я, кофаундер Random Coffee Паша Козлов, и Пётр Пушкарь из компании ACMetric рассказываем, как проходила наша работа в этом направлении, и что ещё предстоит улучшить.

Random Coffee — это сервис для профессиональных и дружеских знакомств. Вы оплачиваете подписку, выбираете сообщества, внутри которых хотите знакомиться (профессиональных или по интересам) — и каждую неделю телеграм-бот сообщества будет присылать вам контакт нового собеседника. Кроме этого, вы можете запустить рэндом кофе-встречи в своём сообществе.

Нерандомный кофе: как мы в Random Coffee знакомим людей с помощью «умных» алгоритмов

«Небось руками мэтчите пары?»

— так начал беседу наш знакомый разработчик. И действительно, первые недели существования Random Coffee мы мэтчили собеседников вручную — это ведь была всего лишь проверка гипотезы. Но многолетний опыт работы в IT говорил, что нужно придумать более «умное» решение. Да и личный опыт использования продукта (а я сходил на 100 встреч, после чего перестал считать) подсказывал, какие критерии умного мэтчинга хотелось мне или собеседникам.

Так выглядел подбор собеседников на заре существования Random Coffee.
Так выглядел подбор собеседников на заре существования Random Coffee.

Умный мэтчинг 1.0

Силами технического директора Рамиля мы сделали мэтчинг по раундам. По сути это копия того, что есть в дейтинг сервисах. Сначала мы учитываем все факторы: город, возраст, рейтинг ответственности (насколько ты держишь обещания перед своими собеседниками и ходишь на встречи) и так далее. Из условных 100 человек 20 совпало по всем критериям — это идеальный матч! Остальные 80 переходят в следующий раунд. У 20 из них не совпадают, например, ожидания от встречи — «фан-польза» — но совпадает всё остальное. Получилось ещё 10 пар, остальных — в следующий раунд. Это увеличивает процент успешно состоявшихся встреч.

Как в истории появились ACMetric

Решение еще улучшить мэтчинг произошло во время дружеской беседы. Я случайно познакомился с Артёмом из ACMetric, и, естественно, мы разговаривали о том, кто чем занимается. Я рассказывал Артёму, что делаю сервис для дружеских и профессиональных знакомств, а он в ответ начал рассказывать о рекомендациях ценообразования для компании Adidas, о работе с большим объёмом данных и о чём-то ещё на «дата-сайнтистском». Стало понятно, что его работа может пригодиться и в Random Coffee.

Тот самый первый созвон с ребятами
Тот самый первый созвон с ребятами

Помню на первой встрече с его командой было захватывающее чувство: 5 человек в Zoom, все умные, кто-то говорит: «Я PhD в математике, кстати, занимался как раз алгоритмами матчинга, есть такой класс задач. Присоединился ко встрече, чтобы немного вас проконсультировать». Круто! Так мы начали работать с ACMetric, и по сей день мы продолжаем улучшать с ними наши алгоритмы.

Умный мэтчинг 2.0

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

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

Это то, что называют maximum weight matching — когда мы хотим оптимизировать что-то одно. Большой вопрос, что именно. Мы решили оптимизировать количество встреч, которые, скорее всего, случатся. Эти предположения мы строим на основе истории встреч пользователей. Машина обучения пытается предсказать по паре людей, которые ещё не виделись, вероятность того, увидятся они или нет. И в итоге алгоритм мэтчинга максимизирует количество встреч, которые произойдут.

Что ещё учитывает модель

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

  • История встреч пользователя
    Как регулярно человек ходит на встречи, пропускает ли он их или нет.
  • Ожидания от встречи
    Соотношение фана и пользы, которое пользователь хочет получить от встречи.
  • Предпочитаемый формат встречи
    Офлайн в своём городе или онлайн из любой точки мира.
  • Интересы и рассказ о себе
    Пока самые сложные данные для использования. Люди могут сказать одно и то же разными словами: «Практикую mindfulness» и «Люблю практики осознанности». В частности мы пробуем расширять через словарь синонимов тексты людей о себе и уже потом искать пересечения по интересам.
А на выходе получается такая абракадабра, которая говорит нашей системе, кого с кем стоит познакомить :)
А на выходе получается такая абракадабра, которая говорит нашей системе, кого с кем стоит познакомить :)

Этические сложности с различными критериями

Возраст

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

Иногда пользователи жалуются: «Этот собеседник слишком молодой, о чём нам разговаривать?». Или наоборот. Мы отвечаем:

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

Пол

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

Мой друг рассказывал: «Я зарегался в Random Coffee, и мне первой собеседницей выпала девушка! Я знаю что вы не про романтические знакомства, но наверняка так ведь запрограммировано! Красава, шикарно придумал, я прям сразу подсел на ваш продукт». Пользователи многое приписывают нашим алгоритмам, так что я не удивлён. Но если он так супер-рад, может быть так и надо делать?

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

Работа продолжается

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

Мы с коллегами ведём телеграм-канал Random Coffee Talk, где делимся лайфхаками для общения и нетворкинга, собственными историями о дружбе и честно рассказываем, как продвигаются дела у нашего проекта. Если вам интересна внутренняя кухня проекта, например, как он поменялся за последние 4 года или какие фичи мы вводили для улучшения пользовательского опыта, подписывайтесь.

1111
6 комментариев

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

Ответить

наш сервис решает проблему одиночества и социализации (в России, например, 43% населения страдает от одиночества), и мы видим, что запрос на недейтинговые знакомства только растет.
Пессимизм понятен, но не секрет — все у нас хорошо)

4
Ответить

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

1
Ответить

Как на это посмотреть: на такой встрече можно узнать что как работает "во внешнем мире", так как в периметре компании могут циркулировать одни и те же идеи, а что-то свежее может быть получится почерпнуть снаружи :)

1
Ответить

Ко всем рандомкофе у меня один вопрос: как не зае#ываться рассказывать одно и то же разным людям?

Меня хватило на две встречи, я понял что не хочу говорить. А слушать и задавать вопросы нравится)

Ответить