«Это сходство, дурак!» Игра свахи между событиями и пользователями.

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

Сказав это, мы должны с чего-то начать, верно?

Давайте заглянем под капот, чтобы увидеть, что готовит Биллетто.

Прямо сейчас мы представляем рекомендации посетителям, которые явно указали, какие события им нравятся. Они либо уже посещали мероприятия Billetto, либо лайкнули их на веб-сайте Billetto.

Как только мы узнаем предпочтения пользователя, мы можем начать находить события, соответствующие им. По сути, все дело в выявлении сходства между событиями. Кто знал?!

Чтобы найти эти сходства, мы рассмотрим несколько факторов.

1. Описания событий
Если в событии А и событии Б упоминаются одни и те же уникальные ключевые слова, например «вечеринка у бассейна» или «битва нунчаков» — можно предположить, что они хоть чем-то похожи.

(Технический способ, которым мы ищем эти сходства, заключается в использовании статистики tf-idf, которая означает частота термина — обратная частота документа и определенно не является выдуманным термином, который мы только что придумали.)

2. Местоположение
Если человек посетил мероприятие (или ему понравилось), будет справедливо предположить, что либо мероприятие находится недалеко от того места, где он находится, либо что он хочет туда поехать. Так что имеет смысл посмотреть на другие события поблизости при выявлении сходства.

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

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

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

6. Цена билета
Цена билета также говорит нам, когда два мероприятия находятся в одном ценовом диапазоне и потенциально интересны похожим людям.

«Но подождите, разве некоторые из этих факторов не лучше предсказывают сходство, чем другие?» Вы можете задаться вопросом.

Ты прав, проницательный читатель!

Вот почему мы присваиваем каждому из них разные веса:

feature_weights = {
    descriptions.similarity: 2,
    bookings.similarity_n_tickets: .5,
    bookings.similarity_mean_price: .5,
    duration.similarity: .5,
    location.similarity: .5,
    start_time.similarity_tod: .25,
    start_time.similarity_dow: .25,
}

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

Всякий раз, когда люди, которые ранее посещали мероприятие или ему понравилось, возвращаются на сайт — это около 60% пользователей Billetto — мы можем представить им набор мероприятий, максимально похожих на исходное.

Аккуратно, да?

Как именно это выглядит, мы расскажем в одном из следующих постов.

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

Но шаг за шагом, как говорится…

Смотреть эту тему.

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

У вас есть мысли или опыт работы с рекомендациями по мероприятиям? Мы хотели бы услышать их. Вы можете оставить комментарий или отправить электронное письмо со своими мыслями на [email protected]. Мы прочитаем. Обещание.