Канал Доброго Вани | Data Science и Продуктики
1.38K subscribers
534 photos
26 videos
7 files
118 links
Самый добрый канал про DataScience, ML, техпред, стартапы и про много чего еще 🥰

Реклама, сотрудничество и любые другие вопросы -> @Pleshakovski
Download Telegram
Сегодня 💻💻💻💻

А что ботаем? Ботаем фундаментальный RecSys

А начнем мы с постановки задачи и небольшого экускурса по проблемам насущным:
🔸есть товары (item)
🔸есть пользователи (user)
🔸для каждого пользователя знаем историю его целевых действий (заказы, клики и тп)
🔸для каждого пользователя знаем его персональные данные (в идеале)
🔸для каждого товара знаем его описание и характеристики

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

1⃣Ранжирование раз https://t.me/pleshakovsky/681

2⃣Ранжирование два https://t.me/pleshakovsky/694


Коротюсенько осветим 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. Получили мы много-много векторов для пользователей и товаров, а дальше хотим среди них как-то искать ближайшие. Об этом поговорим в отдельном посте

Резюме: рексис - это достаточно красиво, иногда интерпретируемо, бизнесово и модно. Миллиард подходов и методов и зачастую число видюх вообще не роляет

Напишите в комментариях, по какому подходу или модели хотите увидеть пост

#Ботаем
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥51👍1
💻💻💻💻

Обещанный пост про векторные индексы

Что за зверь такой ваш этот векторный индекс? Ну все просто: есть у вас, допустим, эмбеддинги товаров и вы хотите их где-нибудь хранить. А потом чтоб еще и пробежаться по ним можно было шустро и, например, найти наиболее похожие вектора (товары)

Для таких задач и существует так называемый векторный индекс и очень часто в этом контексте всплывает библиотечка FAISS. Какие же варианты структуры индекса предоставляет эта библиотека и какие еще там есть трюки? Обсудим самые популярные варианты

1⃣ PQ - Product Quantization (фото 1-2)
Позволяет сжать вектора. Метод заключается в том, что каждый вектор разбивается на подвектора, подвектора кластеризуются и формируется новый вектор, состоящий из номеров кластеров.

2⃣ IVF - Inverted File Index (фото 3)
Метод предлагает разбить векторное пространство на кластеры и к каждому кластеру вычислить его "центроиду". Далее сами кластеры будут храниться на диске, а маппинг центроид с кластерами в ОЗУ. Таким образом, когда вы будете искать ближайший вектор, вы сравните его с векторами центроид и для ближайшей центроиды возьмете ее кластер с векторами.

3⃣ NSW / HNSW - Hierarchical Navigable Small World graphs (фото 4)
Можно сказать, SOTA метод приближенного поиска ближайших соседей, основывающийся на жадном обходе графа (по сути, как правило 7 рукопожатий. Как до любого человека можно добраться через 7 рукопожатий, так и до похожего вектора можно добраться через N прыжков по графу, где каждый вектор - это узел)

Прелесть FAISS'a в том, что он позволяет изящно комбинировать все эти подходы для создания оптимальной векторной базы и дальнейших манипуляций с ней (подробнее что происходит с памятью https://habr.com/ru/companies/avito/articles/488658/ )

Рекомендуемые базовые конфигурации:
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🔥43
☀️ Неделю назад я сходил на DS Meetup от Купер Теха

Послушал 3 доклада:

1️⃣ «Как мы делали матчинг в Купере»


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

2️⃣ «Uplift Space Oddity, или как запустить ML-космолёт и не упасть»


Ребята оценивают аплифты промо-кампаний. Используют Т-learner (то есть не прогнозируют аплифт напрямую, а обучают 2 катбуста прогнозировать условно продажи с промо и без промо, и разницу этих двух катбустов берут за аплифт). Если честно, подход больше похож на бейзлайн (с учетом того, что, по словам докладчика, MAPE в некоторых категориях товаров достигал 50%), и стоит попробовать, как минимум, S-learner и аплифт-деревья.

3️⃣ «Как делать рекомендации не с нуля»


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

Кому интересно послушать доклады, вот запись митапа

😎 За вопросы к 1ому и 3ему докладу даже получил приз за лучший вопрос
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🔥106👎1
Рейс с 7:30 перенесли на 12:00…
Давайте общаться в комментах.

Давайте ваши любимые анекдоты. Анекдот с самым большим числом лайков - получает приз :)

Приз придумаю позже (мб под автора что-то придумаю особенное)

Upd: перенесли на 16:35 😐
😁6😢41
Друзья, хочется делать больше историй в канал 👉👈

Закиньте голосов в канальчик пж:

https://t.me/boost/pleshakovsky


Ps: победил вот этот анекдот https://t.me/pleshakovsky/759?comment=2659
Поздравим 👏👏👏
👍3👎21🔥11
❤️ Поговорим о будущем, про магистратуры

Думал я думал, с чем связать следующие два года своей академической жизни. Многие из вас знают о моей симпатии к Центральному Университету, но вот какую мысль я гоняю в своей голове последний год:

А зочем мне МЛьная мага? Опять слушать мл, млопс, питон и тп по десятому кругу? Я уже, в целом, достаточно прошарен, чтоб какие-то точечные потребности в МЛ закрывать самостоятельно.
А почему бы не попробовать что-то новое?

Итого: решил податься на Продуктовый менеджмент в ЦУ. Написал вступительные: матешу на 100%, бизнес-кейс (к своему удивлению) на 85%. Дальше, по идее, собес по типу собеса в бигтех. Посмотрим, как в итоге отстреляюсь, но я максимально заряжен.

Как я неоднократно упоминал постах, я приверженец бизнесового МЛ и считаю, что востребованный ДСер = ДСер умеющий приносить деньги компании. Следовательно, продуктовые скилы необходимы, и это как раз то, что мне самостоятельно достаточно трудно постигать.
Ну и для мини-продуктов своих пригодится.

Вобщем, пока что план такой, а что получится - увидим уже меньше, чем через полгода
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥199👍743