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

После запуска Pinnability пины-кандидаты для домашнего канала оцениваются с использованием моделей Pinnability. Баллы представляют собой персонализированную релевантность между пином-пином и пинами-кандидатами. Пины в домашней ленте имеют приоритет по оценке релевантности, как показано на рисунке 2.

Обеспечение устойчивости с помощью машинного обучения

Чтобы точно предсказать, насколько вероятно, что пиннер будет взаимодействовать с пином, мы применили современные модели машинного обучения, в том числе Логистическая регрессия (LR), Машины опорных векторов (SVM), Деревья решений с градиентным усилением. (GBDT) и Сверточные нейронные сети (CNN) . Мы извлекли и протестировали тысячи текстовых и визуальных функций, которые полезны для точного прогнозирования оценки релевантности. Прежде чем запустить модель онлайн-эксперимента A / B, мы тщательно оцениваем ее офлайн-эффективность на основе исторических данных.

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

Генерация обучающего экземпляра

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

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

  • Функции PIN-кода отражают внутреннее качество PIN-кода, например историческую популярность, актуальность PIN-кода и вероятность спама. Также включены визуальные функции сверточных нейронных сетей (CNN).
  • Функции пиннера связаны с особенностями пользователя, такими как активность пиннера, пол и статус доски.
  • Функции взаимодействия отражают прошлое взаимодействие пиннера с пинами аналогичного типа.

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

Основная проблема, с которой мы столкнулись при разработке надежного конвейера генерации обучающих данных, заключалась в том, как справиться с большими объемами данных. Мы создали конвейеры MapReduce для генерации обучающих экземпляров, каждый из которых представляет взаимодействие Pinner / Pin. Обучающий экземпляр содержит три части информации:

  • Мета-данные (Pin ID, Pinner ID, источник взаимодействия, временная метка и т. Д.) Для группировки данных, когда мы хотим обучить и проанализировать модель Pinnability с подмножеством обучающих экземпляров, таких как модели Follow и Picked For You (PFY). .
  • Целевое значение, указывающее, предпринял ли Пиннер положительные действия после просмотра Пина. Мы можем обучать отдельные модели, которые оптимизируют различные положительные действия, такие как репины и переходы по ссылкам.
  • Вектор признаков, содержащий информативные сигналы для прогнозирования взаимодействия.

Генерация модели закрепляемости

При обучении моделей закрепляемости мы используем Площадь под кривой ROC (AUC) в качестве основного показателя автономной оценки, а также r-квадрат и среднеквадратичную ошибку. Мы оптимизировали для AUC не только потому, что это широко используемый показатель в аналогичных системах прогнозирования, но и потому, что мы наблюдали сильную положительную корреляцию между приростом AUC от офлайн-тестирования и увеличением вовлеченности Пиннера в онлайн-эксперименте A / B. Наша производственная модель Pinnability достигает показателя AUC в среднем около 90 процентов для домашнего корма.

Мы экспериментировали с несколькими моделями машинного обучения, включая LR, GBDT, SVM и CNN, и мы используем оценку AUC при 10-кратной перекрестной проверке и настройках разделения поезда-теста 90/10 с правильными параметрами модели для оценки. Мы заметили, что при фиксированном наборе функций выигрышная модель всегда имеет тенденцию быть либо LR, либо GBDT для Pinnability. Для онлайн-экспериментов A / B мы отдаем предпочтение моделям на основе автономных оценок AUC.

Среди тысяч функций, которые мы добавили в учебные экземпляры, мы выбираем функции, которые значительно увеличивают нашу автономную метрику AUC, в качестве кандидатов для онлайн-экспериментов A / B. Учитывая большое количество функций-кандидатов, мы часто тестируем новые функции в небольших группах, например, новизну, качество владельца пина и функции соответствия категории. Эксперименты A / B, которые мы провели, сравнивают взаимодействие Пиннера между контрольной группой, использующей производственные функции, и группой лечения, использующей новые экспериментальные функции. Если результаты положительные, мы оцениваем влияние дополнительного размера данных и задержки на наши серверы, прежде чем добавлять новые функции в наши производственные модели Pinnability. Мы быстро перебираем новые функции, поддерживаемые нашими надежными конвейерами для создания обучающих экземпляров, обучения моделей и оценки. Чтобы отслеживать текущую производительность моделей, мы сохраняем небольшую группу пользователей, которая не имеет доступа к моделям Pinnability. Сравнение разницы во взаимодействии между удерживающими и активными группами дает ценную информацию о долгосрочной эффективности Pinnability.

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

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

Подача домашнего корма

Домашний корм работает на нашей собственной интеллектуальной инфраструктуре кормления. Когда новый пин повторно вводится, работник умной ленты отправляет запрос на серверы Pinnability для получения оценок релевантности между повторно введенным пином и всеми людьми, которые следят за повторным пиннером или доской. Затем он вставляет пины с оценками в пул, содержащий все следующие пины. Пины PFY вставляются в пул PFY с оценкой актуальности Pinnability аналогичным образом.

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

Результат закрепляемости

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

Учитывая важность домашней ленты и повышение вовлеченности Пиннеров, Pinnability продолжает оставаться ключевым проектом в создании нашей системы открытий. Мы также начали расширять использование наших моделей Pinnability, чтобы помочь улучшить другие наши продукты за пределами домашней ленты.

Мы всегда ищем талантливых инженеров, которые присоединятся к Pinterest и помогут нам в решении серьезных проблем, таких как Pinnability.

Юнсун Го (Yunsong Guo) - инженер-программист в группе рекомендаций

Выражение признательности: Pinnability - это долгосрочный стратегический проект, разрабатываемый в сотрудничестве с Мукундом Нарасимханом, Крисом Пинчаком, Ючен Лю, Дмитрием Чечиком и Хуэй Сюй. Эта команда, а также сотрудники компании помогли воплотить этот проект в жизнь благодаря своим техническим знаниям и бесценным отзывам.

Для получения технических новостей и обновлений Pinterest следите за нашими инженерными Pinterest, Facebook и Twitter. Заинтересованы в присоединении к команде? Посетите наш Сайт вакансий.