MLinside - школа ML – Telegram
MLinside - школа ML
3.51K subscribers
202 photos
18 videos
164 links
Предзапись на 4 поток курса "База ML": https://vk.cc/cQ7AkI
Наши курсы: https://taplink.cc/mlinside
Чат коммьюнити: @ml_insidechat
По вопросам: @marinagartm
Download Telegram
Учимся на практике: решаем реальные ML-задачки

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

Третья задача: Сегментация клиентов магазина

Что нужно сделать:
Разделить клиентов на группы по их поведению без заранее заданных меток

Как можно сделать:
▪️ Использовать признаки: общий чек, частота покупок, возраст, доход
▪️ Нормализовать данные
▪️ Применить K-Means или DBSCAN
▪️ Визуализировать кластеры через PCA

Данные можно взять на Kaggle: https://www.kaggle.com/datasets/vjchoudhary7/customer-segmentation-tutorial-in-python

Готовы попробовать? Делитесь своими результатами в комментариях.

Все посты этой рубрики можно посмотреть по тэгу: #петпроект_MLinside
🔥173
Первая задача джуна

Начинать что-то новое всегда страшно. Кто-то откладывает реальную работу, потому что боится работать с продуктом, пока не разберется в нем «очень глубоко внутри», а кто-то считает, что для успешного начала нужно подтянуть теорию, еще порешать задачки. Но всё сводится к прокрастинации работы.

Поэтому, мы подобрали пять типовых задач для ML инженера позиции джуниор, чтобы вы понимали – как они выглядят в жизни и к какому результату вы должны прийти.

▪️Кейс 1. Сбор и чистка данных
Это рутина, которая делает все остальное возможным. Вам дают тему и источники, вы тянете сырые тексты или таблицы, убираете мусор, дубли и странные кодировки, приводите поля к одному виду и балансируете классы. Цель простая: получить набор, на котором не стыдно учить модель. Финал выглядит как аккуратный датасет плюс скрипт и README, чтобы любой смог повторить.

▪️Кейс 2. Baseline на бенчмарке
Команде нужна точка отсчета. Вы берете референсный конфиг, фиксируете версии и seed, гоняете модель на известном наборе и сверяете метрики с публичной вилкой. Смысл в том, чтобы понять, что у нас все собрано правильно. Ожидаемый итог: метрики в пределах нормы, логи и конфиг приложены, есть с чем сравнивать будущие улучшения.

▪️Кейс 3. Мини-пайплайн препроцессинга
Это превращение разрозненных шагов в один воспроизводимый прогон. Делаете короткий EDA, выносите очистку и трансформации в функции, сохраняете артефакты и проверяете на отложенной выборке. Цель - убрать ручные клики и магические константы. Результат - ноутбук или скрипт, который запускается сверху вниз и дает одинаковый выход.

▪️Кейс 4. Офлайн-оценка качества
Тут вы переводите качество в цифры, понятные команде. Выбираете уместные метрики, считаете их на разных сегментах, строите графики, фиксируете пороги. Контекст простой: по этим числам будут принимать решения. Финал - один скрипт оценки, таблица метрик с датой и короткий вывод, где видно, что стало лучше, а что просело.

▪️Кейс 5. Отчет по эксперименту и хенд-офф
Это упаковка работы так, чтобы коллега продолжил без вас. Коротко описываете задачу и гипотезу, откуда взялись данные и как готовились, какой конфиг модели, какие метрики получились и что делать дальше. Цель - экономия времени команды и сохранение знаний. Итог - аккуратный Markdown или ноутбук со ссылками и однозначным next step.

Сохраните пост, возможно он вам пригодится в будущем. А если вы хотели бы почитать про пошаговый разбор одного из этих кейсов с примерами кода, поставьте реакцию на пост или отпишитесь в комментариях.
29👍13
Продолжаем нашу регулярную рубрику Code Detective

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

Вот фрагмент кода:
import pandas as pd

df = pd.DataFrame({
'group': ['X', 'X', 'Y', 'Y'],
'value': [10, 20, 30, 40]
})

df['mean_diff'] = df.groupby('group').transform('mean') - df['value']


Тут всё хорошо. Или нет? Есть какая-то ошибка? Если есть, напишите в комментариях:
1. Какую ошибку нашли;
2. Варианты её исправления.

Ответ мы опубликуем завтра, а посты этой рубрики можно посмотреть по хэштегу: #CodeDetective_MLinside
MLinside - школа ML
Продолжаем нашу регулярную рубрику Code Detective Напомним правила – мы публикуем фрагмент кода, а вы смотрите, что с ним не так. Но трюк в том, что ошибки может и не быть. Так что если хотите прокачать навык чтения и анализа чужого кода, а это крайне полезный…
Как и обещали, вот ответ на пост. Да, в коде есть ошибка.
Объяснение:
df.groupby('group').transform('mean') возвращает датайфрейм, но df['value'] – Series, в итоге получится что столбец df['value'] вычитается из каждого столбца полученного датафрейма, получим ошибку что df['mean_diff'] присваивается датафрейм


Исправление:
import pandas as pd

df = pd.DataFrame({
'group': ['X', 'X', 'Y', 'Y'],
'value': [10, 20, 30, 40]
})

df['mean_diff'] = df.groupby('group')['value'].transform('mean') - df['value']
print(df)


#CodeDetective_MLinside
4
Media is too big
VIEW IN TELEGRAM
A/B‑тесты в ML – это не только сравнение AUC, но и влияние моделей на выручку, удержание и поведение пользователей. На YouTube, в ВК и на канале в Дзен у нас вышло видео с Александром Дубейковским (ML-Engineer Авито, ex-Yandex, эксперт MLinside), где он рассказал про то, как проводить A/B тесты и как выбирать бизнес‑метрики и воронку метрик, чтобы не обмануться оффлайном.

Если еще не смотрели, то вот ссылки на разные площадки:
YouTube
Вконтакте
Дзен
8🔥4
Учимся на практике: решаем реальные ML-задачки

Это рубрика #петпроект_MLinside и тут мы публикуем задачи из реальных проектов, чтобы лучше запомнить теорию. Бонусом, упоминание об этом можно включить в портфолио, что определенно поможет вам на собеседованиях.

Четвертая задача: Предсказание отказа оборудования

Что нужно сделать:
По данным с датчиков (температура, давление, вибрация) предсказать, сломается ли устройство

Как можно сделать:
▪️ Поработать с временными окнами: считать среднее, дисперсию, тренд;
▪️ Обозначить целевую переменную: 1 — поломка в ближайшие N часов, 0 — всё ок;
▪️ Обучить: бустинг, Random Forest, LSTM.

Данные можно взять на Kaggle: https://www.kaggle.com/datasets/stephanmatzka/predictive-maintenance-dataset-ai4i-2020

Готовы попробовать? Делитесь своими результатами в комментариях.

Все посты этой рубрики можно посмотреть по тэгу: #петпроект_MLinside
👍72
3
Типичные ошибки во время испытательного срока

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

Мы собрали самые частые ошибки, которые допускают даже опытные специалисты во время испытательного срока:

▪️Ошибка 1. Перерабатывать
На короткой дистанции это создаёт иллюзию сверхэффективности, но формирует завышенные ожидания. Ваш максимальный темп кажется нормой и вы начинаете жить на энергии «в долг». А теперь представьте, что кто-то из коллег пришёл с дополнительной, но очень важной и срочной задачкой. Но и без этого, через пару недель ваша продуктивность упадет, а у команды возникнет вопрос – что случилось?

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

▪️Ошибка 2. Бояться задавать вопросы
Особенно это заметно на удалёнке, когда вам не хочется отвлекать людей, вы еще особо ни с кем не знакомы и разбираетесь сами, тратя время на то, чтобы прикрутить обходные решения. Через пару месяцев выясняется, что уже есть готовые инструменты, которые закрывали вашу задачу за минуты. Эффективность просела, а миграция на стандартные практики выльется в долгий рефакторинг.

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

▪️Ошибка 3. Излишняя самостоятельность
На старте вы не знаете карту системы, зависимости между командами и реальные бизнесовые цели. Выбор задачи на глаз легко приводит к тому, что вы тратите время не там, где это сейчас критично.

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

Избегайте этих ошибок и мы уверены, что испытательный срок для вас пройдет без проблем.
12👏7💯3
Сможете найти ошибку в коде?

Да, это наша регулярная рубрика Code Detective. Тут мы публикуем фрагмент кода, а вы смотрите, что с ним не так. Но помните, что ошибки может и не быть. Так что если хотите прокачать навык чтения и анализа чужого кода, а это крайне полезный навык в работе ML-инженера, рубрика вам пригодится.

Вот фрагмент кода:
import pandas as pd

df = pd.DataFrame({
'A': [1, 2, 3],
'B': [4, 5, 6]
})

# Хотим изменить B там, где A > 1
df.loc[df['A'] > 1]['B'] = 99
print(df)

Тут всё хорошо. Или нет? Есть какая-то ошибка? Если есть, напишите в комментариях:
1. Какую ошибку нашли;
2. Варианты её исправления.

Ответ мы опубликуем завтра, а посты этой рубрики можно посмотреть по хэштегу: #CodeDetective_MLinside
Как и обещали, вот ответ на пост. Да, в коде есть ошибка.
Объяснение:
df.loc[...]['B'] = 99 loc создает временную копию и присваивание не повлияет на исходный DataFrame


Исправление:
df.loc[df['A'] > 1, 'B'] = 99


#CodeDetective_MLinside
5
Завтра мы будем записывать третью часть подкаста: Виктор Кантор x Валерий Бабушкин

Если не смотрели первые две части, вас ждет замечательный вечер. Посмотреть выпуски можно на YouTube, в ВК или Дзен.

На этот раз мы поговорим про спортивную дисциплину, процессы в ML и многом другом. И именно сейчас у вас есть возможность повлиять на содержание подкаста.

В комментариях вы можете написать свои вопросы Валерию Бабушкину, мы отберем самые интересные и передадим Виктору. Если хотите что-то узнать про ML System Design, работу в бигтехе или о чем-то еще - ждем вас в комментариях.
🔥157👍4
Что такое скрининг резюме и как его пройти

Думаем, вы уже знаете, что любое резюме в первую очередь сейчас рассматривает ATS, а не человек. Это не плохо и не хорошо, но это нужно учитывать, если вы хотите попасть на собеседование с реальным человеком.

Скрининг, это первичная оценка релевантности резюме к вакансии. Сначала алгоритм ищет ключевые слова из вакансии и базовую совместимость формата. Затем человек проверяет здравый смысл: кто вы и что делали.

Цель этого этапа - понять, стоит ли инвестировать время в интервью с вами.

Теперь поговорим о том, как работает ATS. Эта система любит прямые совпадения. Заголовок должен звучать так же, как в вакансии или максимально близко.

Ключевые навыки должны встретиться в вашем резюме несколько раз: в шапке, в опыте, в блоке навыков.

Сама структура резюме должна быть простой и читаемой. Лучше всего использовать стандартные шаблоны для резюме.

И финальный «босс» на этом пути - сам рекрутер. В поле его зрения попадают последние роли, масштаб проектов, стек, 3–5 конкретных результатов с цифрами, локация и формат работы.

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

И, конечно же, если у вас есть кейсы и несколько пет-проектов в портфолио, шансы пройти на собеседование кратно вырастают.

А если вам нужна помощь по составлению резюме, напишите в комментариях слово «Гайд», отправим вам ссылку на материал, который поможет правильно описать свой опыт и проекты.
10👎1👻1
Учимся на практике: решаем реальные ML-задачки

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

Пятая задача: прогнозирование спроса на товар

Что нужно сделать:
Узнать, сколько единиц товара будет продано завтра или на следующей неделе.

Как можно сделать:
▪️ Использовать признаки: история продаж, день недели, сезон, скидки, реклама;
▪️ Добавить лаги и скользящие средние;
▪️ Попробовать: Prophet, XGBoost, ARIMA.

Данные можно взять на Kaggle: https://www.kaggle.com/c/store-sales-time-series-forecasting

Готовы попробовать? Делитесь своими результатами в комментариях.

Все посты этой рубрики можно посмотреть по тэгу: #петпроект_MLinside
🔥12👍65
Многие начинающие ML-инженеры ищут «самую сильную модель» и гонятся за нейросетями и SOTA-результатами. Но в реальной работе всё устроено иначе: большинство бизнес-задач решаются двумя базовыми моделями – линейной/логистической регрессией и градиентным бустингом.

У нас вышло видео, где Александр Дубейковский разбирает, почему именно эти 2 модели покрывают основную часть практических кейсов и зачем джуну уметь работать с ними глубоко, а не поверхностно знать всё подряд.

Видео уже вышло на всех наших площадках, если ещё не смотрели - собрали для вас ссылки для удобства:
YouTube
ВК
Дзен
🤓186👍3🔥2
В этом коде есть ошибка?

Наша регулярная рубрика Code Detective снова тут. Как обычно, мы публикуем фрагмент кода, а вы смотрите, что с ним не так. Но ошибки может и не быть. Так что если хотите прокачать навык чтения и анализа чужого кода, а это крайне полезный навык в работе ML-инженера, рубрика вам пригодится.

Вот фрагмент кода:
import pandas as pd

df = pd.DataFrame({'category': ['A', 'B', 'C'], 'value': [1, 2, 3]})
categories = ['A', 'C']

# Хотим отфильтровать строки, где category в списке
filtered = df[df['category'] in categories]


Тут всё хорошо. Или нет? Есть какая-то ошибка? Если есть, напишите в комментариях:
1. Какую ошибку нашли;
2. Варианты её исправления.

Ответ мы опубликуем через пару дней, а посты этой рубрики можно посмотреть по хэштегу: #CodeDetective_MLinside
3
В этом коде есть ошибка?
Anonymous Poll
82%
Да
18%
Нет
MLinside - школа ML
В этом коде есть ошибка? Наша регулярная рубрика Code Detective снова тут. Как обычно, мы публикуем фрагмент кода, а вы смотрите, что с ним не так. Но ошибки может и не быть. Так что если хотите прокачать навык чтения и анализа чужого кода, а это крайне полезный…
А вот и ответ на пост. Да, в коде есть ошибка.
Объяснение:
df['category'] in categories – некорректно. Оператор in для Series проверяет наличие метки индекса, а не значений и это вызовет ValueError или ложный результат


Исправление:
filtered = df[df['category'].isin(categories)]


#CodeDetective_MLinside
Media is too big
VIEW IN TELEGRAM
Как спорт влияет на карьеру?

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

▪️Как спортивный опыт влияет на мышление, дисциплину и принятие решений?
▪️Почему регулярные тренировки помогают справляться со стрессом, выгоранием и сложными управленческими задачами?
▪️И есть ли параллели между спортом высоких достижений и работой в бигтехе?

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

Плюс, в подкасте есть важный анонс. И если вы хотите попасть на курс ML System Design в числе первых, переходите в бота и оставляйте заявку: https://news.1rj.ru/str/ml_insideBot?start=ML-System-Design, количество мест на курсе будет ограничено, так что если хотите успеть, это ваш шанс.

Подкаст уже вышел на всех наших площадках, собрали для вас ссылки для удобства:
YouTube
ВК
Дзен
🔥105🏆4🤔1
Новый год уже совсем не за горами, и мы решили собрать список подарков, о которых мечтает любой ML-инженер. А какой из них вы бы выбрали для себя?
5