TGViewer
Information Retriever Information Retriever @inforetriever · 4.13K subscribers
Post #97 3.68K
Related Pins at Pinterest: The Evolution of a Real-World Recommender System.

В далеком 2013-м году два инженера из Пинтереста за три недели склепали первую версию рексистемы для рекомендаций похожих пинов: взяли Pin-Board граф, посчитали мапредьюсом совстречаемости пинов, положили результаты в kv-хранилище. Через два года под развитие этого модуля выделили отдельную команду, и к моменту, когда в 2017-м году была опубликована обсуждаемая статья, уже 40% всех показанных и сохраненных пинов атрибуцировалось рекомендациям похожих пинов.

Что было сделано:

1. Перешли на случайные блуждания (Pixie) вместо мапредьюсного подсчета совстречаемостей. Вдохновлялись наработкой Твиттера аж 2013-го года, WTF: The Who to Follow Service at Twitter. Как минимум забустили качество для более редких, "тяжелохвостовых" пинов, у которых не набиралось достаточное количество соседей в своих бордах.

2. Добавили ранжирование:
* вырастили клики и сохранения пинов на 30% с помощью линейной модели над девятью фичами, использующей только характеристики query/candidate пинов (эмбеды текстов, картинки, категории, etc)
* добавили персонализацию: историю пользователя, соцдем, etc
* перешли на градиентный бустинг: это позволило упростить препроцессинг фичей (нормализацию, бакетизацию, etc), а также дало возможность добавлять query-level фичи
* пересели на pointwise (!) лосс вместо pairwise
* spoiler: позже они перейдут на ранжирующую нейросеть, о чем я рассказывал в посте про эволюцию ранжирования в Pinterest

3. Увеличили полноту/разнообразие кандидатогенерации, добавив больше источников кандидатов:
* Pin2Vec: word2vec над сессиями пользователей, эмбеды пинов из которого используются в ANNS
* поисковые кандидаты: ходят с текстовыми аннотациями query-пина в свой текстовый поиск, и с картинкой в визуальный; помогло с холодным стартом
* "срезовые" кандидатогенераторы: выделили отдельные кандидатогенераторы для более специфичных срезов пинов (e.g. свежие, региональные пины)

4. Про проблемы:
* фидбек луп: не получалось побить продовую ранжирующую модель, обучаясь на её же фидбеке; выделили для обучения 1% трафика, в котором отобранные кандидаты ранжировались случайно. Получили более хорошие модели, чем на исходном большом трафике
* меморизующие счетчики: была еще такая штука как MemBoost, которая изначально использовалась как прибавка к скору Pin-Board совстречаемости; по сути, это взвешенная сумма счетчиков вида "сколько раз при показе данного кандидата по этому запросу пользователи его сохраняли/кликали/etc". После введения ранжирующей модели стали использовать их в качестве фичей. Заметили, что из-за них сложно проводить АБ — эффекты от оцениваемых изменений прорастают через них в другие сплиты, и обратный эксп тоже нормально не поставишь; но ничего с этим не сделали
* столкнулись с тем, что любое изменение в рексистеме инвалидирует оптимальность всех ее компонентов, и всякие захардкоженные гиперпараметры/константы нужно переподбирать; полечили это автоматизацией — при каждом изменении стараются как можно больше всего автоматически перетюнить

5. Еще чуть про инфру:
* было сложно итерироваться, когда весь стек, включая ранжирование, был оффлайновый; каждое изменение ранжирования/кандгена требовало полный переобход всей базы; покрытие запросов тоже было не очень; в итоге перевели ранжирование и большую часть кандидатогенераторов в онлайн
* передавать по сети туда-сюда сырые данные пинов, чтобы посчитать фичи — затратно, система будет упираться в сеть; поэтому делают шардирование исходной базы кандидатов; на каждом шарде хранятся все сырые данные про пины и сразу считаются все нужные скоры / фичи

Это была краткая историческая сводка из 2017-го года. Что произошло за следующие семь лет? To be continued :)
  • 🔥 48
  • ❤ 2
  • 👍 2
More from @inforetriever
  1. Sep 24, 2026Не знаю, как студенты сейчас проводят свободное время (кэгл решают?), а мы в свое время по…
  2. Sep 24, 202628 сентября начинается ACM RecSys'26 в Миннесоте. Впервые за три года его пропускаю (RecSy…
  3. Sep 22, 2026По мотивам поста Вани Рубачёва Вечная классика
  4. Sep 19, 2026А я сегодня стал лауреатом премии Yandex ML Prize! В номинации “Преподаватели”. Спасибо вс…
  5. Sep 19, 2026Я не покемон, но меня можно сегодня поймать на Practical ML Conf :)
  6. Sep 18, 2026WARNING: пост на отвлеченную тему)) Я люблю историю. В детстве мне попадались различные кн…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →