Maxim.ML - канал
857 subscribers
64 photos
6 videos
1 file
45 links
🟥 Machine Learning Team Lead
📢 Рассказываю о жизни в IT в целом и о machine learning в частности
🤖 Генератор контента для обучения AGI
✉️ лс тут: @Maxim_ML
Download Telegram
Channel created
Channel photo updated
Channel name was changed to «Maxim.ML - Канал»
Channel name was changed to «Maxim.ML - канал»
Всем привет! Если вы читаете это сообщение, значит вы один из самых первых подписчиков, или вам интересна моя первая публикация.

 Кто я
⚡️ ML Team Lead с 5+ лет опыта в big tech индустрии, вырос с джуна до тим лида и готов поделиться своим опытом.

 О чем будет этот канал
⚡️ Буду делать публикации о мире IT, технологиях, с уклоном в ML разработку и менеджмент ML проектов.

 Кому будет полезно
⚡️ ML/DS/DA/DE - кто вкатывается и кто уже вкатился, но хочет роста и развития.
⚡️ Искателям вдохновения в данных - тем, кто хочет видеть смыслы за цифрами.
2
Собираюсь с мыслями перед началом активностей на канале. Сейчас есть много идей для публикаций на ближайшие ~3 месяца.

Вот примерно о чем будут первые публикации:

🚀 Карьерные вопросы / Мысли о карьерном пути в ML

🪄 Индустриальный опыт написания кода - ML / Python

🐋 Deep Learning в индустрии, как и какие задачи решаем

🖼️ Визуализация и инфографика - как эффективно доносить информацию

📝 Советы новичкам по IT индустрии - на что обращать внимание, что изучать, что уже работает и что будет работать

💀 Мемы
🔥7
Maxim.ML - канал pinned «Всем привет! Если вы читаете это сообщение, значит вы один из самых первых подписчиков, или вам интересна моя первая публикация.  Кто я ⚡️ ML Team Lead с 5+ лет опыта в big tech индустрии, вырос с джуна до тим лида и готов поделиться своим опытом.  О чем…»
🚀 Всем data привет!

Хотите реальную историю из индустрии - как на моей практике случился модельный concept drift и как я его поборол 🥊?

Concept drift на практике случается сильно реже data drift. Он происходит, когда в существующей ML модели меняется целевая переменная, когда она переходит от известного статистического состояния в новое, ранее неизвестное, неучтенное.

Вот небольшая история про data driven подход в решении бизнес проблемы.
🔥11
Как новички в Data Science решают сложные задачи: результаты моих студентов в ML соревновании 📊

Какие подходы пробуют применять стажеры и джуны в Data Science соревнованиях с табличными данными? Я принёс инфографику моих студентов, которая иллюстрирует их работы в финальном соревновании курса 📈

🔍 Предыстория
В прошлом учебном году я вел блок занятий по Machine Learning на одном из курсов. Чтобы отработать навыки студентов, я запустил inclass соревнование. Студенты решали задачу бинарной классификации — для многих это был первый подобный опыт.

Почти все подходы студентов были связаны с алгоритмами градиентного бустинга. В топ 3 решений попали ансамбли, automl и catboost 🏆

Если вам понравилась визуализация, python код для ее воспроизведения доступен на моем GitHub. Сделать такую же инфографику проще, чем вы думаете!
🔥13
Как pet-проект может стать ключом к успеху в карьере

🚀 Всем data-привет! Задумывались ли вы, как небольшой проект, сделанный в свободное время, может забустить вашу карьеру? Я расскажу вам историю о том, как один мой pet-проект неожиданно выстрелил и стал незаменимым инструментом для всей моей команды.

Я начал создавать свой первый pet-проект в 2021 году, когда был джуном, стремясь освоить новые навыки. В то время я на полной инициативе написал Telegram-бота 🤖 — голосовой дневник, который сохранял голосовые сообщения пользователя в базу данных в формате текста (транскрибация аудио). Написание бота стало отличной возможностью изучить Docker 🐳 и MongoDB 🍃, а также это был первый опыт работы с API. Подробнее об этом можно прочитать в моей старой статье на habr.

По мере того как я продвигался по карьерной лестнице и получал образование в магистратуре, я решил углубиться в изучение python-библиотек. Мой новый опыт работы DS-ом в одном агрегаторе такси также позволил улучшить pet-проект Telegram-бота. Я научился создавать API-сервисы и поднимать web-приложения, благодаря чему удалось настроить мониторинг и визуализацию сохраненных текстовых данных 📊

На текущем месте работы мне нужно было отслеживать 5–9 различных метрик для каждой из 30 моих ML-моделей. Вместо использования стандартных инструментов, таких как Grafana или Tableau, я решил создать что-то своё, опираясь на уже имеющиеся наработки. И это сработало 🎉! Решение на базе моего pet-проекта оказалось максимально полезным и покрыло на 110% потребности команды в мониторинге бизнес и технических метрик ML-моделей 💪.

Сейчас у проекта есть вот такие ключевые особенности:

1. Простота отрисовки данных: достаточно отправить данные для мониторинга по простому API, и они тут же будут отрисованы на графиках в web-интерфейсе.
2. Гибкость визуализации: страницы с графиками легко кастомизируются, а для данных доступны различные варианты графиков благодаря библиотеке Plotly.
3. Популярный стек: в проекте используются FastAPI, Dash, Plotly и Docker — технологии, которые знакомы каждому Data Science специалисту.

Что делает этот проект особенным? Он автономен и работает без ошибок и остановки вот уже 15 месяцев (чему я даже удивлён, потому что uptime 15 месяцев для pet-проекта — это очень много ⏱️).

Каждый этап создания моего проекта был шагом вперёд: от бота с логированием в базу до сервиса, который собирает данные по API и визуализирует их. Если вы только начинаете, берите и создавайте pet-проекты. Вы никогда не знаете, какие навыки могут пригодиться в будущем. Сила вашего pet-проекта в том, что он может стать вашим карьерным бустом.

Если моя история вдохновила вас начать свой pet-проект, ставьте ⚡️. Если хотите увидеть топ-10 идей для ваших pet-проектов в области ML, ставьте 🔥, и я составлю список, который поможет вам сделать первый шаг. Помните, сила pet-проекта в том, что он может стать вашим ключом к успеху в карьере!
🔥196🗿1
Всем data-привет! 🚀

Мотивации пост. Посвящается всем начинающим специалистам, особенно в сфере Data Science.

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

Недавно я опубликовал лонгрид на habr, где более подробно поделился своими мыслями на эту тему. А для вас подготовил короткую авторскую выжимку – всё самое важное и ценное, без лишней воды.

Читай, вдохновляйся и помни: каждый специалист когда-то был начинающим. Главное – не останавливаться и двигаться вперед!

⬇️ ⬇️ ⬇️

На ошибках учатся, и это не просто слова. Учатся все, и люди, и алгоритмы. Вот топ 5 общих паттернов обработки ошибок и усвоению знаний между человеком и ML-алгоритмами:

1️⃣ «Fail fast» — быстро учитесь на ошибках, как байесовская оптимизация.
Быстрое тестирование гипотез и анализ неудач позволяют находить оптимальные пути к успеху. Ошибки становятся не преградой, а важным шагом на пути к цели.

2️⃣ Развивайте широкую экспертизу, как градиентный спуск.
Этот алгоритм «пробует» множество решений, прежде чем найти оптимальное. Развивая междисциплинарные навыки и широкий кругозор, вы сможете находить нестандартные, но эффективные подходы.

3️⃣ Измеряйте свои ошибки, как это делает линейная регрессия.
Регулярная оценка своих действий и их последствий помогает расставлять приоритеты и лучше понимать, как ваши усилия влияют на результаты.

4️⃣ Будьте упорны, как градиентный бустинг.
Этот алгоритм строит мощные модели, поэтапно исправляя ошибки и улучшая прогнозы. Аналогично, настойчивое изучение нового и поэтапная работа над своими слабостями помогут вам стать экспертом и достигать амбициозных целей.

 А про пятый пример предлагаю почитать на habr 🏃‍♂️ 🏃‍♂️ 🏃‍♂️ (https://habr.com/ru/companies/ru_mts/articles/867710/)
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥61
Наверняка у каждого на работе бывают моменты, когда нужно просто сесть и подождать чего-либо ☕️. Это может быть долгий запуск программы, долгий расчёт чего-либо, или просто неоптимальная работа не на вашей стороне, а на стороне коллеги, который сделал какой-то кривой процесс, который долго работает⌛️ .

Вот и у меня был один такой кейс, который удалось успешно решить. Он был связан с расчётом популярной метрики в машинном обучении в задаче классификации: ROC AUC. Ниже гайд, как можно оптимизировать и ваши расчеты тоже.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8
#пятничная_визуализация

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

(ссылки на крутые визуализации)
1️⃣ https://poloclub.github.io/transformer-explainer/
2️⃣ https://bbycroft.net/llm
3️⃣ https://playground.tensorflow.org/

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

Эта публикация - первая в своей серии, в новом году будет еще больше! Всех с наступающим Новым годом! 🎁

---

Здесь я визуализирую жизненный цикл ML модели. Про это понятие у меня есть отдельная публикация: (https://habr.com/ru/companies/citymobil/articles/572184/)

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

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.colors as mcolors


def foo_y(theta, k=0.5, s=1.5):
return - (theta**2 - s)**2 - k * theta


plt.rcParams["figure.facecolor"] = "#DBF1E4"
plt.rcParams["axes.facecolor"] = "#DBF1E4"
plt.rcParams['savefig.facecolor'] = "#DBF1E4"

custom_cmap = mcolors.LinearSegmentedColormap.from_list(
'my_cmap', ["#BA2A1D", "#62C361"]
)

theta_vals = np.linspace(-1., 2, 400)

coef_pairs = [
(0.1, 0.05),
(2, 0.05),
(0.2, 0.1),
(0.5, 0.9),
(1.1, 1.1),
(1.4, 1.5),
(2, 2),
]

plt.figure(figsize=(10, 5))
for idx, one_pair in enumerate(coef_pairs):
plt.plot(
theta_vals,
[foo_y(i, *one_pair) for i in theta_vals]
, color=custom_cmap(idx / len(coef_pairs))
, linewidth=3
, label=f'модель {idx+1}'
)

plt.yticks(
ticks=np.linspace(-20, 1, 10)
, labels=np.round(np.linspace(0.6, 0.8, 10), 2)
)
plt.xticks(
ticks=theta_vals[:: 40]
, labels=[f'неделя {i+1}' for i in range(len(theta_vals[:: 40]))]
, rotation=25

)
plt.gca().set_frame_on(False)

plt.grid()
plt.ylabel('метрика ROC AUC', fontsize=12)
plt.title('стабильность модели', fontsize=15)
plt.legend()
plt.tight_layout()
plt.savefig(
'Downloads/stability_2.png',
dpi=150, format='png', bbox_inches='tight', pad_inches=0,
transparent=False
)
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥31