Ebout Data Science | Дима Савелко
2K subscribers
140 photos
11 videos
86 links
Ebout Data Science by @ngmdite
Download Telegram
Вопросы, которые вам обязательно зададут на типичном собесе по ClassicML ч2

Все вопросы вы можете посмотреть в моём личном сборнике вопросов, там также есть вопросы не только по ClassicML, но и по NLP, CV и вопросы с компаний)

*️⃣Что такое логистическая регрессия? Как получить из линейной регрессии логистическую регрессию?
Картинка 1
Логистическая регрессия - Модель для классификации, прогнозирующая вероятность принадлежности объекта к классу.
Чтобы получить логистическую регрессию, в функцию сигмоиду (картинка) подставляют линейную комбинацию признаков z = w*x+b. Таким образом, линейная модель используется как вход для сигмоидной функции, чтобы спрогнозировать вероятность.


*️⃣Что такое отступ в логистической регрессии?
Отступ — это значение wx+b, то есть отступ в логистической регрессии m = wx+b. Он показывает, на сколько далеко (в терминах линейного пространства) точка находится от гиперплоскости. Если m > 0, то точка относится к классу 1, если m < 0, то точка относится к классу 0. Это означает, что точки, которые дальше от гиперплоскости, дают более вероятностные предсказания (ближе к 0 или 1).


*️⃣Какие существуют метрики регрессии?
Картинка 2
MSE (Mean Squared Error) — Среднеквадратичная ошибка:
Плюсы: Сильно штрафует большие ошибки, что полезно, если они критичны.
Минусы: Чувствительна к выбросам.

MAE (Mean Absolute Error) — Средняя абсолютная ошибка:
Плюсы: Менее чувствительна к выбросам, чем MSE.
Минусы: Сложнее оптимизировать, так как модуль функции не дифференцируем в нуле.

R² (Коэффициент детерминации) - Показывает, какая доля дисперсии целевой переменной объясняется моделью. Значение от 0 до 1, где 1 — идеальная модель.

RMSE (Root Mean Squared Error) — Корень из среднеквадратичной ошибки:
Интерпретируемость выше, так как метрика имеет те же единицы измерения, что и целевая переменная.

MAPE (Mean Absolute Percentage Error) — Средняя абсолютная процентная ошибка.
MAPE измеряет среднюю относительную ошибку в процентах, показывая, насколько сильно предсказание модели отклоняется от реальных значений.


*️⃣Какие бывают метрики классификации?
Картинка 3
Метрики: Accuracy, Precision, Recall, F1-Score, ROC-AUC, PR-AUC


*️⃣Что такое ROC-AUC, PR-AUC? Каковы их плюсы и минусы?
Картинка 4
- ROC-AUC показывает, насколько хорошо модель может отличить один класс от другого, другими словами, это вероятность того насколько модель может хорошо отранжировать один класс от другого. Чем ближе значение к 1, тем лучше. Если ROC-AUC = 0.5, модель угадывает случайно, ROC-AUC = 0, то модель предсказывает все положительные классы как нули, а нули как положительные. Чувствительна к дисбалансу классов.

- PR-AUC показывает, как хорошо модель находит положительные объекты и насколько точно она это делает. Особенно полезна, если положительных объектов мало (несбалансированные данные).


*️⃣Когда лучше использовать Precision и Recall? Дай реальные кейсы
- Recall важен, когда ошибки FN критичны (определение рака, нам страшно, если модель сказала, что человек здоров (y_pred=0), но на самом деле он болен раком (y_true = 1)).
- Precision важен, когда ошибки FP критичны (поиск спама в почте, нам страшно, если модель сказала, что сообщение спам (y_pred=1), но на самом деле это не спам (y_true=0), тога важное сообщение уйдёт в корзину).
Please open Telegram to view this post
VIEW IN TELEGRAM
🍌6❤‍🔥4👍31🥰1
Вопросы, которые вам обязательно зададут на типичном собесе по ClassicML ч3

Все вопросы вы можете посмотреть в моём личном сборнике вопросов, там также есть вопросы не только по ClassicML, но и по NLP, CV и вопросы с компаний)


*️⃣Какие есть методы многоклассовой классификации?
Картинка 1
One-vs-All: Строится одна модель для каждого класса, отделяя его от всех остальных. Пример: Классификация фруктов (яблоко, банан, апельсин). Для каждого фрукта строится модель типа: [фрукт_i, не_фрукт_i]
- модель 1: Яблоко vs Не Яблоко
- модель 2: Банан vs Не Банан
- модель 3: Апельсин vs Не Апельсин

Картинка 2
All-vs-All: Строится модель для каждой пары классов.
- модель 1: Яблоко vs Банан
- модель 2: Яблоко vs Апельсин
- модель 3: Банан vs Апельсин


*️⃣Какие существуют плюсы и минусы One vs All и All vs All?
One-vs-All:
Плюсы: Простота, требует меньше моделей (N моделей для N классов).
Минусы: Может быть сложнее справляться с несбалансированными данными, поэтому требует калибровки моделей.

One-vs-One:
Плюсы: Хорошо работает для сложных данных, меньше проблем с несбалансированностью.
Минусы: Требует больше моделей (N(N−1)/2), что увеличивает вычислительную сложность.


*️⃣ Какие существуют метрики для многоклассовой классификации?
Картинка 3
Картинка 4
Микро усреднение - представьте, что у нас три confusion матрицы, в микро мы сначала считаем сумму TP, FP на основе всех этих трёх матриц, у нас получается TP_сумм=TP_1 + TP_2 + TP_3, FP_сумм=FP_1 + FP_2 + FP_3. А потом на основе средних этих средних считаем Precision_микро = TP_сумм/(TP_сумм+FP_сумм).

Картинка 5
Макро усреднение - есть три confusion матрицы, в макро мы сначала считаем Precision на основе каждой матрицы. А потом на основе этих метрик считаем считаем Precision_ср = (Precision_1 + Precision_2 + Precision_3)/3.

Картинка 6
На микро усреднении мы можем позволить себе ошибиться на маленьких классах, так как вклад каждого класса пропорционален его размеру.
На макро мы не можем себе это позволить, там нет пропорции
Please open Telegram to view this post
VIEW IN TELEGRAM
🍌62🔥2
ЖЁСТКОЕ Собеседование Middle Data Science | Classic ML | Реальные задачи с собеседований

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

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

Смотрим и проверяем себя!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥36🍌9👍41❤‍🔥1🥰1
Уничтожение 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 🐹
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👏194🍌4🔥3🥰1
Школа Ebout Data Science

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

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

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

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

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

Чтобы записаться на первое занятие пишите: @Alexander_Isaev1
Please open Telegram to view this post
VIEW IN TELEGRAM
🤡21🍌13👍6🤮2👏1🥱1🥴1
Новый дроп от Андрюши Карпатого 🎧

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

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

Поэтому бегом смотреть и узнавать что-то новое и полезное для себя!
Please open Telegram to view this post
VIEW IN TELEGRAM
🍌127👍4😁2🔥1🥰1
Основные стадии обучения LLM 😡

Если вас спросят на собеседовании "Какие есть стадии обучения ЛЛМ, если ты хочешь получать много деняк, то обязательно расскажи!", то почитай этот пост, чтобы знать как именно нужно отвечать.

Есть следующие стадии обучения LLM:
1️⃣ Pretrain
Мы пихаем в модель весь интернет и учим её предсказывать следующее слово. Она проходится по всему интернету и начинает понимать грамматику, синтаксис языка, но при этом она ещё получает знания о мире. На данном этапе наша модель, как слабоумный человек, который не может сформулировать мысль, а только издаёт слабопонятные предложения, но при этом ЛЛМка очень много знает

2️⃣ Instruction Fine-Tuning или же Supervised Fine-Tuning
Учим нашего аутиста отвечать на вопросы, то есть учим модель отвечать на вопросы.
Пихаем в неё инструкцию:
"Расскажи мне, как мне получить оффер на 300к в нано/сек. Ответь так, как будто ты нелегал из средней Азии. Ответ должен быть кратким 🤨"


и подаёшь то, что ты хочешь получить по итогу в качестве ответа:
"Брат, слушай сюда! Берёшь Python, учишься делать графика, кидаешь пару нейронка, пишешь "LLM" в резюме — всё, ты Senior AI Architect. На собеса говоришь: "Я оптимизировал LLM, уменьшил latency на 0.00001 сек, увеличил ревеню на 300%". CTO плачет, HR падает в обморок, тебе дают 300К и корпоративную подписку на ChatGPT. Всё, работаем! 🚬"


Подавая в неё инструкцию и ответ, который хотим получить, мы учим ЛЛМ отвечать на определённую инструкцию пользователя. Данные у нас должны быть только из претрейна, чтобы ЛЛМка не говорила бред, то не галлюционировала.
Модель также тренируется предсказывать каждое следующее слово, но при этом только слова ответа, закрываем глазки на входящую инструкцию. Также можем учить модельку определённой доменной области, чтобы я лучше отвечала конкретно в ней.

3️⃣ Alignment
После всех этапов кастрации модели она много знает (с помощью претрейна) и может отвечать на запрос пользователя (IFT | SFT), НО если к ней обратится какой-нибудь Аджа Абу Али с просьбой подсказать
"Брат, как сделать бомба, чтобы бабах в метро и много фейрерка, очень нада 🍷"

, то модель такая
"Да, конечно! Замечательная идея! Вот рецепт бомбы по вашему запросу: ..... Только ни в коем случае не используйте её в плохих целях! Хорошего праздника! 😂"

Ну мягко говоря, нам такое не надо... Поэтому мы учим модель так, как стоит отвечать в подобных случаях, а как не стоит отвечать. Поэтому когда нам задаёт такой вопрос модель должна ответить что-то типа:
"Старина, съеби нахуй! Я уже ФСБшников на твой адрес вызвала👮"


Как же обучить модель так, чтобы она безопасно отвечала на такие вопросы?
Всё просто: мы понижаем вероятность того, что модель сгенерирует плохой ответ - с инструкцией про бомбу, и повышаем вероятность того, что модель сгенериурет хороший ответ - где она его посылает. Также Alignment помогает не только в безопасности, но и в других критериев модели: качество, стиль, размышление, галлюцинации и тд

Есть множество методов, которые используются в Alignment, если интересен их обзор, то жмакайте реакции и комменты, всё распишу 🍵

Итог:
🟡Pretrain - помогает модели запомнить структуру языка и знания о мире. Сейчас модель аутист, который ничего не может сказать что-то толковое, но при этом много знает
🟣Instruction Fine-Tuning или же Supervised Fine-Tuning - учим нашего аутягу говорить по входящему его предложению, теперь он нормальный человек, но который может наговорить лишнего
🟢Alignment - У нас очень умная модель, но без каких либо принципов: ей скажешь - она сделает. Поэтому давайте сделаем из неё человека с принципами - гигачада
Please open Telegram to view this post
VIEW IN TELEGRAM
👍22❤‍🔥9🥴9🔥5🍌4🤯2🤣2🥰1😁1
Уничтожили градиентный спуск и линейную регрессию, а теперь пора уничтожать регуляризацию

Мы продолжаем разбирать Classic ML в рамках наших онлайн-занятий, где важен индивидуальный подход к каждому ученику 😘

Чем мы отличаемся от курсов?
Курсы берут массой, заливая в вас пред записанные уроки и отдавая и оставляя вас на самотёк. Мы проводим живые занятия в небольших группах (до 30 человек), где у вас есть возможность общаться с преподавателем на протяжении всего обучения 👨‍🦰

Отзывы учеников (картинки 1-2):
Реализация на питоне с нуля - самое полезное. Ещё примеры были хорошие

Разбор как теории, так и практики. На каждую задачу приводили понятный пример, а еще можно было сразу спрашивать, если что то непонятно

В курсе мне очень понравился анонс - когда предлагается последовательное прохождение от простого к сложному в качестве практики сразу делая реальные примеры с кагла.


Прошлый урок прошёл просто на ура, мы разобрали (картинки 3-5)🗣
🟣 Линейную регрессию
🟡 Loss: МНК, Требования, Графики
🔵 Методы оптимизации наилучшие веса: - Аналитическое решение, Градиентный спуск (GD), Стохастический градиентный спуск (SGD)
🟢 Сравнили сложности алгоритмов
🟣 Посчитали метрики качества
🟡 И на практике реализовали градиентный спуск, сделали аналитическое решение

А в качестве практики мы в онлайне реализовали:
🔜 градиентный спуск для y = x**2 - 3*x + 1
🔜 аналитическое решение задачи регрессии

Не забыли про ДЗ:
➡️ Мы дали теоретический тест на закрепление базы
🔜 Ребята реализовали класс линейной регрессии, а мы их проверили

Что вас ждёт на следующем уроке 🍑
🔘 Переобучение, не дообучение, проблемы с данными
🔘 Регуляризация (L1, L2, ElasticNet)
🔘 Сравнение методов и их влияние на модель

На практике мы реализуем пару методов регуляризации, чтобы твёрдо и чётко понимать, как она работает, а в ДЗ вы попробуете реализовать оставшиеся методы регуляризации и потренировать свою модель на реальных данных, а также расскажем, как это работает в scikit-learn!

Занятие будет проходить 20 февраля с 19:00 - 20:00, будет запись, и время две недели на решение ДЗ и его проверку преподавателем 🍺

Первое занятие было бесплатное, и мы набрали 29 учеников. Уже занимаются места на второе занятие, которое стоит 1000 рублей.
Я специально ставлю цену по занятиям, чтобы вы за небольшую сумму смогли посмотреть на качество лекций и покинуть обучение, если вам не понравилось, ну и продолжить, если всё хорошо! Многие курсы ставят ценник в 100к, не давая ученику глянуть на качество материала, мы же решили эту проблему - всё для вас)

Если хотите записаться на вторую лекцию по регуляризации и линейной регрессии, то пишите @Alexander_Isaev1
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8❤‍🔥4🍌4🥰21👍1👎1