Сегодня 💻 💻 💻 💻
А что ботаем? Ботаем фундаментальный RecSys
А начнем мы с постановки задачи и небольшого экускурса по проблемам насущным:
🔸 есть товары (item)
🔸 есть пользователи (user)
🔸 для каждого пользователя знаем историю его целевых действий (заказы, клики и тп)
🔸 для каждого пользователя знаем его персональные данные (в идеале)
🔸 для каждого товара знаем его описание и характеристики
Ну чего хочется? Хочется предложить пользователю максимально подходящий товар. На самом деле, рексис и ранжирование хорошо дружат и держатся за ручки, поэтому, изучив ранжирование, вы, скорее всего, изучите и рексис:
Коротюсенько осветим 5 ключевых подходов (хотя половина из них сводится к косинусному расстоянию между векторами товаров и пользователей):
1⃣ Ее величество Колаборативная Фильтрация (CF). Суть в том, что хотим прогнозировать интересы пользователя по похожим пользователям
Все просто:
🔸 Составляем матрицу user-item (на пересечениях ставим 1, если пользователь купил, и 0, если пользователь ничего не делал с этим товаром)
🔸 Хотим спрогнозировать следующий заказ K-го пользователя (то есть хотим узнать, где в K-й строке матрицы появится следующая единичка)
🔸 Ну и самое очевидное - найти самые похожие строки и посмотреть, какой item там самый популярный из тех, которых нет у K-го пользователя
🔸 Достаточно грубый пример, но суть вы уловили. Вот тут поподробнее про user-based CF https://habr.com/ru/companies/lanit/articles/420499/
2⃣ Нейроночки.
Ну понятно, трансформеры, RNN. Глубоко тут вдаваться не буду, многое описал в постах про ранжирование. Сюда отнесу всякие двубашенные архитектуры, DSSM, KNRM, SASRec (статья полезная достаточно https://habr.com/ru/companies/prequel/articles/573880/)
3⃣ Ну катбусты мои родимые.
И в классификацию могут, и в регрессию, и в ранжирование. Про LambdaMART, YetiRank коротюсенько упоминалось уже в Ранжировании, поэтому сильно тормозить на этом не будем. Вот небольшая страничка про Lambda https://how.dev/answers/what-is-lambda-rank
4⃣ Факторизационные машины. Получаем с помощью матричного преобразования вектора (эмбеддинги) пользователей и товаров, а далее творим с ними все, что душе угодно
Примеры: SVD, SVD+, ALS… Тут оставлю обзор на алгоритмы матричной факторизации
https://habr.com/ru/articles/486802/
5⃣ KNN и ANN. Получили мы много-много векторов для пользователей и товаров, а дальше хотим среди них как-то искать ближайшие. Об этом поговорим в отдельном посте
Резюме: рексис - это достаточно красиво, иногда интерпретируемо, бизнесово и модно. Миллиард подходов и методов и зачастую число видюх вообще не роляет
⬇ Напишите в комментариях, по какому подходу или модели хотите увидеть пост
#Ботаем
А что ботаем? Ботаем фундаментальный RecSys
А начнем мы с постановки задачи и небольшого экускурса по проблемам насущным:
Ну чего хочется? Хочется предложить пользователю максимально подходящий товар. На самом деле, рексис и ранжирование хорошо дружат и держатся за ручки, поэтому, изучив ранжирование, вы, скорее всего, изучите и рексис:
1⃣ Ранжирование раз https://t.me/pleshakovsky/6812⃣ Ранжирование два https://t.me/pleshakovsky/694
Коротюсенько осветим 5 ключевых подходов (хотя половина из них сводится к косинусному расстоянию между векторами товаров и пользователей):
Все просто:
Ну понятно, трансформеры, RNN. Глубоко тут вдаваться не буду, многое описал в постах про ранжирование. Сюда отнесу всякие двубашенные архитектуры, DSSM, KNRM, SASRec (статья полезная достаточно https://habr.com/ru/companies/prequel/articles/573880/)
И в классификацию могут, и в регрессию, и в ранжирование. Про LambdaMART, YetiRank коротюсенько упоминалось уже в Ранжировании, поэтому сильно тормозить на этом не будем. Вот небольшая страничка про Lambda https://how.dev/answers/what-is-lambda-rank
Примеры: SVD, SVD+, ALS… Тут оставлю обзор на алгоритмы матричной факторизации
https://habr.com/ru/articles/486802/
Резюме: рексис - это достаточно красиво, иногда интерпретируемо, бизнесово и модно. Миллиард подходов и методов и зачастую число видюх вообще не роляет
#Ботаем
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegram
Канал Доброго Вани | Data Science
Ранжирование. 🟢 easy
🔥 Как договаривались, пишу постик по ранжированию. В блоке easy обсудим метрики и базовый подход.
❓ Представим, что блэкбокс принимает запрос (например товар, к которому мы хотим найти наиболее похожие товары из Базы Данных) и выдает…
🔥 Как договаривались, пишу постик по ранжированию. В блоке easy обсудим метрики и базовый подход.
❓ Представим, что блэкбокс принимает запрос (например товар, к которому мы хотим найти наиболее похожие товары из Базы Данных) и выдает…
🔥5❤1👍1
Обещанный пост про векторные индексы
Для таких задач и существует так называемый векторный индекс и очень часто в этом контексте всплывает библиотечка FAISS. Какие же варианты структуры индекса предоставляет эта библиотека и какие еще там есть трюки? Обсудим самые популярные варианты
Позволяет сжать вектора. Метод заключается в том, что каждый вектор разбивается на подвектора, подвектора кластеризуются и формируется новый вектор, состоящий из номеров кластеров.
Метод предлагает разбить векторное пространство на кластеры и к каждому кластеру вычислить его "центроиду". Далее сами кластеры будут храниться на диске, а маппинг центроид с кластерами в ОЗУ. Таким образом, когда вы будете искать ближайший вектор, вы сравните его с векторами центроид и для ближайшей центроиды возьмете ее кластер с векторами.
Можно сказать, SOTA метод приближенного поиска ближайших соседей, основывающийся на жадном обходе графа (по сути, как правило 7 рукопожатий. Как до любого человека можно добраться через 7 рукопожатий, так и до похожего вектора можно добраться через N прыжков по графу, где каждый вектор - это узел)
Рекомендуемые базовые конфигурации:
1млн - 10млн векторов : IVF65535_HNSW32 (Т.е. 65535 центроид и 32 слоя графов)
10млн-100млн векторов : IVF262144_HNSW32
Самостоятельно также советую изучить подходы K-D Tree, LSH и ANNOY
Где это можно применять?
Например, мой коллега Андрей, админ канала @awesome_dl , выпустил свежий пост, где создал бота для Q&A по курсу диффузионных моделей. И чтобы улучшить его планирует добавить механизм памяти, как раз через векторный индекс более чем применим. Очень полезный кейс, обязательно к прочтению. Еще рекомендую два поста про то как разобраться с диффузионными моделями и диффузионными моделями в видеогенерации
#Ботаем
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤9🔥4 3
Послушал 3 доклада:
1️⃣ «Как мы делали матчинг в Купере»
Ребята матчат похожие товары, оптимизируют ручное сопоставление. Многослойная архитектура норм, но выбор кандидатной модели и метрик мне остался не совсем понятен
2️⃣ «Uplift Space Oddity, или как запустить ML-космолёт и не упасть»
Ребята оценивают аплифты промо-кампаний. Используют Т-learner (то есть не прогнозируют аплифт напрямую, а обучают 2 катбуста прогнозировать условно продажи с промо и без промо, и разницу этих двух катбустов берут за аплифт). Если честно, подход больше похож на бейзлайн (с учетом того, что, по словам докладчика, MAPE в некоторых категориях товаров достигал 50%), и стоит попробовать, как минимум, S-learner и аплифт-деревья.
3️⃣ «Как делать рекомендации не с нуля»
Доклад, ради которого пришел на митап. Это очень близко к тому, чем сейчас занимаюсь, поэтому было интересно, как делают это в Купере.
Ребята делают рекомендации в ленте пользователя. Многослойная архитектура, норм кандидатные и реранжирующие модели, но есть траблы с разнообразием выдачи, холодным стартом (это когда у пользователя нет истории заказов) и обработкой истории заказов (всего 50 последних покупок).
Кому интересно послушать доклады, вот запись митапа
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🔥10❤6👎1
Рейс с 7:30 перенесли на 12:00…
Давайте общаться в комментах.
Давайте ваши любимые анекдоты. Анекдот с самым большим числом лайков - получает приз :)
Приз придумаю позже (мб под автора что-то придумаю особенное)
Upd: перенесли на 16:35 😐
Давайте общаться в комментах.
Давайте ваши любимые анекдоты. Анекдот с самым большим числом лайков - получает приз :)
Приз придумаю позже (мб под автора что-то придумаю особенное)
Upd: перенесли на 16:35 😐
😁6😢4❤1
Друзья, хочется делать больше историй в канал 👉👈
Закиньте голосов в канальчик пж:
https://t.me/boost/pleshakovsky
Ps: победил вот этот анекдот https://t.me/pleshakovsky/759?comment=2659
Поздравим 👏👏👏
Закиньте голосов в канальчик пж:
https://t.me/boost/pleshakovsky
Ps: победил вот этот анекдот https://t.me/pleshakovsky/759?comment=2659
Поздравим 👏👏👏
Telegram
Канал Доброго Вани | Data Science и Продуктики
Проголосуйте за канал, чтобы он получил больше возможностей.
👍3👎2❤1🔥1 1
Думал я думал, с чем связать следующие два года своей академической жизни. Многие из вас знают о моей симпатии к Центральному Университету, но вот какую мысль я гоняю в своей голове последний год:
А почему бы не попробовать что-то новое?
Как я неоднократно упоминал постах, я приверженец бизнесового МЛ и считаю, что востребованный ДСер = ДСер умеющий приносить деньги компании. Следовательно, продуктовые скилы необходимы, и это как раз то, что мне самостоятельно достаточно трудно постигать.
Ну и для мини-продуктов своих пригодится.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥19 9👍7❤4 3