Персонализируйте свой опыт TicketSwap
Как мы создали систему рекомендаций, чтобы наши фанаты не пропустили мероприятия, которые они хотят посетить.
TicketSwap используется миллионами пользователей по всему миру для поиска билетов на концерты, шоу и другие мероприятия, которые они хотят посетить. Некоторые фанаты приезжают на фестивали, они не хотят пропустить ни одного выпуска любимых фестивалей! Некоторые поклонники предпочитают именно концерты джаз, поп или металл. Некоторые фанаты приходят сюда за вдохновением, чтобы открыть для себя новые события, о которых они даже не подозревали. Вам нужен сервис, который вам подходит.
Совершенно естественно, что мы хотим, чтобы наш веб-сайт и мобильные приложения были персонализированы, чтобы обслуживать разных пользователей в соответствии с их вкусами и потребностями. В то время как стандартный механизм рекомендаций мог бы быть легким, вы поймете, почему мы выбрали индивидуальное решение.
Почему мы не использовали готовую систему рекомендаций?
Spotify имеет отличный механизм рекомендаций. Мы черпаем в них много вдохновения, но между ними есть несколько ключевых отличий. Когда вы слушаете исполнителя на Spotify, не имеет значения, где вы находитесь в данный момент. В TicketSwap, с другой стороны, вы собираетесь поехать на концерт, и не очень полезно, если мы порекомендуем вам мероприятие на другой стороне земного шара - фактически, это ухудшит качество обслуживания клиентов!
Вы также можете основывать свое решение на том, есть ли в наличии билеты и собирается ли кто-нибудь из ваших друзей посетить тот же концерт. Более того, вы, вероятно, слушаете десятки песен каждый день, но вы не покупаете столько билетов на TicketSwap каждый год. Таким образом, наша рекомендация должна соответствовать вашему вкусу с минимальным объемом данных.
Точно так же механизм рекомендаций, созданный для веб-сайта электронной коммерции, построен на концепциях предметов; Покупатели, купившие эти носки, тоже интересуются этим шарфом. У них нет представления об артистах, местах проведения и времени начала мероприятия.
И, наконец, пользователь, скорее всего, простит слабую рекомендацию по музыке в потоковом сервисе, если он может просто перейти к следующей песне на Spotify или к следующему видео на YouTube. Но когда им нужно заплатить, чтобы получить билет на мероприятие, у них может не быть такой же терпимости.
Учитывая все это, мы знали, что должны создать нашу собственную систему рекомендаций, чтобы мы могли адаптировать ее - и масштабировать - в соответствии с нашими потребностями.
Художники и организаторы - краеугольный камень нашей системы рекомендаций.
Мы опросили наших фанатов, спрашивая их об основных факторах, на которых они основывают свои решения о проведении мероприятия. Организаторы мероприятий и артист, который там играет, были их главными приоритетами.
Технически мы также должны были решить, на чем основывать наши рекомендации. Здесь у нас был широкий выбор: на одном конце спектра у нас есть широкие музыкальные жанры; пользователям, которые ходили на поп-концерты, понравятся все остальные поп-концерты. Очевидно, что жанры очень широки, и некоторые из более крупных жанров, такие как поп или электронная музыка, не имеют большого значения. На другом конце спектра у нас есть миллионы событий в нашей системе, и основывать нашу систему рекомендаций на конкретных событиях не получится.
Нам нужна была золотая середина, и реакция наших поклонников была музыкой для ушей нашей группы данных.
Решения носят не только технический, но и организационный характер.
Прежде чем перейти к нашей технической реализации, которую я объясню в следующем разделе, нам нужно сначала поработать. У нас не было достаточного количества художников в нашей базе данных, а те, которые у нас есть, редко указывались в событиях, в которых они участвуют. Вот почему нам нужно было, чтобы разные команды в нашей организации собрались вместе и решили недостающие кусочки нашей головоломки.
Мы искали источники, чтобы обогатить наш контент, добавив пропавших без вести исполнителей в нашу базу данных. Затем мы создали сценарий, чтобы вывести имена групп и артистов на основе событий, в которых они играют. Мы также использовали наши внутренние модели, которые предсказывают будущий спрос на каждое событие, чтобы помочь нашей контент-команде сосредоточиться на соответствующих событиях.
Мы хотели загрузить наши данные и быстро доказать ценность, которую система рекомендаций предлагает нашим фанатам. И как только у нас было проверенное решение, теперь у нас есть лучшая система с более точными данными.
Наш подход нейронного встраивания
Тем временем наша команда по машинному обучению решила применить метод нейронного встраивания для нашей системы рекомендаций. Если этот термин кажется вам немного загадочным, вот краткое объяснение;
Компьютеры лучше справляются с числами, поэтому ученые-компьютерщики придумали способы представления слов в числах. Важно, чтобы эти изображения также отражали значение слов, которые они представляют. Цифры, обозначающие слова дерево, растение, трава и куст, должны быть ближе друг к другу, чем к таким словам, как бургер, картофель фри и мороженое. Для этого используются модели, основанные на нейронных сетях, для создания этих новых представлений, более известных как встраивание.
Мы использовали аналогичную систему для представления художников и организаторов в нашей базе данных. В нашей системе похожие исполнители представлены числами, близкими друг к другу. Эти числовые представления позволяют нам выполнять с ними математические операции. Если вы добавите изображения двух художников, скажем Ариана Гранде и Шон Мендес, вы получите новое изображение гипотетического художника, которое нравится поклонникам этих двух художников.
Мы реализовали нашу систему нейронного внедрения, используя библиотеку Python под названием Gensim. Я бы не стал здесь вдаваться в подробности реализации, но вы можете оставить комментарий, если у вас возникнут дополнительные вопросы о нашей реализации.
Для мероприятия мы используем вложения для его организаторов и всех артистов, выступающих там, чтобы представить его. Точно так же вкус пользователя определяется мероприятиями, которые он посещал в прошлом. Таким образом, мы можем рекомендовать события пользователям, а также показывать похожих артистов и похожие события на наших страницах исполнителей и событий соответственно.
Успех первых итераций нашей модели побудил нас продолжать улучшать ее. Например, мы знаем, что географические расстояния - не единственный решающий фактор, когда наши фанаты решают путешествовать. Житель меньшего города с большей вероятностью будет посещать мероприятия в более крупных близлежащих городах, чем наоборот. Поэтому нам нужно было найти способ измерить склонность фанатов из одного города путешествовать в другой город. Эта дополнительная модель использовалась для дополнения решений, принимаемых нашей системой рекомендаций.
Конечно, система рекомендаций не имеет значения, если ее результаты недоступны для пользователей! Работа наших дизайнеров и разработчиков воплотила его в жизнь, реализовав и показав в нужных частях нашей платформы.
Несколько заключительных замечаний, прежде чем вы попробуете это дома!
Подготовьте доказательство концепции на раннем этапе. Когда мы разрабатывали план по внедрению нашей системы рекомендаций, мы знали, что наши данные еще не готовы. Нам нужно было добавить больше артистов в нашу базу данных и подключить их к как можно большему количеству событий. Тем не менее, мы не могли ждать несколько месяцев, чтобы решить, сработает наш подход или нет. Таким образом, мы решили построить нашу систему на данных, которые у нас были тогда. Мы хотели убедиться, что он работает с нашими ограниченными данными, помня при этом, что он улучшится, когда в нашу систему будет добавлено больше данных. Это подводит нас к следующему вопросу: как проверить, работает ли ваше доказательство концепции?
Будьте готовы заранее сформулировать критерии тестирования: мы создали небольшой набор тестов, в котором вручную собрали похожих художников. Мы использовали его для тестирования нашей модели во время ее разработки. Это также помогло нам на ранней стадии точно настроить параметры модели Word2Vec.
Доказательство того, что пудинг есть в поедании: недостаточно того, что наша модель получила хорошие оценки в нашем наборе данных об игрушках. Важно, чтобы он действительно отвечал потребностям наших клиентов. Вот почему мы отслеживали просмотры страниц и клики. Мы хотели измерить, насколько эта модель лучше, чем нынешний статус-кво. Для страниц событий мы обычно показывали другие популярные события внизу страницы. Прежде чем заменить это нашими рекомендуемыми событиями, мы должны были убедиться, что наша новая модель улучшает рейтинг кликов как показатель того, насколько полезны наши рекомендации для наших пользователей. Кстати, благодаря новым рекомендациям наш коэффициент конверсии увеличился вдвое.
Будьте готовы к повторению: модель хорошо работает для наших существующих пользователей, но она ничего не знает о наших новых пользователях. Имейте в виду, что они могут покупать билеты в других местах, кроме нашей платформы. Чтобы уловить их вкус на ранней стадии, наша продуктовая группа предоставляет пользователям возможность следить за артистами, которые им нравятся, и за организаторами мероприятий, которые им небезразличны. Эти данные помогли нам улучшить модель после того, как год назад была реализована новая функция.
Понимание проблемы - это половина решения. Мы хотели дать нашим пользователям лучшие рекомендации с минимальным объемом данных о взаимодействии. Мы также знали, что качество нашей модели зависит от качества имеющихся у нас данных. Таким образом, мы должны объединить несколько команд для работы над долгосрочным решением, в котором мы сможем построить систему, чтобы лучше понимать наших пользователей и наш контент. Результатом совместных усилий стала система, используемая в разных частях нашей платформы. Мы гордимся тем, что создали на данный момент, и будем рады услышать ваши отзывы, чтобы продолжать улучшать это.