Ebout Data Science | Дима Савелко @eboutdatascience Channel on Telegram

Ebout Data Science | Дима Савелко

@eboutdatascience


Ebout Data Science by @ditengm

Ebout Data Science | Дима Савелко (Russian)

Добро пожаловать в канал "Ebout Data Science | Дима Савелко"! Этот канал создан для всех, кто интересуется наукой о данных, машинным обучением и искусственным интеллектом. Здесь вы найдете самые актуальные статьи, новости и тренды в области Data Science, а также сможете общаться с единомышленниками и задавать свои вопросы. Дима Савелко, ведущий этого канала, является экспертом в области Data Science с многолетним опытом работы. Он делится своими знаниями, советами и лучшими практиками с подписчиками канала, помогая им развиваться и достигать новых высот в своей карьере. Присоединяйтесь к нам прямо сейчас, чтобы быть в курсе всех событий в мире Data Science и стать частью активного сообщества профессионалов!

Ebout Data Science | Дима Савелко

07 Feb, 09:05


Новый дроп от Андрюши Карпатого 🎧

В новом бенгере Андрюша зачитал полный путь про то как обучается ЛЛМка: c нуля до ЧатаЛГБТ. Зайдёт для тех кто только погружается в мир ЛЛМок. Он разбирает весь путь их создания: как их тренируют, почему они работают так, как работают, и как вообще думать о них, если представить, что у них есть какая-то "психология".

Андрюша рифмует про:
🟣 Претрейн, токенизацию, инференс ЛЛМок
🟡 GPT-2.0, llama3.1
🟢 post-training, галлюцинации
🔵 rlhf, ризонинг, DeepSeek-R1

Поэтому бегом смотреть и узнавать что-то новое и полезное для себя!

Ebout Data Science | Дима Савелко

03 Feb, 11:04


Школа Ebout Data Science

Среди моих учеников и моего окружения появился некий спрос на обучение некого Machine Learning. Ну так а почему бы не сделать занятия по данной дисциплине 👁

НО! Я не хочу, чтобы данные занятия были как типичная SkillКороба или какое-нибудь SkillПроизводство. Я хочу сделать уроки с индивидуальным подходом, а не сраный курс на 10к людей, где человек просто палит в предзаписаную картинку.

Как там всё будет устроено:
1️⃣ Собираем группу людей, начнём с 30
2️⃣ Преподаватель проводит ОНЛАЙН-занятие, где каждый может задать вопрос в живую
3️⃣ Занятие состоит из теории и практики, на теории вы ознакомитесь с материалом, а на практике вы с преподавателем будете набивать теорию ручками
4️⃣ После каждого занятия будет ДЗ на реализацию алгоритма с нуля или решение Кагл соревнования (я хочу занятия сделать такими, чтобы вы всеми своими жилками прочувствовали теорию)
5️⃣ После выполнения ДЗ вы должны будет скинуть преподавателю, и он проверит ваше ДЗ и даст фидбек

Что вы получите:
*️⃣Типичные вопросы на собеседовании и ответы на них, которые спрашивают по теме занятия
*️⃣Проверка вашего решения ДЗ и фидбек на него
*️⃣Консультация по темам занятия
*️⃣Запись занятия

На данный момент я объявляю два занятия:
▶️Первое занятие про Линейную Регрессию и Градиентный спуск - БЕСПЛАТНО (6 февраля в 19:00)
▶️Второе занятие про Линейную Регрессию и Регуляризацию - 1000 рублей (13 февраля в 19:00)
▶️ Следующие занятия будут организованы примерно каждую неделю и запись на них будет в приоритете тех ребят, которые уже записаны на занятия

Чтобы записаться на первое занятие пишите: @Alexander_Isaev1

Ebout Data Science | Дима Савелко

30 Jan, 11:02


Уничтожение RAG - ML System Design 😁

Давайте пойдем по базе из этого поста, ещё можете чекнуть этот пост с разбором MLSD для обучения LLM

Как отвечать на вопрос вопрос: «Постройка мне Retrieve модель в RAG»? Давайте разбираться!

1️⃣ В начале разработки MLSD важно понять, что нам нужно сделать, поэтому в первую очередь формулируем задачу и ограничения.

Задача
Построить Retrieve модель для рага в e-commerce. Мы большой магазин навоза и нам надо рекомендовать товар по запросу пользователя в LLM. Напомню, retrieve модель - это штука, которая на основе запроса пользователя ищет подходящий контекст, чтобы засунуть в ЛЛМ.

Ограничения:
Ограничения: Минимальная задержка (<35 сек.), иначе пользователь ливнёт и поставит нашему сервису какашку 💩

2️⃣ Метрики
Бизнесовые метрики 📞
➡️Conversion Rate - доля пользователей, совершивших покупку после взаимодействия с чат-ботом.
➡️Average Order Value (AOV) / Средний чек - средняя сумма покупки после взаимодействия с ботом (или в сравнении с пользователями, которые не общались с ботом).

Онлайн-метрики:
➡️Удовлетворенность клиентов (CSAT) — пользовательская оценка (1–5).
➡️CTR - процент кликов по товарам/категориям, которые Retrieval-модуль (и далее LLM) порекомендовал.

Оффлайн метрик:
➡️Precision@k: Доля релевантных документов среди топ-k результатов поиска.
➡️ROC-AUC: способность модели отделять релевантные документы от нерелевантных
➡️mAP, nDCG - Метрики ранжирования

3️⃣ Что там с данными? Откуда и сколько их получить, и как поделить на Train/Test ?
Источник:

Мы большой магазин навоза и нам ну прям нужен RAG, то скорее всего мы доросли до того момента, когда у нас есть своя БД с описанием сортов навоза и их уникальных особенностей - 5 млн записей 😋

Разметка:
Для Retrieve модели нам нужно получить данные: «запрос → релевантные документы». нанимаем копирайтера - Валюху, которая будет размечать нам данные. Но Валюха просит много рублей за свою работу, а мы не можем ей дать столько денег, то можем сделать начальную разметку с помощью TF-IDF или других BERT-like моделей.

Train/Test:
Случайно поделить на train/val/test (например, 70/15/15 - именно так мы должны разбивать навоз!) 🍫

4️⃣ Построение пайплайна обучения
BaseLine:
Сначала нужно сделать самое простое решение в качестве затычки. Нашей затычкой будет Elasticsearch на основе TF-IDF, который будет возвращать top-k=5 чанков. Чанк делим на 256 токенов или по структуре данных.

Норм решение для продажи навоза 💪
Гибридный подход - TF-IDF & ANN + E5 & Cosine Similarity + Reranker
Заранее считаем все эмбеддинги BM25 и E5 и храним всё в БД - Faiss, ChromeDB.
➡️Поступил запрос, находим 1000 ближайших записей на основе TF-IDF & ANN - то есть пихаем эмбеддинги TF-IDF в ANN, и получаем кластер из 1000 ближайших элементов к запросу. Считаем precision@k, k = 1000 - количество релевантных документов из всех элементов в кластере.
➡️Среди 1000 найденных записей находим топ 10 элементов с помощью E5 и cosine sim. Метрика: precision@k, k = [10, 5, 3, 1].
➡️Переранжируем эти 10 элементов обученной моделькой: CatBoost, LambdaRank или энкодер. Измеряем ROC-AUC, mAP, nDCG - если есть разметка.

Как обучать модели:
➡️ TF-IDF - обучаем свой токенайзер и на всём корпусе документов обучаем TF-IDF. Для экономии памяти можем через PCA сжать эмбеддинги.
➡️ E5 - X: (Query, Positive Doc, Negative Doc - синтетику генерим с помощью GPT, проверяем через G-Eval и копирайтеров), y: метки релевантности (Positive, Negative), Loss: Triplet Loss - он сближает релевантные пары с навозом и отдаляет нерелевантные.

ReRanker:
X: (Query, Document) + доп. фичи (score BM25/ANN/E5, клики, цена, популярность и т.д.).
y: бинарная (релевант/нерелевант) или градуированная (0–5). Loss: Pairwise Ranking (LambdaRank), Cross-Entropy (если классификация) или Listwise (nDCG-based).

5️⃣ A/B-тесты и мониторинг
Количество семплов: 1000, Train/Test = 70/30%, Онлайн-метрика: CTR, CSAT

Итог:
Вот мы и построили базовый документ модели ретривы в RAG`е для магазина навоза, который ещё можно дорабатывать. Если он вам был полезен, то надеюсь вы им воспользуетесь на собесах по MLSD 🐹

Ebout Data Science | Дима Савелко

15 Jan, 13:02


ЖЁСТКОЕ Собеседование Middle Data Science | Classic ML | Реальные задачи с собеседований

Записал собеседование со своим учеником, где постарался прям жёстко подушить его вопросами, также построили Precision, Recall, ROC-AUC ручками - https://youtu.be/AsHMSRIVzLE

Разбираем:
*️⃣ Линейная и логистическая регрессия
*️⃣ Precision, Recall, ROC-AUC "на пальцах"
*️⃣ Регуляризации L1, L2 и ElasticNet
*️⃣ Метрики классификации и их применение в реальных задачах
*️⃣ Считаем ручками Precision, Recall и ROC-AUC

Смотрим и проверяем себя!

Ebout Data Science | Дима Савелко

30 Dec, 11:01


Итоги of the year и планы на next year 🥇

Чем ещё я буду вас радовать в следующем году 💪
1️⃣ Я выхожу на ютуб. Первое видео уже на стадии монтажа, там будет жёсткий МОК по ClassicML: линейная/логистическая регрессия, l1, l2, переобучение, метрики классификации. Также буду выкладывать записи с собесов, ещё МОКи и другие форматы роликов, короче, будет жёсткий движ
2️⃣ Больше/чаще/качественнее - планирую развивать ТГ-канал ещё больше, чтобы стать большим человеком в медийке, дальше-больше!
3️⃣ Развитие профессионализма/менторства/медийки - именно это три вектора, которые я буду развивать, а как следствие писать для вас об этом

Было проделано не мало работы над качеством и структурой постов и в целом над каналом 🚶‍♀️
- выработал собственный стиль постов: заголовок, подзаголовки, смайлики и смехуюшечки
- определился со своей ЦА в тг-канале: в основном я делаю контент для начинающий ребят, перекатунов и мидлов. В основном посты про найм, как/где/зачем найти работу в DS, выкладываю посты с объяснением материалов из серии "уничтожение" с надеждой, что их кто-то сохраняет и действительно читает
- по цифрам достиг ~930 подписоты к НГ, а в планах было 1к..., но ничего мы ещё добьём!

Надеюсь, что ваши цели в этом году были достигнуты, и вы уже поставили цели на следующий год! Буду вам очень благодарен, если напишите в комментах:
- Свою цель на 2024
- Насколько вы выполнили её в 2024
- И цель на 2025 год

Не стесняйтесь, давайте вместе подведём итоги года) 🤟

Ebout Data Science | Дима Савелко

23 Dec, 11:01


Почему ты получаешь отказы после прохождения собеса? Или Алгоритм прохождения собесов 💪

Проблема:
Очень часто такое бывает, что человек проходит 1000 скринингов с HR`ом, 500 техничек и 100 финалок, но всё равно не получает оффер. А почему? Всё очень просто, нужно всего лишь попросить фидбек и исправить свои ошибки

Вроде бы это простая истина, но много моих учеников не понимают такого простого алгоритма:

1️⃣ Ходим на собесы 🍗
Чтобы получить оффер, нам нужно уметь проходить собеседования (оффер = вкачанный навык прохождения собеседования). Поэтому на данном этапе наша цель получить как можно больше приглашений на скрининг и попасть на следующие этапы собеседования.

2️⃣ Просим фидбек 😺
Если мы проебали на каком-то определённом этапе собеседования, то нам обязательно нужно попросить фидбек. Прям не бойтесь мучить HR`ом своими вопросами. Запомните, глупый вопрос это тот вопрос, который не спросили.
Независимо от этапа пишите сообщение вида:
Здравствуйте! Подскажите, пожалуйста, почему мне дали отказ? Для меня очень важно понять, где мои ошибки и пробелы в знаниях, поэтому прошу вас дать фидбек. Буду благодарен)

Также будет ОГРОМНЫМ плюсом, если вы будете записывать собеседование и потом его пересматривать. Хоть это и на первых порах будет вызывать дискомфорт, но результат не заставит долго ждать, если вы будете грамотно анализировать свои ошибки.

3️⃣ Анализируем фибдек 🎲
Тут мы получили фидбек и поняли, что мы не знаем, что такое 'операция умножения и сколько существует цифр'. Теперь мы рассматриваем это не как проблему, а как задачу и задать себе следующий вопрос: "А что я могу сделать, чтобы на следующем собеседовании не допустить такую ошибку?". Нужно понять, как мы можем это исправить.

4️⃣ Исправляем ошибки 🔨
Нам нужно найти материалы, статьи, видео в ютубе, которые помогут нам в решение данной задачи. Выучить это, сделать конспект, шпаргалку, но не допустить, чтобы это повторилось не повторилось на следующем собесе.
Мой пример: Я очень часто могу забыть какую-нибудь формулу, поэтому на собесах использую шпаргалку. Тогда стоит мне чуть взглянуть на неё, я сразу понимаю какой элемент за что отвечает.

Итог 🚶‍♀️
Повторю, получение оффера = навык проходить собесы; навык проходит собесы = повторение шагов 1-4. Выполняя эти простые действия, вы точно получите оффер!