Forwarded from Симулейтив
Что влияет на зарплату и карьеру аналитика?
Дождались большого исследования рынка аналитики от коллег из NEWHR за 2025 год! Спасибо всем, кто принял участие🧡
Выжимки из него смотрите в карточках, а с полным текстом исследования можете ознакомиться по ссылке.
Также прикрепляем несколько прямых ссылок на интересные инсайты:
➖ Какие задачи решают аналитики сегодня
➖ На какие компании и в каком формате работают
➖ Как менялись зарплаты аналитиков в течение 2025 года
➖ Сколько они получают сегодня в зависимости от специализации и грейда
➖ Откуда пришли в профессию и как планируют развиваться дальше
➖ ТОП и Анти-ТОП российских компаний по мнению аналитиков
➖ Что ценят в аналитической культуре
➖ На какие конференции ходят и за кем из экспертов следят
📈 Симулейтив | ВК | YouTube
Дождались большого исследования рынка аналитики от коллег из NEWHR за 2025 год! Спасибо всем, кто принял участие
В исследовании приняли участие 1493 аналитика из 14+ специализаций. Они рассказали, где живут, на какие компании работают, на какие рынки ориентируются, как ищут работу и к чему стремятся. А также — сколько зарабатывают и как изменилась их зарплата.
Выжимки из него смотрите в карточках, а с полным текстом исследования можете ознакомиться по ссылке.
Также прикрепляем несколько прямых ссылок на интересные инсайты:
➡️ Для сравнения — исследование за 2024 год.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5👍3🔥2
Как понять, что вы реально готовы искать работу ML-инженером
Привет! На связи Кристина Желтова, директор по разработке моделей в Газпромбанке и ментор курса «ML-инженер» 👋🏻
Большинство людей начинают ходить по собеседования слишком поздно — они изучают ещё один курс, ещё одну книгу, доделывают очередной пет-проект и в какой-то момент понимают, что занимаются самообучением уже два года, а резюме так и не отправили.
Это называется «ловушкой готовности», и она косит людей в ML особенно жёстко, потому что область огромная, динамичная, и синдром самозванца здесь цветёт особенно ярко.
Как же всё-таки понять, что уже пора выйти на рынок? У меня есть для вас три критерия:
1️⃣ Вы можете объяснить своё решение, а не только запустить его и сделать fit-predict
Запустить ноутбук со сгенерированным кодом умеют многие, а вот объяснить, почему вы выбрали именно этот алгоритм, именно эти гиперпараметры, и что произойдёт, если данные будут другими — это уже признак инженерной зрелости.
На реальных собеседованиях вас вряд ли попросят воспроизвести статью, зато могут спросить: «А почему так? А что будет если...?»
2️⃣ У вас есть хотя бы один проект, который решает какую-то проблему
Не «я реализовал нейронную сеть из туториала на MNIST или модель на датасете Titanic», а «я сформулировал задачу, взял данные, обучил модель, развернул её, и она делает что-то полезное».
Это может быть Telegram-бот, который классифицирует отзывы клиентов, API для модели предсказания оттока, рекомендательная система с простым дашбордом. Масштаб не важен, важна цепочка: задача → данные → модель → результат.
Такой проект стоит больше, чем десять пройденных курсов. Потому что он показывает, что вы умеете не только учиться, но и делать реальную работу.
3️⃣ Вы знаете, чего не знаете
Звучит парадоксально, но это один из самых зрелых признаков.
Джун, который не готов, часто либо думает, что знает всё, либо уверен, что не знает ничего (и не идёт на собес вообще).
Более зрелый кандидат говорит: «Я хорошо разбираюсь в классическом ML и понимаю, как работают трансформеры. В MLOps у меня базовый уровень — могу развернуть, но с оркестрацией опыта мало. Готов учиться». Это стадия осознанной некомпетентности, от которой один шаг к профессионализму. Рекрутер и технический интервьюер это оценят.
Готовность — это умение работать, несмотря на пробелы!
Привет! На связи Кристина Желтова, директор по разработке моделей в Газпромбанке и ментор курса «ML-инженер» 👋🏻
Большинство людей начинают ходить по собеседования слишком поздно — они изучают ещё один курс, ещё одну книгу, доделывают очередной пет-проект и в какой-то момент понимают, что занимаются самообучением уже два года, а резюме так и не отправили.
Это называется «ловушкой готовности», и она косит людей в ML особенно жёстко, потому что область огромная, динамичная, и синдром самозванца здесь цветёт особенно ярко.
Как же всё-таки понять, что уже пора выйти на рынок? У меня есть для вас три критерия:
Запустить ноутбук со сгенерированным кодом умеют многие, а вот объяснить, почему вы выбрали именно этот алгоритм, именно эти гиперпараметры, и что произойдёт, если данные будут другими — это уже признак инженерной зрелости.
На реальных собеседованиях вас вряд ли попросят воспроизвести статью, зато могут спросить: «А почему так? А что будет если...?»
Проверить себя очень просто — возьмите любой свой проект и попробуйте объяснить его вслух, включая мелкие детали, как если бы объясняли его коллеге, который не смотрел в код. Если объяснение рассыпается — это точка роста, не повод паниковать.
Не «я реализовал нейронную сеть из туториала на MNIST или модель на датасете Titanic», а «я сформулировал задачу, взял данные, обучил модель, развернул её, и она делает что-то полезное».
Это может быть Telegram-бот, который классифицирует отзывы клиентов, API для модели предсказания оттока, рекомендательная система с простым дашбордом. Масштаб не важен, важна цепочка: задача → данные → модель → результат.
Такой проект стоит больше, чем десять пройденных курсов. Потому что он показывает, что вы умеете не только учиться, но и делать реальную работу.
Звучит парадоксально, но это один из самых зрелых признаков.
Джун, который не готов, часто либо думает, что знает всё, либо уверен, что не знает ничего (и не идёт на собес вообще).
Более зрелый кандидат говорит: «Я хорошо разбираюсь в классическом ML и понимаю, как работают трансформеры. В MLOps у меня базовый уровень — могу развернуть, но с оркестрацией опыта мало. Готов учиться». Это стадия осознанной некомпетентности, от которой один шаг к профессионализму. Рекрутер и технический интервьюер это оценят.
И один контрольный вопрос напоследок: если бы вам прямо сейчас написал рекрутер с приглашением на техническое собеседование по ML, какой была бы ваша первая реакция?➖ «О, интересно, надо попробовать» — скорее всего, вы готовы➖ «Мне нужно ещё немного времени подготовиться» — вероятно, вы в ловушке готовности➖ «Я сначала дочитаю вот эту книгу» — ну вы поняли 🙂
Готовность — это умение работать, несмотря на пробелы!
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5👍2🔥1
Всем привет, я Наталия Воронова, Senior ML Engineer/Data Scientist, разработчик AI-платформы в маркетинге и спикер Симулейтив 👋
Буду делиться опытом в этом канале. Несколько фактов обо мне:
1️⃣ 10 лет в банковском секторе на руководящих позициях. Отвечала за решения по кредитным портфелям. PD, LGD и дефолты — это моя практика.
2️⃣ У меня 5 дипломов: Data Science, Fullstack-разработка, а также экономическое, филологическое и юридическое образование.
3️⃣ Я Data Scientist, который работает с бизнес-метриками. Мои модели про прибыль, риск и решения.
4️⃣ Строю ML-системы end-to-end. От данных к продакшену и влиянию на бизнес
(scoring, churn, pricing, recommender systems, NLP, CV).
5️⃣ Сейчас разрабатываю собственную AI-платформу. Она помогает оценивать прибыль от привлечения клиентов с учётом риска и оттока.
Почему я здесь? Потому что вижу, что многим не хватает связки между моделями и реальными решениями. Здесь я буду делиться, как ML влияет на бизнес, разбором реальных задач, опытом построения систем и наблюдениями за рынком ML и AI.
Рада познакомиться 💙
Буду делиться опытом в этом канале. Несколько фактов обо мне:
(scoring, churn, pricing, recommender systems, NLP, CV).
Почему я здесь? Потому что вижу, что многим не хватает связки между моделями и реальными решениями. Здесь я буду делиться, как ML влияет на бизнес, разбором реальных задач, опытом построения систем и наблюдениями за рынком ML и AI.
Рада познакомиться 💙
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤7🔥4
Катастрофа в проде: модель идеально работает в ноутбуке, но ломается после выкатки в продакшн
Привет! На связи Кристина Желтова, директор по разработке моделей в Газпромбанке и преподаватель курса «Инженер машинного обучения» 👋🏻
На практике нередкая ситуация, когда ML-специалист или даже целая команда празднуют победу — их модель показывает на локальных экспериментах отличное качество, а значит, задача решена!
Модель проходит код-ревью, готовится к раскатке в прод и пилотированию или A/B-тестированию, и вот час настал — её выпускают в настоящую жизнь, в продакшн. Но через какое-то время разгневанные заказчики приходят и сетуют на сошедшую с ума модель, которая одобрила кредиты всем подряд или рекомендовала потратить весь бюджет маркетинга на удержание клиентов, которые и так не собирались уходить.
❓ Какие могут быть причины такого поведения модели, и как узнать о существовании проблемы не от заказчиков, а во время экспериментов?
1️⃣ Temporal Leakage: неправильная разбивка данных, упорядоченных по времени
Проблема: команда использовала обычный
Что произошло: модель училась на данных от января до декабря, а тестировалась на случайно перемешанных данных из этого же периода. Фактически, модель использовала «будущее» для предсказания «прошлого».
Правильный подход: использовать специальную валидацию для временных данных — TrainTestSplit.
2️⃣ Feature Leakage: признаки из «будущего»
Проблема: в датасете могли быть признаки, которые содержали информацию из будущего относительно момента предсказания. Например, параметр
Правильный подход: проверять, что все признаки, агрегации и статистики считаются только на данных до целевой даты предсказания.
3️⃣ Target Leakage: утечка информации из целевой переменной
Проблема: для моделирования использовали признаки, напрямую связанные с целевой переменной или вычисляемые из неё.
Правильный подход: все признаки должны быть собраны или вычислены только из данных, доступных до момента, когда модель делает прогноз. Также стоит отделять создание признаков от целевой переменной во времени.
У вас бывали подобные случаи? Делитесь в комментариях!
Привет! На связи Кристина Желтова, директор по разработке моделей в Газпромбанке и преподаватель курса «Инженер машинного обучения» 👋🏻
На практике нередкая ситуация, когда ML-специалист или даже целая команда празднуют победу — их модель показывает на локальных экспериментах отличное качество, а значит, задача решена!
Модель проходит код-ревью, готовится к раскатке в прод и пилотированию или A/B-тестированию, и вот час настал — её выпускают в настоящую жизнь, в продакшн. Но через какое-то время разгневанные заказчики приходят и сетуют на сошедшую с ума модель, которая одобрила кредиты всем подряд или рекомендовала потратить весь бюджет маркетинга на удержание клиентов, которые и так не собирались уходить.
Проблема: команда использовала обычный
train_test_split с shuffle=True на упорядоченных данных с временными метками.Что произошло: модель училась на данных от января до декабря, а тестировалась на случайно перемешанных данных из этого же периода. Фактически, модель использовала «будущее» для предсказания «прошлого».
Правильный подход: использовать специальную валидацию для временных данных — TrainTestSplit.
Проблема: в датасете могли быть признаки, которые содержали информацию из будущего относительно момента предсказания. Например, параметр
customer_lifetime_value, рассчитанный на транзакциях после целевой даты предсказания.Правильный подход: проверять, что все признаки, агрегации и статистики считаются только на данных до целевой даты предсказания.
Проблема: для моделирования использовали признаки, напрямую связанные с целевой переменной или вычисляемые из неё.
Правильный подход: все признаки должны быть собраны или вычислены только из данных, доступных до момента, когда модель делает прогноз. Также стоит отделять создание признаков от целевой переменной во времени.
У вас бывали подобные случаи? Делитесь в комментариях!
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6👍5🔥3
Выкатили модель скоринга — метрики идеальные, но через месяц дефолты поползли вверх. Почему?
Привет! Я Наталия Воронова, спикер курса «Дата-сайентист» 👋🏻
Расскажу кейс из практики про то, где на самом деле ломаются ML-модели после деплоя. И спойлер: дело не в алгоритмах.
Ситуация
Мы обучили модель кредитного скоринга. ROC-AUC стабильный, валидация чистая, и модель уходит в прод.
Через время качество начинает ухудшаться. Не резко, постепенно. Самый неприятный сценарий: модель работает (ошибок нет), но бизнес-метрики ползут вниз.
Что произошло?
Смещение распределений признаков между train и prod. В обучении признаки считались на историческом срезе: доход клиента, транзакционная активность, поведенческие агрегаты.
В проде данные приходили с задержкой, часть признаков считалась по другому временному окну, а часть обновлялась асинхронно. Модель начала получать данные, которые статистически отличались от обучающей выборки.
Как диагностировали?
PSI (Population Stability Index) — стандарт в кредитном скоринге. PSI показывает, насколько распределение признака в проде отличается от обучающего.
Мы сравнили train и текущий поток. Результат: по ключевым фичам PSI > 0.3. Получается, модель работала уже в другой реальности.
Правило интерпретации PSI:
➖ < 0.1 → стабильно
➖ 0.1–0.25 → есть сдвиг, следить
➖ > 0.25 → критическое изменение
Почему это происходит?
Данные не живут в вакууме. Особенно в динамичных задачах:
🟠 Кредитный риск → меняется макроэкономика, ставки, доходы
🟠 Маркетинг → меняются каналы, сезонность, поведение
🟠 churn → меняется продукт, конкуренты, акции
Модель не ломается. Она начинает экстраполировать туда, где никогда не обучалась.
Что сделали:
🔹 Синхронизировали пайплайны расчёта признаков (train = prod);
🔹 Зафиксировали временные окна;
🔹 Добавили мониторинг PSI по ключевым фичам;
🔹 Ввели алерты на drift.
Мониторите drift в проектах? 😉
Привет! Я Наталия Воронова, спикер курса «Дата-сайентист» 👋🏻
Расскажу кейс из практики про то, где на самом деле ломаются ML-модели после деплоя. И спойлер: дело не в алгоритмах.
Ситуация
Мы обучили модель кредитного скоринга. ROC-AUC стабильный, валидация чистая, и модель уходит в прод.
Через время качество начинает ухудшаться. Не резко, постепенно. Самый неприятный сценарий: модель работает (ошибок нет), но бизнес-метрики ползут вниз.
Что произошло?
Смещение распределений признаков между train и prod. В обучении признаки считались на историческом срезе: доход клиента, транзакционная активность, поведенческие агрегаты.
В проде данные приходили с задержкой, часть признаков считалась по другому временному окну, а часть обновлялась асинхронно. Модель начала получать данные, которые статистически отличались от обучающей выборки.
Как диагностировали?
PSI (Population Stability Index) — стандарт в кредитном скоринге. PSI показывает, насколько распределение признака в проде отличается от обучающего.
Мы сравнили train и текущий поток. Результат: по ключевым фичам PSI > 0.3. Получается, модель работала уже в другой реальности.
Правило интерпретации PSI:
Почему это происходит?
Данные не живут в вакууме. Особенно в динамичных задачах:
Модель не ломается. Она начинает экстраполировать туда, где никогда не обучалась.
Что сделали:
🔹 Синхронизировали пайплайны расчёта признаков (train = prod);
🔹 Зафиксировали временные окна;
🔹 Добавили мониторинг PSI по ключевым фичам;
🔹 Ввели алерты на drift.
Главный вывод: если вы не смотрите на распределения — вы не знаете, как работает ваша модель. Модель без контроля данных — это чёрный ящик с отложенными проблемами. Это ключевая разница между ML в ноутбуке и ML в продакшене.
Мониторите drift в проектах? 😉
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤3🔥2
Как понять, что на самом деле означают кластеры?
Привет! На связи Мария Жарова, ментор курсов «Инженер машинного обучения» и «Дата-сайентист» 👋🏻
Кластеризация — классная штука: модель сама разбивает объекты на группы, и никакая разметка не обязательна. Но проблемы обычно начинаются потом — когда необходимо понять, что вообще означают эти кластеры?
Дело в том, что просто получить лейблы модели недостаточно: если вы не интерпретировали кластеры, ценность такого решения стремится к нулю.
Держите два простых и очень наглядных способа, которые быстро помогают «прочитать» кластеры👇
1️⃣ Тепловая карта (heatmap)
Идея — берём признаки и считаем их средние значения внутри каждого кластера и дальше строим heatmap:
➖ по строкам — кластеры;
➖ по столбцам — признаки;
➖ цвет — значение.
Таким образом, вы сразу видите профиль кластера — где значения высокие, где низкие, и какие признаки «определяющие» для каждого кластера.
📌 В plotly можно использовать
2️⃣ Полярная диаграмма (Radar Chart)
Это уже более продвинутый способ: берём те же средние значения признаков и откладываем их по осям в виде «паутины». Таким образом, каждый кластер представляет собой отдельный многоугольник.
Что здесь удобно:
➖ Легко сравнивать кластеры между собой;
➖ Сразу видно, по каким признакам кластер «выделяется»;
➖ Отлично заходит для презентаций.
📌 В plotly можно использовать
Зачем это нужно?
Кластеризация — это больше не про алгоритм, а про смысл результатов. Если вы не можете объяснить, по какому принципу в каждой кластере собраны объекты, задача решена не до конца и приносить пользу бизнесу она не сможет.
Поэтому после ML-ной части с экспериментами и метриками не забывайте о простой, но самой важной части — интерпретации 😉
Сохраняйте — пригодится в реальных задачах!
Привет! На связи Мария Жарова, ментор курсов «Инженер машинного обучения» и «Дата-сайентист» 👋🏻
Кластеризация — классная штука: модель сама разбивает объекты на группы, и никакая разметка не обязательна. Но проблемы обычно начинаются потом — когда необходимо понять, что вообще означают эти кластеры?
Дело в том, что просто получить лейблы модели недостаточно: если вы не интерпретировали кластеры, ценность такого решения стремится к нулю.
Держите два простых и очень наглядных способа, которые быстро помогают «прочитать» кластеры
Идея — берём признаки и считаем их средние значения внутри каждого кластера и дальше строим heatmap:
Таким образом, вы сразу видите профиль кластера — где значения высокие, где низкие, и какие признаки «определяющие» для каждого кластера.
📌 В plotly можно использовать
px.imshow или go.HeatmapЭто уже более продвинутый способ: берём те же средние значения признаков и откладываем их по осям в виде «паутины». Таким образом, каждый кластер представляет собой отдельный многоугольник.
Что здесь удобно:
📌 В plotly можно использовать
go.ScatterpolarЗачем это нужно?
Кластеризация — это больше не про алгоритм, а про смысл результатов. Если вы не можете объяснить, по какому принципу в каждой кластере собраны объекты, задача решена не до конца и приносить пользу бизнесу она не сможет.
Поэтому после ML-ной части с экспериментами и метриками не забывайте о простой, но самой важной части — интерпретации 😉
Сохраняйте — пригодится в реальных задачах!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5❤4👍4
Я расскажу всё, что нужно знать о профессии Data Scientist
Привет! На связи Мария Жарова, ML-инженер в команде рекомендаций Wildberries и ментор курса «Дата-сайентист» 👋🏻
Часто новички путаются: DS, ML, DL, AI — это одно и то же? Когда вообще нужно машинное обучение, а когда хватает обычной аналитики? И что реально спрашивают на собеседованиях у джуниоров?
На вебинаре мы не просто поговорим о теории, но и займёмся практикой. Возьмём данные о клиентах банка и вместе построим модели для прогнозирования оттока. Сравним разные алгоритмы, посмотрим на метрики качества и интерпретируемость, разберём, какие факторы влияют на уход клиентов и как их отследить.
Расскажу вам:
🟠 Кто такой Data Scientist и как различать DS/ML/DL/AI (и зачем это знать);
🟠 Почему машинное обучение не всегда лучше аналитики, но без него не обойтись;
🟠 Откуда такой спрос на DS и какие задачи бизнес готов за это платить;
🟠 Какие требования к junior DS сейчас на рынке;
🟠 А главное — на практике: построим модели оттока клиентов банка, сравним подходы и разберём ключевые факторы.
❗️ Встречаемся 13 апреля в 19:00 МСК
➡️ Зарегистрироваться
Привет! На связи Мария Жарова, ML-инженер в команде рекомендаций Wildberries и ментор курса «Дата-сайентист» 👋🏻
Часто новички путаются: DS, ML, DL, AI — это одно и то же? Когда вообще нужно машинное обучение, а когда хватает обычной аналитики? И что реально спрашивают на собеседованиях у джуниоров?
На вебинаре мы не просто поговорим о теории, но и займёмся практикой. Возьмём данные о клиентах банка и вместе построим модели для прогнозирования оттока. Сравним разные алгоритмы, посмотрим на метрики качества и интерпретируемость, разберём, какие факторы влияют на уход клиентов и как их отследить.
Расскажу вам:
Подключайтесь к эфиру — я отвечу на ваши вопросы про карьеру в DS, машинное обучение и реальные кейсы из индустрии (и немного про работу в Wildberries, Альфа Банке и Сбере, если спросите 😁).
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6👍3🔥3
О чём будем говорить:
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤4🔥3
Отбор признаков в машинном обучении
Привет! На связи Кристина Желтова, директор по разработке моделей в Газпромбанке и преподаватель курса «Инженер машинного обучения» 👋🏻
Представьте, что вы обучаете ML-модель на датасете из 50-ти признаков с точностью 87%. Добавили еще 20 признаков и качество упало до 83% — разве больше данных не значит лучше? Нет, если данные некачественные. Чем больше бесполезных признаков, тем быстрее модель переобучается и хуже обобщается на новые данные.
В этой ситуации на помощь приходит отбор признаков (feature selection) — одна из самых недооценённых техник классического ML. Во многих моделях есть «встроенные» способы отбора признаков — например, для случайного леса можно оценить важности признаков простым способом за 30 секунд:
Однако этот метод не лишён недостатков, поэтому на практике есть большое количество алгоритмов отбора признаков, которые можно разделить на три группы:
1️⃣ Filter-методы (фильтруем признаки по статистике)
Это самый быстрый способ. Мы смотрим на каждый признак отдельно без построения модели: например, удаляем признаки с низкой дисперсией (по сути делаем предположение, что раз они не очень разнообразны, то и не очень полезны).
Отличный вариант на случай, если у вас очень много признаков и нужно быстро сократить их количество.
2️⃣ Wrapper-методы (обёртки)
Более медленные, но умные методы — тренируем модель много раз, удаляя или добавляя признаки.
Отличный баланс скорости и качества, когда признаков не слишком много, и есть время подождать.
3️⃣ Embedded-методы (встроенные в модель)
Как раз к ним относятся
Ставьте🔥 , если интересно!
Привет! На связи Кристина Желтова, директор по разработке моделей в Газпромбанке и преподаватель курса «Инженер машинного обучения» 👋🏻
Представьте, что вы обучаете ML-модель на датасете из 50-ти признаков с точностью 87%. Добавили еще 20 признаков и качество упало до 83% — разве больше данных не значит лучше? Нет, если данные некачественные. Чем больше бесполезных признаков, тем быстрее модель переобучается и хуже обобщается на новые данные.
В этой ситуации на помощь приходит отбор признаков (feature selection) — одна из самых недооценённых техник классического ML. Во многих моделях есть «встроенные» способы отбора признаков — например, для случайного леса можно оценить важности признаков простым способом за 30 секунд:
from sklearn.ensemble import RandomForestClassifier
from sklearn.datasets import make_classification
X, y = make_classification(n_samples=1000, n_features=50, n_informative=10, random_state=42)
# Обучили модель
rf = RandomForestClassifier(n_estimators=100, random_state=42)
rf.fit(X, y)
# Посмотрели важность признаков
importances = rf.feature_importances_
top_features = sorted(range(len(importances)), key=lambda i: importances[i], reverse=True)[:10]
print(f"Топ-10 признаков: {top_features}")
Почему это работает? Потому что случайный лес рассчитывает, насколько каждый признак уменьшает ошибку на каждом шаге построения каждого дерева решений. Если признак не помогает, он не будет использоваться часто.
Однако этот метод не лишён недостатков, поэтому на практике есть большое количество алгоритмов отбора признаков, которые можно разделить на три группы:
Это самый быстрый способ. Мы смотрим на каждый признак отдельно без построения модели: например, удаляем признаки с низкой дисперсией (по сути делаем предположение, что раз они не очень разнообразны, то и не очень полезны).
from sklearn.feature_selection import VarianceThreshold
selector = VarianceThreshold(threshold=0.01)
X_filtered = selector.fit_transform(X)
Отличный вариант на случай, если у вас очень много признаков и нужно быстро сократить их количество.
Более медленные, но умные методы — тренируем модель много раз, удаляя или добавляя признаки.
from sklearn.feature_selection import RFE
from sklearn.linear_model import LogisticRegression
# RFE (recursive feature elimination): обучаем модель, удаляем худший признак, повторяем
estimator = LogisticRegression(random_state=42, max_iter=1000)
rfe = RFE(estimator, n_features_to_select=10, step=1)
X_rfe = rfe.fit_transform(X, y)
print(f"Выбранные признаки: {rfe.support_}")
Отличный баланс скорости и качества, когда признаков не слишком много, и есть время подождать.
Как раз к ним относятся
feature_importances_ из случайного леса. Быстро, но зависит от конкретной модели.Эти методы в совокупности помогут вам отобрать лучшие признаки для своих моделей и быстро улучшить качество.
Ставьте
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10❤2👍2❤🔥1
Как автоматически находить ошибки в разметке и чистить датасеты
Привет! На связи Мария Жарова, ML-инженер в команде рекомендаций в Wildberries и ментор курса «Инженер машинного обучения» 👋🏻
Если вы когда-нибудь обучали модели, то знаете: качество данных почти всегда важнее самой модели. Неверная разметка, дубликаты, пропуски, дрейф — всё это незаметно «ломает» метрики и приводит к странным предсказаниям.
Хорошая новость — часть этих проблем можно находить автоматически!
Для этого есть библиотека Cleanlab — инструмент для анализа качества данных и поиска скрытых ошибок в датасетах🧹
Что умеет этот инструмент:
🟠 Находить потенциально неверно размеченные объекты и оценивать «уверенность» в разметке;
🟠 Искать шумные классы и пересечения между ними;
🟠 Выявлять дубликаты и аномалии;
🟠 Анализировать пропуски и проблемы в признаках;
🟠 Проверять дрейф данных между выборками.
А также Cleanlab полностью совместим со sklearn «из коробки» и умеет работать поверх любой модели.
Как это работает?
Cleanlab использует вероятностные предсказания модели, чтобы оценить, насколько разметка согласуется с паттернами в данных. Если модель стабильно «не согласна» с label’ом, объект помечается как подозрительный. Это особенно полезно для:
🟠 больших датасетов с ручной разметкой, особенно при крауд-сорсинге;
🟠 CV / NLP-задач;
🟠 пользовательских событий (где много шума).
Быстрый старт
Установка:
Пример №1 — поиск ошибок разметки для классификации:
На выходе получаем строки датасета, где разметка, вероятно, ошибочная — их можно перепроверить вручную, удалить или переразметить.
Пример №2 — автоматическая очистка датасета:
Также среди возможностей библиотеки — оценка качества разметки по классам (можно понять, какие классы путают чаще всего), а также работа с текстами и изображениями — достаточно подать эмбеддинги или вероятности любой модели.
Быстрые ссылки
➡️ Официальная документация
➡️ Страничка на PyPI с примерами
Ставьте❤️ , если было полезно — и сохраняйте, чтобы протестировать на своих датасетах!
Привет! На связи Мария Жарова, ML-инженер в команде рекомендаций в Wildberries и ментор курса «Инженер машинного обучения» 👋🏻
Если вы когда-нибудь обучали модели, то знаете: качество данных почти всегда важнее самой модели. Неверная разметка, дубликаты, пропуски, дрейф — всё это незаметно «ломает» метрики и приводит к странным предсказаниям.
Хорошая новость — часть этих проблем можно находить автоматически!
Для этого есть библиотека Cleanlab — инструмент для анализа качества данных и поиска скрытых ошибок в датасетах
Что умеет этот инструмент:
А также Cleanlab полностью совместим со sklearn «из коробки» и умеет работать поверх любой модели.
Как это работает?
Cleanlab использует вероятностные предсказания модели, чтобы оценить, насколько разметка согласуется с паттернами в данных. Если модель стабильно «не согласна» с label’ом, объект помечается как подозрительный. Это особенно полезно для:
Быстрый старт
Установка:
pip install cleanlab
Пример №1 — поиск ошибок разметки для классификации:
# ищем подозрительно размеченные объекты
label_issues = find_label_issues(
labels=y_train,
pred_probs=pred_probs
)
На выходе получаем строки датасета, где разметка, вероятно, ошибочная — их можно перепроверить вручную, удалить или переразметить.
Пример №2 — автоматическая очистка датасета:
from cleanlab.classification import CleanLearning
cl = CleanLearning(model)
cl.fit(X_train, y_train)
# уже очищенное обучение
preds = cl.predict(X_test)
Также среди возможностей библиотеки — оценка качества разметки по классам (можно понять, какие классы путают чаще всего), а также работа с текстами и изображениями — достаточно подать эмбеддинги или вероятности любой модели.
Быстрые ссылки
Ставьте
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8👍6🔥3
Модель стала точнее, но бизнес начал терять деньги
Привет! На связи Наталия Воронова, спикер курса «Дата-сайентист» 👋🏻
Разберу кейс, который часто выглядит как успех в ML, но заканчивается проблемами для бизнеса.
🟠 Ситуация
Задача — предсказание отклика клиентов на маркетинговую кампанию.
Мы обучили модель (градиентный бустинг), оптимизировали ROC-AUC и провалидировали. По метрикам — ROC-AUC вырос, и precision/recall лучше бейзлайна. Модель запускают в прод и используют для таргетинга.
Через несколько недель конверсия вроде норм, кампания работает, но прибыль падает. При этом модель формально лучше, отклики есть и ошибок нет.
🟠 В чём проблема
Оптимизировали не ту метрику. Модель училась предсказывать, кто с большей вероятностью откликнется, но бизнесу нужно было выяснить, кто принесёт деньги.
Модель начала выбирать пользователей, которые и так склонны к покупке, а также клиентов с низким чеком и аудиторию с высоким шансом отклика, но низкой ценностью.
В итоге мы тратили бюджет на тех, кто либо купил бы и без нас, либо приносил мало денег.
🟠 Где здесь ошибка?
ROC-AUC — это инструмент ранжирования. Но он не учитывает стоимость контакта, выручку и LTV. Модель правильная с точки зрения ML, но неправильная с точки зрения бизнеса.
🟠 Что мы сделали?
Переформулировали задачу. Вместо P (response) начали оптимизировать ожидаемую прибыль (expected profit).
Модель начала выбирать клиентов с более высоким чеком, сегменты с лучшим LTV и аудиторию, где есть реальный uplift.
Результат: меньше охват, ниже «сырая» конверсия, НО выше прибыль и эффективнее бюджет.
🟠 Почему это важно
Это типичная ошибка: оптимизируют ML-метрику и игнорируют бизнес-метрику. Особенно это встречается часто в маркетинге, churn, рекомендациях или кредитных решениях.
Вы когда-нибудь сталкивались с ситуацией, когда модель лучше по метрикам, но хуже для бизнеса? Пишите в комментариях 👇🏻
Привет! На связи Наталия Воронова, спикер курса «Дата-сайентист» 👋🏻
Разберу кейс, который часто выглядит как успех в ML, но заканчивается проблемами для бизнеса.
Задача — предсказание отклика клиентов на маркетинговую кампанию.
Мы обучили модель (градиентный бустинг), оптимизировали ROC-AUC и провалидировали. По метрикам — ROC-AUC вырос, и precision/recall лучше бейзлайна. Модель запускают в прод и используют для таргетинга.
Через несколько недель конверсия вроде норм, кампания работает, но прибыль падает. При этом модель формально лучше, отклики есть и ошибок нет.
Оптимизировали не ту метрику. Модель училась предсказывать, кто с большей вероятностью откликнется, но бизнесу нужно было выяснить, кто принесёт деньги.
Модель начала выбирать пользователей, которые и так склонны к покупке, а также клиентов с низким чеком и аудиторию с высоким шансом отклика, но низкой ценностью.
В итоге мы тратили бюджет на тех, кто либо купил бы и без нас, либо приносил мало денег.
ROC-AUC — это инструмент ранжирования. Но он не учитывает стоимость контакта, выручку и LTV. Модель правильная с точки зрения ML, но неправильная с точки зрения бизнеса.
Переформулировали задачу. Вместо P (response) начали оптимизировать ожидаемую прибыль (expected profit).
Для каждого клиента считали:
Expected Profit = P(response) × Revenue − Cost,
где:
— Revenue — ожидаемый доход;
— Cost — стоимость контакта / акции.
Модель начала выбирать клиентов с более высоким чеком, сегменты с лучшим LTV и аудиторию, где есть реальный uplift.
Результат: меньше охват, ниже «сырая» конверсия, НО выше прибыль и эффективнее бюджет.
Это типичная ошибка: оптимизируют ML-метрику и игнорируют бизнес-метрику. Особенно это встречается часто в маркетинге, churn, рекомендациях или кредитных решениях.
Если ваша метрика не связана с деньгами, вы не управляете результатом. ML-модель должна оптимизировать не accuracy / ROC-AUC, а экономический эффект.
Вы когда-нибудь сталкивались с ситуацией, когда модель лучше по метрикам, но хуже для бизнеса? Пишите в комментариях 👇🏻
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3👍3🔥3
Почему diffusion-модели стали «рабочей лошадкой» для ML-инженера
Привет! На связи Кристина Желтова, директор по разработке моделей в Газпромбанке и преподаватель курса «ML-инженер» 👋🏻
Когда люди впервые слышат про генеративные diffusion-модели, обычно фокус сразу уходит в сторону сложной теории и их устройства: шум, шаги денойзинга, латентные пространства и так далее, но если посмотреть на тему со стороны инженерии, можно заметить, что подобные модели стали популярными во многом благодаря своей экосистеме и простоте использования. Если вам нужен генеративный пайплайн, необязательно погружаться в сложную математику моделей — достаточно разобраться с рабочим стеком и начать творить.
В инженерной практике почти не выигрывают технологии, которые в теории очень мощные, но не имеют хороших инженерных имплементаций — и diffusion-модели это подтверждают. На практике это означает, что не нужно каждый раз собирать всё с нуля — есть готовые предобученные модели, понятные пайплайны, модульные компоненты, которые можно менять под задачу.
Для старта своего первого проекта с генеративными моделями достаточно проделать несколько простых шагов:
1️⃣ Понять, какую задачу вы хотите решить — например, text-to-image (создать картинку по текстовому описанию), image-to-image (преобразовать существующее изображение в новое), inpainting (изменить или дорисовать только выбранную область изображения).
2️⃣ Выберите самый близкий готовый pipeline — готовый предобученный пайплайн будет разумным и простым бейзлайном. Подобрать модель под задачу можно в Hugging Face Hub, а пример для быстрого старта посмотреть здесь.
3️⃣ Соберите минимальный набор реальных примеров вашей задачи. Даже если вы начинаете с готовой предобученной модели, вам нужно хотя бы небольшое количество данных для проверки качества модели.
4️⃣ На первом этапе стоит проверить, какого качества можно добиться только настройкой промптов и параметров инференса. Если модель в целом работает, но плохо понимает ваш стиль, объект или предметную область, тогда уже есть смысл думать о дообучении.
5️⃣ Если всё-таки нужно дообучение, начните с LoRA — максимально эффективный по ресурсам и оптимальный по итоговому качеству метод. Пример с дообучением через LoRA можно посмотреть в документации.
6️⃣ После оптимизации качества можно перейти к оптимизации скорости работы и подготовке к эффективному инференсу.
7️⃣ И, наконец, для полной инженерной зрелости, к развёртыванию.
Итого, diffusion-модели сегодня не только про вау-эффект и красивые демо, но во многом про зрелую экосистему, в которой можно быстро собрать и аккуратно адаптировать решение под свои данные и быстро довести всё до прода.
🧡 Все детали и программа ждут вас по ссылке: simulative.ru/ml-engineer
Привет! На связи Кристина Желтова, директор по разработке моделей в Газпромбанке и преподаватель курса «ML-инженер» 👋🏻
Когда люди впервые слышат про генеративные diffusion-модели, обычно фокус сразу уходит в сторону сложной теории и их устройства: шум, шаги денойзинга, латентные пространства и так далее, но если посмотреть на тему со стороны инженерии, можно заметить, что подобные модели стали популярными во многом благодаря своей экосистеме и простоте использования. Если вам нужен генеративный пайплайн, необязательно погружаться в сложную математику моделей — достаточно разобраться с рабочим стеком и начать творить.
В инженерной практике почти не выигрывают технологии, которые в теории очень мощные, но не имеют хороших инженерных имплементаций — и diffusion-модели это подтверждают. На практике это означает, что не нужно каждый раз собирать всё с нуля — есть готовые предобученные модели, понятные пайплайны, модульные компоненты, которые можно менять под задачу.
Для старта своего первого проекта с генеративными моделями достаточно проделать несколько простых шагов:
Итого, diffusion-модели сегодня не только про вау-эффект и красивые демо, но во многом про зрелую экосистему, в которой можно быстро собрать и аккуратно адаптировать решение под свои данные и быстро довести всё до прода.
Если вы хотите не просто запускать готовые пайплайны, а научиться самостоятельно строить, оптимизировать и внедрять такие решения в продакшен, приходите на курс «ML-инженер». Вместе мы пройдём полный путь инженерной работы с моделями, включая диффузионные, и вы сможете уверенно решать реальные бизнес-задачи.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4🔥4👍2
Как правильно выбрать метрику для рекомендательных систем
Привет! На связи Мария Жарова, ментор курсов «ML-инженер» и «Дата-сайентист» 👋🏻
Часто кажется, что рекомендательные системы строятся как обычный ML-пайплайн: собрать данные, обучить модели, оценить их точность, выбрать наилучшую — и всё. Но на деле при построении рекомендаций может возникнуть масса коварных проблем — к счастью, их можно попытаться отследить раньше, чем они поедут на прод, если правильно выбрать метрику!
Разберем несколько самых полезных — от простейших до более нетривиальных 👆🏻
Сохраняйте, если строите рекомендации!
Привет! На связи Мария Жарова, ментор курсов «ML-инженер» и «Дата-сайентист» 👋🏻
Часто кажется, что рекомендательные системы строятся как обычный ML-пайплайн: собрать данные, обучить модели, оценить их точность, выбрать наилучшую — и всё. Но на деле при построении рекомендаций может возникнуть масса коварных проблем — к счастью, их можно попытаться отследить раньше, чем они поедут на прод, если правильно выбрать метрику!
Разберем несколько самых полезных — от простейших до более нетривиальных 👆🏻
Сохраняйте, если строите рекомендации!
❤8👍4🔥4