Это третья часть моего любимого проекта по созданию персонализации Yelp. Вот ссылки на Части Один и Два. В последний раз мы остановились на определении KPI и OKR, которые мы будем использовать для оценки нашего прогресса за квартал и год. Это было основано на действительно полезном фреймворке, который я изучил в Anova, описание которого можно найти здесь.

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

Основы машинного обучения

В настоящее время для рекомендации товаров, которые могут вам понравиться, используется несколько алгоритмов:

  • Совместная фильтрация (CF)- 1) Находить группы похожих пользователей (сходство можно аппроксимировать косинусным сходством); 2) затем примените взвешенное среднее арифметическое на основе того, насколько другие пользователи похожи на данного пользователя для определенного элемента (например, фильм для Netflix или ресторан для Yelp), чтобы найти прогнозируемый балл для этого пользователя. По сути: это понравилось вашим друзьям, поэтому мы думаем, что вам это понравится.
  • Разложение матрицы — получаем два вектора: u и v, где u описывает интересы пользователя, а v описывает параметры для элемента (опять же, например, элемент для Netflix будет фильмом, а для Yelp — рестораном), и можно сделать прогноз относительно оценки пользователя для элемента, взяв скалярное произведение. Проще говоря: «мы считаем, что вы ОЧЕНЬ любите боевики и относитесь к комедиям прохладно, поэтому мы думаем, что вам понравится этот фильм, в котором много экшена с небольшой примесью комедии».
  • Кластеризация — по существу сводится к разделению большого набора данных на группы меньших репрезентативных наборов данных, иначе такие инструменты, как CF и декомпозиция матрицы, будут работать слишком долго. Затем из этих меньших кластеров вы можете запустить CF или декомпозицию матрицы.
  • Глубокое обучение — это для меня Подземье. Я оставляю это кандидатам наук

Примеры компакт-дисков

Spotify — действительно хорошая компания, на которую можно посмотреть в качестве примера — у них миллионы элементов и пользователей, а музыка очень субъективна. Их плейлисты Weekly Discover регулярно получают восторженные твиты о своей точности. Есть множество постов в блогах, подробно описывающих, как они это делают. Вместо этого я думаю, что самое интересное — посмотреть, как эта модель может быть полезна для Yelp.

Spotify использует несколько методов:

  • CF, чтобы найти рекомендации на основе ваших друзей и плейлистов, на которые вы подписаны
  • NLP и веб-сканирование для классификации песен на основе сообщений в блогах и письменного текста о песнях, чтобы отсортировать их по собственным внутренним категориям.
  • Глубокое обучение для анализа необработанных аудиоданных с помощью ряда нейронных сетей для определения таких категорий, как тактовый размер, громкость, темп, тональность и т. д.

Все это объединено, чтобы дать вам рекомендацию о том, что вам может понравиться. Мы можем довольно легко увидеть, что многое из того, что делает рекомендацию песен сложной, делает рекомендацию ресторанов столь же сложной: это субъективно, люди капризны, удовольствие и атмосфера очень тесно связаны. Однако одним дополнительным усложняющим фактором является то, что стоимость плохой рекомендации для Spotify намного ниже: пользователю просто нужно нажать «Пропустить». Но пользователю Yelp, скорее всего, придется платить деньги, которых он не хочет.

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

Изменение тела Yelp (данных)

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

С этой целью вот некоторые инструменты или флаги, которые мы могли бы использовать для определения «правильности рекомендации»:

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

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