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

Реклама -> @Pleshakovski
Выступить на вашей площадке с докладом -> @Pleshakovski
Сотрудничество и любые другие вопросы -> @Pleshakovski
Download Telegram
Сегодня предлагаю немножко поботать и напрячь извилины всем МЛщикам на канале

Alternating Least Squares (ALS). SOTA или, быть может, переоцененная база? Краш или обычный тюбик? Разбираем по-честному.

Начнем с фанфакта, который я выяснил за последний год: почти все +- крупные команды рекомендаций в РФ сейчас используют ALS (в том числе, в рантайме). ALS — это алгоритм для матричного разложения, используемый в системах рекомендаций на основе колаборативной фильтрации (напомню, что факторизацию и колаборативку разбирали в этом посте).

Глобальная цель ALS, как и у любого матричного разложения, получить матрицу X и матрицу Y из исходной матрицы R взаимодействий объектов x и y. Например, у нас есть маркетплейс, на котором пользователи могу кликать на товары. Тогда матрицей R могут быть взаимодействия всех пользователей со всеми товарами (1 или 0: кликал ли юзер на айтем или нет), а X и Y — матрицы, состоящие из искомых векторных представлений этих юзеров (x) и айтемов (y). См. фото 1.

Идея ALS в следующем:
А давайте в нашем цикле сходимости попеременно фиксировать матрицу X и матрицу Y и вычислять оставшуюся незафиксированную оптимальную матрицу аналитическим методом. Таким образом, при фиксации матрицы Y, оптимальный вектор x можно будет вычислить по формуле на фото 2. После нахождения всех векторов x, мы их фиксируем и аналогично находим вектора y. Это мы будем называть ALS-шагом.

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

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

Изображения взял из Учебника ШАДа. У них также есть разбор IALS, вот ссылочка.


Вобщем, ALS стал базированной базой RecSys не просто так: оптимизация, интерпретируемость (благодаря аналитическому подходу), легковесность, простота в дообучении — его основные преимущества.

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

Накиньте ❤️, если понравился разбор!
13👍4🔥2
Как торговаться на собесах 🍑

Если вы получили оффер и вам уже сказали какую ЗП вы будете получать, то не торопитесь его принимать. Вы можете спокойно за несколько секунд зарабатотать 30% к своей ЗП, а то и более.

Зачем торговаться?
Давайте включим простую математику, если вам предложили ЗП в 300к, а вы сторговали ЗП на 360к, 360к - 300к = 60к в месяц вы сторговали, 60к*12 месяцев = 720к, вы за несколько минут заработали 720к в разрезе года, вы просто СЛОН 🐘
Именно так у меня было с СамокатTech 🥳

Почему можно торговаться?
1️⃣ Берём большие цифры, то есть если все в среднем будут просить больше по рынку, то работодателю ничего не остаётся кроме того, как повысить заработную плату и нанимать людей, ведь вакансии надо закрывать, а фичи пилить 👷
2️⃣ К тому же бизнес зачастую имеет средства для повышения ЗП, особенно большие компании 😁
3️⃣ Ну и мы живём в той стране, в которой инфляцию нужно обгонять каждый год, а если вы не будете этого делать, то будете падать в благах, если ваша ЗП не будет меняться 👀
4️⃣ Офферы не отзывают, если вы попросите больше ЗП, запомните фразу: "Как компания ищет лучшего кандидата, так и кандидат ищет лучшего работодателя" 👁

Алгоритм торговли 💪
Допустим вам дали оффер с ЗП, тогда вы пишите следующее:
"Да, возращаюсь с ответом. Только вот другая компания Y сделал оффер X минут назад. У вас и у них хорошие команды и задачи. Но есть финансовый момент, что они предложили мне на Z$ больше. И выбор мой усложняется. <тут описываешь почему тебя компания зацепила>. Можете ли вы сделать что-нибудь по этому, чтобы облегчить мой выбор?"

И тогда с большой долей вероятности к вам могут прийти с повышенным оффером, и да это можно делать даже тогда, когда у вас нет второго оффера, но это ваш выбор... 🤡

В своём @eboutdatascience я помогаю увеличить шанс получения самого жирного оффера: гайды по собесами, по торгам, по техничкам, по резюме, разборы живых собесов, говорю про менталку и то, как устроен найм в целом
Please open Telegram to view this post
VIEW IN TELEGRAM
6👍2🔥1😈1💅1🗿1
🍭 Праздник к нам приходит, праздник к нам приходит.. Админ КДВ подводит итоги года!

💕 В этом году я сменил место работы и с головой ушел в рекомендации в Яндекс Маркете. Поэтому много писал о ранжировании и рекомендашках. Очень важный пост про индексы, про основные подходы в рекомендашках, про BERT в RecSys.

О причинах смены места работы тоже, кстати, пост есть)

💕 Я окончил бакалавриат в МИСИС и поступил в Магистратуру Центрального Университета на Продуктовый менеджмент. Всем абитуриентам рекомендую почитать про мои первые впечатления.

А в этом посте сравнил магистратуры в ЦУ, Вышке и МИСИС. Будет полезно всем будущим магистрам!

Я обожаю путешествия, и в этом году 2 недели провел в стране, в которой давно хотел оказаться (а еще в Грузии и Китае). Серия постов про Японию 🇯🇵

Год получился очень насыщенным и интересным! А в следующих постах подведем итоги канала
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥196🎉3💅21
This media is not supported in your browser
VIEW IN TELEGRAM
21🔥10🍾5👍1👏1
❤️ Прошел практически год с моего увольнения и прихода в Яндекс.

Как вы знаете, Маркет, Лавка, Браузер, Еда, Такси, Алиса, Диск, Карты, Музыка, Недвижимость, Кинопоиск, Афиша, Телемост, Переводчик (пальцы устали печатать) и многое другое — это все Яшечка.

🐦 Все эти сервисы создают люди, талантливые и неповторимые в своих лучших чертах.

За этот год я познакомиться с десятками крутых ребят. Выяснилось, что многие ведут свои каналы — и так родилась на свет самая яндексовая папка каналов from YNDX .

Ребята вещают об аналитике, МЛе, продуктах — и других темах. Вобщем рекомендую изучить каналы и экспертизу ребят, даже если на новогодние праздники уже слишком плотный график 😜
Please open Telegram to view this post
VIEW IN TELEGRAM
116🔥14💘7👎4
🍭 Продолжаем подводить итоги года!

Итак, за этот скромный год канал вырос с 550 подписчиков до 1350 - почти в 2.5 раза. И это только начало!

🎄 Ну а краткую сводочку я подготовил в двух редакциях. В одной (tgstat) статистики посчитаны без картиночных вложений к постам, а в другой — с ними. Я рад, что ЛЛМ отобразила реальное текущее позиционирование канала: МЛ+продуктики+кусочки моей жизни — пазл сложился так, как я и задумывал (всё-таки у КДВ должно быть лицо, моё лицо 👀)

Больше всего реакций:
Как мы защитили диплом
Плод моих трудов в бакалавриате
Как меня развели мошенники

А больше всего просмотров неожиданно набрал мем про ГПУ

🎁 Давайте поздравим друг друга с Наступающим, поставив 🍾 под этим постом?
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🍾18🔥54👍1👎1
💕 Предлагаю долго не размусоливать — и сразу с корабля на бал. Как-то так вышло, что до сих пор на этом канале мы не говорили о задаче и подходах к Next Item (Action) Prediction.

Как обычно, будем обсуждать всё в контексте маркетплейса. Пусть, для определенности, у нас есть User_1, который купил товары Item_1, Item_2, ..., Item_N. Мы хотим по этой цепочке спрогнозировать Item_N+1, который пользователь с наибольшей вероятностью приобретет следующим.

✏️ Важные замечания:
• Количество Item ограничено. Да, на маркетплейсе могут появляться новые товары, но мы будем считать, что асортимент внутри дня меняется незначительно. Допустим, что всего у нас M айтемов.
• Пользователи могут быть "Холодными" — то есть с короткой историей. Например, пользователь зарегистрировался только вчера и еще не успел купить ни одного товара. Пусть, на момент построения модели у нас U уникальных пользователей.

Очевидно, что у пользователей может быть как короткая, так и длинная история взаимодействий. Однако при обучении нейросети на Next Item Prediction все вектора пользователей (последовательность их действий) должны быть одинаковой длины (назовем ее D).

✏️ Сделаем следующее:
• У пользователей со слишком длинной историей оставим только последние D действий
• У пользователей с длиной истории меньшей, чем D, оставим все действия и дополним их "Паддингами" (то есть нулями). Для D=5 у нас может получиться история юзера "0, 0, Item_X, Item_Y, Item_Z".

Таким образом, для каждого из U пользователей мы хотим выбрать один из M товаров, который те захотят приобрести. При этом для каждого пользователя мы имеем его вектор длины D — для всех пользователей получится матрица размера U x D (см фото).

🌼 Такс, задачу мы поставили. Осталось поговорить только про методы решения — SasRec, Bert4Rec, Pinnerformer, Argus. Но о них уже в следующий постах

Изображение взято из статьи на Хабре
Please open Telegram to view this post
VIEW IN TELEGRAM
👍87👎3🔥3
Традиционный QA с админом объявляется открытым в 2026!

Любые ваши вопросы (желательно содержательные), идеи по рубрикам, обратная связь по каналу — и вообще всё, что вы хотите мне сказать.

Постараюсь ответить на всё в комментариях под этим постом. Давайте общаться!

Присылайте сюда 👉 t.me/questianonbot?start=1397630247c
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥72👍2
Продолжаем говорить про Next Item Prediction — сегодня про SASRec

В прошлом посте мы поставили задачу Next Item Prediction (NIP). Теперь давайте разбирать первый «классический» подход, который обычно открывает эту тему — SASRec (Self-Attentive Sequential Recommendation).

Как всегда, держим в голове маркетплейс и нашу матрицу U × D, где у каждого пользователя есть последовательность из последних D действий.

💡 Идея SASRec в двух словах

SASRec — это Transformer-only модель, которая использует self-attention, чтобы понять, какие прошлые действия пользователя важны для предсказания следующего айтема. Ключевая мысль простая: не все предыдущие покупки одинаково полезны. Купил чехол для iPhone год назад — сомнительно, что это важно сейчас. Купил айфон вчера — совсем другое дело.

🧱 Из чего состоит SASRec

Разберём по шагам.

1️⃣ Embedding-слой

Каждый айтем Item_i кодируется в эмбеддинг размерности H, раскладывающийся на

Item Embedding
Positional Embedding (очень важно!)

Почему позиция важна? Потому что последовательности:

iPhone → Чехол и Чехол → iPhone — это вообще разные истории.

На выходе получаем тензор размера: U × D × H

2️⃣ Masked Self-Attention

SASRec использует causal masking, то есть при предсказании айтема на позиции t модель не видит будущие позиции t+1, t+2, ... Иначе был бы читинг. Self-attention отвечает на вопрос, на какие прошлые айтемы стоит обратить внимание, чтобы угадать следующий?

Формально — обычный Transformer Encoder:
• Multi-Head Attention
• Residual connections
• LayerNorm

Без энкодер-декодер истории, всё строго sequential.

3️⃣ Предсказание Next Item

Для каждой позиции t модель пытается предсказать айтем t+1.

На практике чаще всего:

• берем последнюю позицию
• сравниваем её эмбеддинг со всеми M айтемами
• считаем softmax или sampled softmax
• обучаемся максимизировать вероятность правильного следующего айтема.

🧊 Что с холодными пользователями?

SASRec спокойно работает с паддингами:

• паддинги маскируются
• attention их просто игнорирует

Но важно понимать: SASRec — это purely sequential модель. Что это значит?

Если у пользователя 0 или 1 действие, сигнал слабый.
Для совсем холодного старта чаще приходится:
• добавлять популярные айтемы
• комбинировать с non-personalized логикой

👍 Почему SASRec так популярен

Простая и понятная архитектура
Отлично ловит long-range зависимости (по крайней мере, так было в 2018 🤷‍♂️)
Хорошо масштабируется на большое число айтемов

Не зря его до сих пор используют как точку отсчета почти во всех статьях про NIP.

👀 Ограничения, о которых важно помнить

Нет bidirectional-контекста (в отличие от BERT4Rec)
Не использует user features
Плохо решает cold start без костылей
Использует только позтивные действия в истории пользователя (в то время, как негативные действия могут быть полезны для понимания контекста, что отображено в статьях про Аргус). Так например, для онлайн-кинотеатра мы будем использовать только историю просмотра, хотя могли бы учитывать и те фильмы, от просмотра которых юзер отказался.

Но как первый серьезный Transformer для рекомендаций — это абсолютная классика

Изображение взято из статьи на Хабре
Please open Telegram to view this post
VIEW IN TELEGRAM
4😁4🔥1🤯1
Слово дня: LogКукарекция
😁113💅3
📕 Недавно ко мне пришел подписчик с вопросом: "А как мне вкатиться в ДС?". Одна из вещей, которые я рекомендую новичкам, — это участие в контестах, кейсах, хакатонах, митапах и конференциях. На предложенный вариант подписчик спросил: "А где искать актуальные соревы? Где можно найти перечень ближайших событий?"

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

🧑‍💻 Первый канал @iteventsrus . Это незаменимый источник вебинаров, конференций - и вообще всех интересных событий в нашей области. Периодически заглядываю сюда в поиске интересных митапов.

🤑 Второй — @hackathonsrus. Незаменимая база хакатонов, контестов и соревнований (в том числе по ML/DS/AI). Было время, когда ни один мой день не обходился без скроллинга сорев в этом канале.

Вобщем, рекомендую всем, кто ищет интересные события в области ИТ!
Please open Telegram to view this post
VIEW IN TELEGRAM
11🗿4🔥3👍2👎1🤬1
👀 n8n

Да-да, вы не ослышалсь. Я теперь вайбкодер. Вчера впервые в жизни затестил n8n, раньше никогда не притрагивался даже, только видел постоянно в постах у Алерона и на Ютупе.

КАПИИЦ ТЫ ДРЕВНИЙ N8N УЖЕ БАЯН - предвижу я ваши мысли. Знаете что? Капец эти агенты умные стали. Ну реально, за один час собирается тг-бот со 100500 ии-агентами. Я вчера бахнул простенького бота без памяти с парсером сайта погоды, но это заняло полчаса и 0 строчек кода всего.

Я помню, было время, когда году так в 2022 я ковырял тг-бота с рекомендациями фильмов с кинопоиска (ну и с парсером, соответственно). Уйму времени угрохал. А сколько времени ушло на прототипы для моих проектов?...

При всём при этом у меня 0 сомнений в том, что лишь малая доля фаундеров использует ИИ для своих прототипов. И я понимаю, что n8n 2.0 вышел пару месяцев назад, но у меня складывается ощущение, что эти чертилы в своих способностях растут как на дрожжях.

Вобщем, если у вас найдется минутка на выходных, затестите сами. Это очень прикольный опыт. Может быть, даже закрою пару своих рутинных задачек с этой штукой. Давайте еще опрос сделаю по n8n, очень интересно посмотреть
Please open Telegram to view this post
VIEW IN TELEGRAM
9💅6👍2
🤨 Что-то давненько я ничего про собесы не писал.

Как там вообще дела, работяги? Собеситесь? Ставьте сразу кита 🐳, кто уже сменил место работы в 2026)

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

🔵Алгоритмическая секция
Все говорят, что этот этап позволяет в режиме реального времени оценить уровень кодинга кандидата, но мне лично непонятно, как выучивание 20-30 базовых функций может отражать скилл. Тем не менее, это по-прежнему качественный отсеиваитель джунов на миддловские позиции. Кстати, все типовые задачи на алгоритмы можно найти тут. Сохраняем и не теряем.

🔵МЛ+код
На этом этапе предстоит пораскинуть мозгами и вспомнить, как писать foo(a, b): return a+b. А если серьезно, то, обычно, кандидату предстоит порассуждать о каких-то базовых мл-алгоритмах (линрег, деревья, бустинги, нейронки и тп), порешать задачки из теорвера, написать что-то вроде градиентного спуска, решающего пня, итеративного решения уравнения и поотвечать на вопросики об МЛе... А для подготовки к этой секции я завел рубрику #вопросы_с_собесов, читаем!

🔵МЛСД - ML System Design
А вот этот кабан уже для искушенных мидлов и синьоров (джуны, слушайте и запоминайте). На этой секции вам предложат какой-нибудь кейс (например, реализация ленты Продукты для вас в интернет-магазине Гошан). Что хочет услышать собеседующий? Да практически всё: какие данные, какой бейзлайн, какой пайплайн, какие оффлайн и онлайн метрики, какой дизайн АБ, что по времени и ресурсам... Здесь-то и раскрывается глубина вашего погружения в индустрию.

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

Давайте завезем сердец и я разберу какой-нибудь МЛСД-кейс из RecSys 😏
Please open Telegram to view this post
VIEW IN TELEGRAM
35🐳15🔥5🕊1
Вчера первый раз в жизни решал кейс 🥰

Второй семестр в ЦУ пока что радует
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥18💅4🤯2
🚀 Друзья, вашему вниманию наш совместный пост с админом канала РИСЕРЧОШНАЯ — Даней. Кто не знает, Даня работает DLE в WB Tech и уже несколько лет занимается рекомендациями, а на его канале есть много полезной информации о RecSys.

Так о чем же сегодня пойдет речь? Сегодня мы разберем одну из самых культовых статей в RecSys — PinRec!

🔵 PinRec — генеративный ретривер (первая ступень рекомендательного пайплайна) от Pinterest. Они всегда выпускают отличные статьи где и про прод расскажут, и науку проверят.

В последнее время большинство генеративных моделей это навороченные two-tower архитектуры с causal masking. Кстати, подробнее про two-tower был большой пост, для лучшего понимания этого поста рекомендую ознакомиться!

Так вот в Pinterest вместо привычного two-tower взяли GPT-2 декодер, который по истории взаимодействий генерирует не вероятности конкретных ID, а эмбеддинги в едином латентном пространстве. Далее при помощи этих эмбеддингов мы извлекаем ближайшие айтемы из заранее построенного HNSW-индекса (или другого инструмента приближенного поиска).

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

Все входные данные (пины (=айтемы) и поисковые запросы) представлены не дискретными ID-токенами, а реальными эмбеддингами в общем пространстве. Для этого запросы кодируются уже готовыми OmniSearchSage-векторами, а пины — комбинацией графовых PinSage-эмбеддингов и обучаемой hash-ID таблицей. Далее эмбеддинги проходят небольшие per-type MLP (для каждого типа действий — свой MLP) и нормализуются. Модель обучается стандартным sampled softmax, с logQ-коррекцией для борьбы с популярными негативами.

🔵 Забавный факт, что в pinterest отказались от semantic ID (о нем будет отдельный пост). Потому что это приводит к семантическому коллапсу: похожие пины теряют различимость, “слипаясь” в схожие направления в пространстве.

Авторы используют уже известный для многих трюк — Сount-Min Sketch, который приближает распределение к реальному. Представим, что у нас есть Клики пользователей, Заказы и другие действия в отношении миллионов айтемов. Хранить точные счётчики слишком дорого по памяти, а Count-Min Sketch позволяет считать частоты быстро и компактно, жертвуя точностью.

Ещё один важный трюк — outcome-conditioned генерация (генерация, условленная на целевое действие пользователя). Вместо сложного RL-обучения, они просто подают дополнительный эмбеддинг (например, “клик” или “репин” (сохранение пина)) на позднем связывании в голову декодера. Так генерация становится контролируемой, позволяя задать заранее соотношение целевых действий на инференсе.

Последний важный приём — windowed multi-token генерация. Авторы осознали, что в реальном сценарии пользователю не важен точный порядок действий внутри небольшого окна. Поэтому цель модели — предсказать не ровно следующий айтем, а любой из нескольких будущих. Более того, за один шаг декодирования генерируется сразу несколько эмбеддингов кандидатов, что одновременно сильно ускоряет генерацию и повышает разнообразие.

🔵 По результатам авторов, предложенные решения заметно превосходят SASRec, TIGER и PinnerFormer по recall@10 на всех основных поверхностях Pinterest. Сама модель внедрена как один из кандидатогенераторов.

Outcome-conditioning позволяет управлять типом целевых действий, улучшая recall нужных действий до 6%.

Windowed multi-token генерация снижает латентность (время задержки от запроса до получения результата) в 10 раз и даёт на 16% выше recall с одновременным повышением уникальности выдачи.

Было интересно? Тогда поддержите этот пост реакций и подпиской на РИСЕРЧОШНУЮ, мы с Даней старались 🙏
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8👍52
Вы, наверное, задаетесь вопросом, куда пропал админ?

Решил немного переключиться на контент. Вместе с AI4Dev записали лекцию-введение в Рекомендательные системы с QA. Рассказал про:

🔵 Типы задач в RecSys с примерами
🔵 Метрики оффлайна и онлайна
🔵 Алгоритм построения пайплайна рекомендательной системы
🔵 Будущее RecSYS
🔵 QA

Ролик уже доступен на Ютубе и ВК. Приятного просмотра!

Кому лень смотреть, может заглянуть в презенташку. Она весьма насыщенная и понятная без питча (файлик в следующем посте).

А я пошел готовить пост про рекомендации музыки по результатам опроса. Совсем мало изучал RecSys в музыке, но буду исправляться 😎
Please open Telegram to view this post
VIEW IN TELEGRAM
5🔥105👍1