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, которые можно решать вместе с нами.

Вторая задача: прогнозирование оттока клиентов

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

Как это можно сделать:
▪️ Использовать признаки: время в сервисе, частота операций, обращения в поддержку, возраст
▪️ Учитывать дисбаланс классов используя F1, ROC-AUC
▪️ Попробовать: Logistic Regression, Random Forest, CatBoost
▪️ Добавить важность признаков для объяснения бизнесу


Данные можно взять на Kaggle: https://www.kaggle.com/datasets/blastchar/telco-customer-churn. Эта задачка похожа на то, что нужно будет делать ML-инженеру: банки, страховые компании и маркетплейсы решают подобные кейсы каждый день. Сделав эту задачку, вы сможете показать, что умеете мыслить как ML-специалист и писать работающий код.

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

Все посты этой рубрики можно посмотреть по тэгу: #петпроект_MLinside
17
Хотите заглянуть внутрь мира машинного обучения и понять, из чего складываются навыки ML-специалистов?

Наш демо-курс «База ML» как раз для этого. Попробуйте обучение без риска и вложений.

В демо-курсе вы найдете вводные уроки по ключевым темам:
▪️ математический анализ и линейная алгебра в ML;
▪️ основы программирования на Python;
▪️ линейные модели и нейронные сети;
▪️ метрики и практика их применения.

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

Попробуйте демо-курс бесплатно прямо сейчас: https://stepik.org/course/218409
7
Помогите нам прокачать демо-курс «База ML»

Мы всегда работаем над повышением качества нашего обучения. Обратная связь студентов помогает нам улучшать как сами курсы, так и весь контент, который мы готовим для сообщества MLinside.

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

Чтобы поддержать проект, оставьте отзыв прямо на платформе Stepik: https://stepik.org/course/218409/reviews. Для нас это очень ценно, а для будущих студентов станет ориентиром, стоит ли попробовать курс.

А если вы пока только думаете, демо курс «База ML» доступен бесплатно здесь: https://stepik.org/course/218409

Спасибо всем, кто делится впечатлениями. Именно за счёт этой обратной связи мы делаем курс сильнее.
11
От этого кровь стынет в жилах

Да, мы решили не проходить мимо хэллуина и собрали несколько по-настоящему жутких вещей. А чего боитесь вы?
😁377🔥2
Продолжаем нашу рубрику Code Detective. Она для тех, кто хочет прокачать навык чтения и анализа чужого кода – крайне полезный навык в работе ML-инженера.

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

df = pd.DataFrame({'A': [1, 2, None], 'B': [4, None, 6]})
df.fillna(0).dropna()
print(df)

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

Ответ мы опубликуем завтра, а посты этой рубрики можно посмотреть по хэштегу: #CodeDetective_MLinside
11
Как и обещали, вот ответ на вчерашний пост. Да, в коде есть ошибка.

Объяснение:
fillna(0) возвращает DataFrame, но результат не сохраняется
dropna() вызывается на результате fillna, но тоже не сохраняется
Исходный df не изменяется, так как inplace=False по умолчанию

Исправление:
df = df.fillna(0).dropna()
Или
df.fillna(0, inplace=True)
df.dropna(inplace=True)

#CodeDetective_MLinside
9
Что реально нужно из математики для старта в ML

Мы часто общаемся с новичками в ML. С теми, кто хочет пойти на курс «База ML» и теми, кто уже его проходит. И, пожалуй, самое частое опасение у всех, это математика. Многим кажется, что всё слишком сложно, и лучше не лезть. А зря. Для старта в ML нужно разобраться в нескольких концепциях, а остальное можно догнать потом, с ростом вашего уровня.

▪️Линейная алгебра
Во-первых, векторы и матрицы. Вы должны понимать, что это такое и какие базовые операции с ними можно делать. Это основа, так как большинство моделей ML можно выразить в матричном виде.
Во-вторых, это умножение матриц и это ключевая операция. Вся работа нейронных сетей это, по сути, последовательное перемножение матриц с весами.
Ну и в-третьих, собственные векторы и собственные значения. Эти концепции важны для методов уменьшения размерности, таких как PCA, которые помогают упростить данные без потери важной информации.

▪️Математический анализ
Первое, это производные. Вы должны понимать ее основной смысл – скорость изменения функции.
Второе, это градиент. Это вектор из частных производных, который всегда указывает в сторону самого быстрого роста функции. Чтобы минимизировать ошибку, мы движемся в обратную сторону. Этот метод называется градиентный спуск.
Третье, это различные функции потерь и понимание их свойств. Это функции, которые показывают, насколько сильно наша модель ошибается. И вам нужно понимать несколько основных и совсем несложных фактов про эти функции.

▪️Теория вероятностей и статистика
Во-первых, базовые понятия. Средние значения, медиана, дисперсия, стандартное отклонение – это ваши лучшие друзья. Это основа для анализа и подготовки любых данных.
Во-вторых, это распределение. Понимать, что такое нормальное, биномиальное и равномерное распределение.
В-третьих, АБ-тестирование. Этот инструмент позволяет специалисту понять, какой выигрыш бизнес получает после внедрения ML-модели. И это неотъемлемая часть многих задач в области Data Science.

А чтобы вы могли проверить себя и понять, где вы уже сильны, а что стоит добить, мы собрали мини-опрос ниже. Там всего 3 коротких вопроса, справитесь?
16🔥3
Ситуационная задача - “Бизнес просит срочно!”

Представьте, что вы работаете в продуктовой ML-команде. Продакт прилетает к вам с горящими глазами и говорит:
Нам срочно нужно предсказать, кто из клиентов уйдёт, прямо к пятнице, чтобы отправить им пуши. Время – два дня. Ты же сможешь?
5👍1🔥1
Главная боль собеседований

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

Шаг 1. Бизнес-цель
Вопросы: что решаем, кто пользователь, как выглядит успех для бизнеса.
Что получаем на выходе: список бизнес-метрик и целевых эффектов.

Шаг 2. Данные
Вопросы: какой таргет, есть ли дисбаланс, утечки, сдвиги во времени, хватит ли объёма и качества.
Что получаем на выходе: риски и план подготовки данных.

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

Шаг 4. Метрика и порог
Вопросы: стоимость ошибок I и II рода, что важнее здесь Precision или Recall, нужна ли рабочая точка, PR-AUC или ROC-AUC, есть ли смысл в cost-sensitive подходе.
Что получаем на выходе: основная метрика плюс рабочий порог и вторичные метрики.

Шаг 5. Валидация и онлайн-проверка
Вопросы: корректная разбивка и контроль сдвигов, guardrails, дизайн A/B и окно измерения эффекта.
Что получаем на выходе: план оффлайн-валидации, A/B и мониторинга в проде.

Сохраняйте пост в закладки и возвращайтесь к этому фрейму перед собесом.
23👍5
Как не потеряться на Kaggle: пошаговый гайд для новичков

Если вы только начинаете изучать машинное обучение, Kaggle может показаться чем-то вроде закрытого клуба. Но на самом деле, это лучшая площадка, чтобы перейти от теории к практике и понять, как всё работает.

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

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

Изучите раздел Datasets. Найдите темы, которые вам интересны: спорт, экономика, медицина и т.д. (проверить, стоит ли добавить больше информации)

Посмотрите Notebooks. Это примеры решений других участников. Можно обратить внимание на то, как они пишут код, какие модели выбирают.

Выберите первое соревнование. Лучше начать с чего-нибудь попроще. Самый популярный вариант для новичков, это “Titanic: Machine Learning from Disaster”.

Сделайте свой первый ноутбук. Даже если просто повторять чужое решение, это уже вам поможет.

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

Добавьте результат в портфолио. Это очень поможет потом на собеседованиях.

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


Ну и помните, что каждый ноутбук делает вас сильнее в аналитике, коде и понимании ML в целом.
20🔥3👍2
Возвращаемся с нашей регулярной рубрикой Code Detective

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

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

data = pd.DataFrame({'value': [10, 15, 20, 25, 30]})
filtered = data[data['value'] > 20]

for i in range(len(filtered)):
print(f"Элемент {i}: {filtered['value'][i]}")


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

Ответ мы опубликуем через пару дней, а посты этой рубрики можно посмотреть по хэштегу: #CodeDetective_MLinside
🔥5👍3
MLinside - школа ML
Возвращаемся с нашей регулярной рубрикой Code Detective Если хотите прокачать навык чтения и анализа чужого кода, а это крайне полезный навык в работе ML-инженера, рубрика вам пригодится. Вот фрагмент кода: import pandas as pd data = pd.DataFrame({'value':…
Как и обещали, вот ответ на пост. Да, в коде есть ошибка.

Объяснение:
После фильтрации у элементов датафрейма остаются те же индексы, в этом примере это 3 и 4, а в цикле i принимает значения 0 и 1


Исправление:
for idx, row in filtered.iterrows():
print(f"Элемент {idx}: {row['value']}")
Или
for i in range(len(filtered)):
print(f"Элемент {i}: {filtered['value'].values[i]}")


#CodeDetective_MLinside
7👍4