Никита хочет стать Сеньором
73 subscribers
5 photos
5 links
Всем ку, меня зовут Никита!
Здесь я буду делиться о своём пути от стажера до сеньора в области Data Science! 🚀

Обо мне:
💼 Работаю MLE в Infosystems Jet
🧠 1 курс магистратуры ВШЭ ФКН "Современные компьютерные науки"
🚀 1 курс ШАД
Download Telegram
Добро пожаловать в мой бложик, меня зовут Никита!
Здесь я буду делиться о своем пути от стажера до сеньора-помидора в области Data Science! 🚀

Обо мне:
- На данный момент (07.09.2023) я работаю ML-engineer в Infosystems Jet
- Закончил бакалавриат в МАИ по специальности "Программная инженерия"
- Закончил магистратуру в РАНХиГС по программе "Финансы и технологии"
- Учусь на первом курсе в магистратуре ВШЭ ФКН по программе "Современные компьютерные науки"
- Учусь на первом курсе ШАД

Что вас ждет:
🧌 Увлекательные (нет) истории;
📊 Обзоры статей, научных публикаций и конференций;
🧠 Советы о том, как развить свои навыки, а также различные best practice;
🔍 Глубокие анализы кейсов и проектов.

Тэги для навигации:
#CV - комп. зрение
#MLOPS - млопс
#QUANT - анализ фин/крипто рынков
#CML - классическое мл
#STUDY - всё, что связано с учёбой/начинанием в чем-либо

P.S. Советы, рекомендации, а также моё "ИМХО" не будут претендовать на истину в последней инстанции!
P.S.S. По большей степени блог будет полезен скорее для меня (Никиты), для фиксирования своих успехов и неудач, но, надеюсь, что и Вам, мои будущие дорогие читатели, он принесёт пользу, всех обнял!💋
🧐Реализация простого pet-project

Привет, друзья, а вот и мой первый пост, сильно не ругайте!
В этом посте я постараюсь дать Вам пошаговую реализацию простого pet-project, который вы смогли бы добавить в своё резюме.

0️⃣ Выбор датасета
Для начала рекомендую выбрать простой, но в то же время интересный для вас датасет, который потенциально можно обернуть в сервис (чтобы потенциальный работодатель смог поиграться). Например, IrisData или HeartDisease, но можно выбрать и что-то другое, что ближе к вашей области интересов.

1️⃣ Структура проекта
В проекте используйте понятную структуру. Во-первых, это будет удобно в будущем, когда проект разрастется, а во-вторых, структурированный проект легче поддерживать и модифицировать. За основу рекомендую взять cookiecutter и по необходимости подстроить шаблон под себя.

Плюсы cookiecutter:

⏺️Создает стандартную структуру проектов, которая поддерживается сообществом.
⏺️Позволяет легко добавлять и модифицировать компоненты проекта.
⏺️Упрощает совместную работу и понимание проекта другими разработчиками.

2️⃣ Анализ данных
Делайте выводы по итогам анализа данных. Что увидели на графиках? Какие зависимости или аномалии обнаружили? Например:

⏺️Есть ли выбросы в данных?
⏺️Какие признаки наиболее важны для модели?
⏺️Есть ли необходимость в нормализации данных?

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

3️⃣ Комментарии, докстринги и линтеры
Не забывайте про докстринги, линтеры и комментарии в коде:

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

Комментировать каждую строчку кода не нужно, это перенагружает и создаёт больше неудобств, нежели удобств.

def load_data(path: str) -> pd.DataFrame:
"""
Загружает данные из указанного файла.

Args:
file_path (str): Путь к файлу с данными.

Returns:
pd.DataFrame: Загруженные данные.
"""
# Здесь логика загрузки данных
pass


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

5️⃣ Разделение этапов
Для каждого этапа работы вашего сервиса выделяйте отдельный .py файл: для препроцессинга, для обучения модели, для предсказаний и т.п.

Плюсы:
⏺️Улучшает модульность и структурированность кода.
⏺️Позволяет легко находить и модифицировать нужные части проекта.
⏺️Облегчает тестирование и отладку.

6️⃣ Оберните модель в сервис
После того как получите финальную версию модели, оберните её в сервис. Для первого своего проекта рекомендую использовать Streamlit.

Плюсы Streamlit, которые я вынес для себя после использования:
⏺️Прост в использовании и позволяет быстро создать веб-приложение.
⏺️Поддерживает визуализацию данных в реальном времени.
⏺️Интегрируется с основными библиотеками ML и Data Science.
⏺️Можно использовать в пресейловых задачах для демонстрации работы вашего алгоритма.

7️⃣ Развертывание сервиса с Docker
Разверните сервис при помощи Docker. Это обеспечит консистентность среды исполнения и упростит деплой.

8️⃣ Описание проекта в README
В заключении, сделайте описание вашего проекта в README. Это поможет потенциальным работодателям и другим разработчикам быстро понять суть вашего проекта и его ключевые аспекты.


_________________________________
📣 Ставьте реакции, делитесь в комментариях о том, что стоило бы добавить, и какие темы вы хотели бы видеть в следующих постах!
Please open Telegram to view this post
VIEW IN TELEGRAM
🛡MLSecOps: Почему, зачем и нафига?

И снова, добрый день ночь! Сейчас я хочу рассказать о концепции, которая в связи с ростом интереса к ML становится всё более актуальной, а именно о MLSecOps.⚡️

Что такое MLSecOps?

MLSecOps (Machine Learning Security Operations) — это комбинация методов из области DevOps, безопасности и машинного обучения. Не трудно догадаться, что основной целью MLSecOps является обеспечение безопасности моделей на всех этапах их жизненного цикла, начиная от разработки и обучения и заканчивая деплоем и эксплуатацией.

Зачем? Разве это так важно?

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

1️⃣ Данные - новая нефть💻
Как правило модели обучаются на больших объёмах данных и зачастую могут содержать конфиденциальную информацию, а потеря или компрометация этих данных может иметь катастрофические последствия, например, в сфере финансовых услуг утечка данных о торговле, используемых для обучения моделей, может позволить вашим конкурентам получить представление о торговых стратегиях, что нарушит рыночную целостность и конкурентоспособность бизнеса.📉

2️⃣ Атаки на модели💥
Наши недоброжелатели могут манипулировать входными данными (атаки на входы) или изменять поведение моделей (атаки на модели), чтобы они делали неправильные предсказания или получали ту информацию, которая, к примеру, наша LLM не должна выдавать.

3️⃣ Приватность данных🤫
Для соблюдения, например, федерального закона (ФЗ) «О персональных данных» в России или аналога, действующего в ЕС — General Data Protection Regulation (GDPR) и других нормативных актов требует применения надежных мер безопасности.

База в MLSecOps

1️⃣ Безопасность данных📊
⏺️Шифрование данных при хранении и передаче.
⏺️Анонимизация данных.

2️⃣ Безопасность моделей🛡
⏺️Защита моделей от атак и подмены.
⏺️Использование методов противодействия атакам (например, дифференциальная приватность).

3️⃣ Мониторинг и аудит👮‍♀️
⏺️Постоянный мониторинг моделей на предмет аномалий, например, при помощи Grafana можно эффективно отслеживать data drift и data concept.
⏺️Аудит изменений и действий с моделями.

4️⃣ DevSecOps практики⚙️
⏺️Интеграция безопасности на всех этапах разработки и развертывания.
⏺️Автоматизация процессов безопасности.

Инструменты для MLSecOps

Ниже я указал некоторые из наиболее часто используемых инструментов:

⏺️Prometheus: Система мониторинга и оповещения, которую можно использовать для отслеживания производительности, также работоспособности моделей.
⏺️Kubernetes: Система оркестрации контейнеров может использоваться для управления масштабируемыми приложениями.
⏺️DiffPrivLib: Библиотека от IBM для реализации дифференциальной приватности в ML-моделях.
⏺️MLflow: Сервис для управления жизненным циклом модели, который поддерживает экспериментирование, воспроизводимость и деплой.

🔗 Полезные ссылки и материалы:

⏺️MLSecOps: Ensuring Security and Trust in Machine Learning Systems
⏺️Snowflake AI Security Framework
⏺️OWASP: LLM AI Cybersecurity & Governance Checklist

_________________________________
📣 Если было интересно — ставьте реакции и делитесь своим мнением в комментариях, а также стоит ли написать статью по этой теме на Хабре?
Please open Telegram to view this post
VIEW IN TELEGRAM
😊😎
Please open Telegram to view this post
VIEW IN TELEGRAM
За «отлично» по машинному обучению в ШАД подогнали трехтомник ГПиМРМ
🔥Был сегодня на конференции Turbo ML Conf.

В ближайшее время постараюсь (реально постараюсь) выложить пост об интересных докладах и, в целом, о моём впечатлении от этой конфы.
Please open Telegram to view this post
VIEW IN TELEGRAM
❗️Вышла моя первая статья на Хабре об MLSecOps, можете ознакомиться:

https://habr.com/ru/companies/jetinfosystems/articles/832288/
Please open Telegram to view this post
VIEW IN TELEGRAM
Всем добрейшего вечерочка, потпищики!
Решил написать пост затравочку перед большой статьей на хабре по своей магистерской диссертации на тему "Машинное обучение в анализе криптовалютных рынков", а именно о Triple Barrier Method Лопеса Де Прадо.

🚧 Что такое метод тройного барьера?
Представьте себе, что вы открыли позицию на рынке и хотите определить, когда ее закрыть. Метод тройного барьера использует три "барьера" для принятия решения:
⏺️Верхний барьер (Take Profit) — уровень прибыли, при достижении которого мы фиксируем доход.
⏺️Нижний барьер (Stop Loss) — уровень убытка, при достижении которого мы ограничиваем потери.
⏺️Временной барьер — максимальное время удержания позиции.

↗️ Как это работает?
Когда мы открываем позицию в момент времени 𝑡0 по цене 𝑃_𝑡0 , мы устанавливаем:
⏺️Верхний барьер: 𝑃_𝑢𝑝 = 𝑃_𝑡0 × (1 + 𝛿)
⏺️Нижний барьер: 𝑃_𝑑𝑜𝑤𝑛 = 𝑃_𝑡0 × (1 − 𝛿)
Где 𝛿 — это заданный процент изменения цены (например, 5%).

Пример:
⏺️Цена открытия позиции 𝑃_𝑡0 = $100
⏺️𝛿 = 5% или 0.05
⏺️Верхний барьер: 𝑃_𝑢𝑝 = $100 × (1 + 0.05) = $105
⏺️Нижний барьер: 𝑃_𝑑𝑜𝑤𝑛 = $100 × (1 − 0.05) = $95

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

📌 Маркировка данных
Теперь, как мы маркируем наши данные в зависимости от того, какой барьер был достигнут первым:
⏺️Если цена достигла верхнего барьера 𝑃_𝑢𝑝 до 𝑡_max, то маркируем как +1 (прибыльная сделка)
⏺️Если цена достигла нижнего барьера 𝑃_𝑑𝑜𝑤𝑛 до 𝑡_max, то маркируем как -1 (убыточная сделка)
⏺️Если истекло время 𝑡_max, а ни один барьер не достигнут, то маркируем как 0 (нейтрально)

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

📎Полезные ссылки:
Книга Маркоса Лопеса де Прадо "Advances in Financial Machine Learning" — книга для тех, кто хочет погрузиться в тему поглубже.

____________________________________________________________
Если было интересно — накидайте эщкере в коммы🤙

#QUANT
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Это для вас, моложежь.

Заметил, что вы предыдущий кружок не оценили, на этот хоть скиньте парочку огонечков (можно и звездочек, не обижусь).

Не подведите.