Учебный курс по Data Science (ML, AI)
MLOps, или DevOps для машинного обучения, позволяет специалистам по обработке данных и ИТ-специалистам сотрудничать и ускорять разработку и развертывание моделей за счет мониторинга, проверки и управления моделями машинного обучения.
Мы внедряем автоматизацию принятия решений в широкий спектр приложений, и это создает множество технических проблем, возникающих при создании и развертывании систем на основе машинного обучения.
Чтобы понять MLOps, мы должны сначала понять жизненный цикл систем ML, в котором участвуют несколько разных команд data-driven организации.
- Data Engineering — сбор и подготовка данных.
- Data Science — проектирование решений машинного обучения и разработка моделей.
-
IT или DevOps— полная настройка развертывания, мониторинг вместе с разработчиками.
- Пример решения задачи по машинному обучению на Python
- Топ-5 инструментов для разметки данных в 2021 году
- Practitioners guide to MLOps: A framework for continuous delivery and automation of machine learning
Методы Data Science
(документация по применению в системах BI - в разделе "скачать")
Алгоритмы и модели машинного обучения, реализованные с помощью языка программирования Python.
- Допущения алгоритмов машинного обучения
- Лучшие подходы к анализу настроений
- Алгоритмы многоклассовой классификации
- Алгоритмы двоичной классификации
- Алгоритмы кластеризации
- Архитектура LeNet-5
- Введение и подходы к созданию систем рекомендаций
- Примеры использования алгоритмов машинного обучения
- Кластеризация сдвига среднего
- Мини-пакетная кластеризация K-средних
- Грамматическая разметка частей речи
- Метрики оценки эффективности
- Полиномиальный наивный байесовский метод
- Бернулли Наивный Байес
- Агломеративная кластеризация
- VisualKeras для визуализации нейронной сети
- Стохастический градиентный спуск
- Объясненная дисперсия
- Оценка F-Beta
- Классификационный отчет
- Пассивно-агрессивная регрессия
- Оценка R2
- Ленивый прогноз
- FLAML
- Алгоритм t-SNE
- Учебное пособие по AutoKeras
- Смещение и отклонение
- Персептрон
- Многослойный персептрон
- Методы балансировки классов
- «Один ко многим» и «один к одному» в машинном обучении
- Полиномиальная регрессия
- Кластеризация BIRCH в машинном обучении
- Независимый компонентный анализ
- Ядро PCA
- Редкий PCA
- Факторизация неотрицательных матриц
- Учебник по нейронным сетям
- PyCaret
- Руководство по Scikit-learn
- Учебное пособие по NLTK
- Учебное пособие по TextBlob
- Учебное пособие по Streamlit
- Кластеризация DBSCAN
- Наивный Байес
- Пассивно-агрессивный классификатор
- Повышение градиента (используется при реализации алгоритма Instagram)
- Логистическая регрессия
- Линейная регрессия
- Кластеризация K-средних
- Уменьшение размерности
- Анализ главных компонентов
- Автоматический EDA
- Масштабирование функций
- Алгоритм Априори с использованием Python
- K-ближайший сосед
- CatBoost
- SMOTE
- Проверка гипотез (обычно используется при обнаружении выбросов)
- Контентная фильтрация
- Совместная фильтрация
- Косинусное подобие
- Tf-Idf векторизация
- Перекрестная проверка
- Матрица неточностей в машинном обучении
- Алгоритмы поиска на графах с Python
- StandardScaler в машинном обучении
- SARIMA
- ARIMA
- Кривая Auc и ROC
- Алгоритм XGBoost
- BERT в машинном обучении
- NeuralProphet
- Алгоритм AdaBoost
- Алгоритм случайного леса
- Алгоритм полиномиальной регрессии
- Алгоритм градиентного спуска
- Многообразное обучение
- Деревья решений
- Руководство по SVM (Support-Vector Machine или Опорно-векторная машина) с использованием Python
- Нейронные сети
- FastAI
- LightGBM
- Pyforest в Python
- Модели машинного обучения, которые должен знать каждый специалист по даннымт
Все вышеперечисленные алгоритмы описаны с использованием языка программирования Python. Это – самые распространенные и часто используемые алгоритмы машинного обучения.
Услуги в области Data Science, ML от BI Consult
- Прогнозная аналитика: предотвращение мошенничества, прогнозирование поведения клиентов, выявление неисправностей и отклонений от норм, прогнозирование времени доставки, объема спроса и др.
- Управление опытом клиента, системы персонализированных рекомендаций, повышение точности таргетирования маркетинговых кампаний
- Распознавание объектов, анализ видеопотока, автоматизированный визуальный контроль с использованием технологий компьютерного зрения
- Поиск информации в каталогах и хранилищах данных
- Автоматизированная классификация и обработка документов
- Анализ эмоциональной окраски сообщений в соцсетях, на форумах, в СМИ
- Обработка речи, речевое управление, применение чат-ботов
Серия постов @boris_again о минимальных навыков software engineering для аналитики данных и ML. От командной строки и докера до стиля кода
# Минимальные знания Software Engineering для Data Scientist 1/3
## Git
Интерактивный туториал
Краткий курс по Git от Github
Git (или другая VCS) каждый день использует любой адекватный программист. Стоит инвестировать время не только в заучивание трех команд, а в понимание принципа работы. К счастью основы изучаются за пару вечеров, а большего и не надо. DS должно быть не сложно понять идею, ведь про графы и деревья вы наверное слышали. Только не используйте никаких GUI клиентов для Git по крайней мере пока учитесь! Например надо понимать разницу между git add и git commit, но GUI клиенты часто заменяют их одной кнопкой.
## Linux
The Linux command line for beginners
Если вы работаете из под Windows, то как можно быстрее бросайте это дело (если у вас уже Mac или Linux, то этот пункт можете пропустить). Считайте, что Python разработки под Windows не бывает. Не умея пользоваться линуксом вы беспомощны. Как слезть с иглы: поставьте себе Ubuntu и работайте только из под нее, а Windows оставьте для игр. Я бы не советовал пользоваться WSL, потому что это полумера, но и это подойдет как крайний вариант. Главное, чтобы вас не пугали фразы уровня “зайди на VPS по ssh по ключу, прокинь симлинк для этой штуки.” Иначе вы в большинстве команд будете тем парнем, которому надо постоянно помогать.
## Библиотеки и зависимости в Python
Python virtual environments: A Primer
Обязательное чтение про менеджмент библиотек и зависимостей в Python. Вы должны быть способны разрабатывать несколько DS проектов с конфликтующими зависимостями (один требует pytorch v1.12, второй v1.4) без использования Anaconda. Так не обязательно делать, но вы должны быть способны. Для вас не должно быть проблемой сделать так, чтобы проект запускался с одинаковыми версиями библиотек у вас, у вашего коллеги и на сервере.
## Практический Python
The Hitchiker’s Guide to Python
Чтение о практическом применении Python. Бесплатная, короткая и по делу написанная книга.
Особенное внимание:
Глава про структуру кода
Содержит очень важную информацию про модули и пакеты в Python (так же см. официальную документацию).
Для закрепления: взять любой свой проект и красиво разбить его на модули.
Глава про стиль кода
Стиль кода это недооцененная (особенно среди DS), но очень важная вещь. От умения писать код зависит, будут ваши коллеги плевать вам в чай или нет. Умение писать читабельный код сэкономит вам уйму времени даже если вы только прототипируете модели и вам никогда не придется поддерживать проекты. Решая Kaggle вы бы скорее хотели искать ошибки в коде или пробовать новые варианты решения?
Прочитали один раз - пишете код лучше, чем большинство DS. Бесплатное преимущество!
Для закрепления: написать любую программу максимально красиво. Достаточно даже задачи с Leetcode. Хороший критерий успеха: вы отложили код на две недели, вернулись и все еще понимаете, что в нем происходит.
Глава про тесты и гайд для pytest
Способность писать тесты отличает дилетанта от программиста. Знание о том, как писать тесты, навсегда меняет подход к написанию любого кода: просто понимаешь, какой код более вероятно содержит скрытые косяки. Минус: паранойя навсегда, потому узнаешь, что весь код без покрытия автотестами сломан. Это очень важно даже если вы только учить модели. Если ваш код невозможно затащить в прод, то вы беспомощны и возможно даже бесполезны.
Для закрепления: покрыть тестами свою программу. Бонусные очки, если вы покрываете тестами ML решение, потому что это довольно нетривиальная задача.
## Читаем код
Узнав про то, что такое модульный и читабельный код, изучаем его экземпляры в дикой природе. Просто читаем, вникаем что и откуда берется, задаем себе вопросы: “почему здесь так?”, “что это такое?”, “зачем это здесь?” Это симуляция ситуации, когда вам нужно работать с кодом коллеги. Только в реальной жизни код не будет хорошим.
Советую исходный код этой небольшой библиотеки для табличек: https://github.com/jazzband/tablib
Более продвинутый уровень, если в библиотеке выше уже все понятно: https://github.com/pallets/flask
# Минимальные знания Software Engineering для Data Scientist 2/3
## Память в Python
Читаем как Python работает с памятью, чтобы никогда больше не потеть на вопросе про GIL. По части DS позволяет лучше утилизировать железо, не делать глупостей вроде лишних копирований гигантских массивов и лучше интуитивно понимать работу кода.
Статья раз
Статья два
## HTTP
HTTP это то, на чем держится веб: когда вы открываете сайты, скачиваете датасеты, пользуетесь API. Инференс и деплой ML моделей почти всегда связан с HTTP.
Изучаем теорию:
Статья попроще
Статья подлиннее
Проходим туториал: Python’s Requests Library Guide
## Sklearn Pipelines
Sklearn Pipelines User Guide
С одной стороны без Sklearn в ML практически никуда и Pipeline это большая его киллер-фича, которая экономит уйму времени, позволяет избежать ошибок и упрощает перенос кода в продакшн. Но более важно то, что парадигма пайплайнов, то есть обработки данных через серию последовательных шагов, повсеместно встречается в ML экосистеме. Пайплайны в Sklearn это отличное введение. Познакомившись с ними будет гораздо проще осваивать популярные ML инструменты.
Для закрепления: берем ML задачу, которую решали (хоть Титаник на Kaggle) и переписываем с использованием Pipeline.
## SQL
https://sqlbolt.com/ - Проходим туториал вплоть до 12 урока.
Без SQL никуда. Чаще всего данные для моделей появляются когда мы заклинаем базы данных языком SQL.
Нас интересует все, касается запросов к существующим таблицам. Для минимального пути можно опустить все что касается вставок и создания таблиц.
Если вы хотите стать настоящим самураем SQL и быть круче большинства аналитиков, то надо взобраться на эту гору: www.sql-ex.ru
## Docker
Официальный туториал по Docker
Docker становится таким же необходимым, как Git. Позволяет паковать любой код в контейнеры, которые ведут себя как виртуальные машины, но делают это быстро. На практике это означает, что можно очень быстро разворачивать и сворачивать целые экосистемы прямо на своем ноуте. Хочешь базу данных: пара консольных команд и получаешь контейнер с базой данных. Хочешь Spark: пара команд и у тебя есть Spark. Хочешь, чтобы все это работало в продакшне так, как работает на твоем ноутбуке: легко, главное выполни на сервере ту же самую пару команд.
Для закрепления: берем любую свою программу (бонус очки: берем ML задачу из пункта про Pipeline) и делаем так, чтобы она запускалась в контейнере. Еще лучше если у вас два контейнера и один обращается к другому. Например в одном контейнере PostgreSQL с парой табличек, а в другом код, который делает запросы к базе данных.
# Минимальные знания Software Engineering для Data Scientist 2/3
## Память в Python
Читаем как Python работает с памятью, чтобы никогда больше не потеть на вопросе про GIL. По части DS позволяет лучше утилизировать железо, не делать глупостей вроде лишних копирований гигантских массивов и лучше интуитивно понимать работу кода.
Статья раз
Статья два
## HTTP
HTTP это то, на чем держится веб: когда вы открываете сайты, скачиваете датасеты, пользуетесь API. Инференс и деплой ML моделей почти всегда связан с HTTP.
Изучаем теорию:
Статья попроще
Статья подлиннее
Проходим туториал: Python’s Requests Library Guide
## Sklearn Pipelines
Sklearn Pipelines User Guide
С одной стороны без Sklearn в ML практически никуда и Pipeline это большая его киллер-фича, которая экономит уйму времени, позволяет избежать ошибок и упрощает перенос кода в продакшн. Но более важно то, что парадигма пайплайнов, то есть обработки данных через серию последовательных шагов, повсеместно встречается в ML экосистеме. Пайплайны в Sklearn это отличное введение. Познакомившись с ними будет гораздо проще осваивать популярные ML инструменты.
Для закрепления: берем ML задачу, которую решали (хоть Титаник на Kaggle) и переписываем с использованием Pipeline.
## SQL
https://sqlbolt.com/ - Проходим туториал вплоть до 12 урока.
Без SQL никуда. Чаще всего данные для моделей появляются когда мы заклинаем базы данных языком SQL.
Нас интересует все, касается запросов к существующим таблицам. Для минимального пути можно опустить все что касается вставок и создания таблиц.
Если вы хотите стать настоящим самураем SQL и быть круче большинства аналитиков, то надо взобраться на эту гору: www.sql-ex.ru
## Docker
Официальный туториал по Docker
Docker становится таким же необходимым, как Git. Позволяет паковать любой код в контейнеры, которые ведут себя как виртуальные машины, но делают это быстро. На практике это означает, что можно очень быстро разворачивать и сворачивать целые экосистемы прямо на своем ноуте. Хочешь базу данных: пара консольных команд и получаешь контейнер с базой данных. Хочешь Spark: пара команд и у тебя есть Spark. Хочешь, чтобы все это работало в продакшне так, как работает на твоем ноутбуке: легко, главное выполни на сервере ту же самую пару команд.
Для закрепления: берем любую свою программу (бонус очки: берем ML задачу из пункта про Pipeline) и делаем так, чтобы она запускалась в контейнере. Еще лучше если у вас два контейнера и один обращается к другому. Например в одном контейнере PostgreSQL с парой табличек, а в другом код, который делает запросы к базе данных.
Очень интересный ресурс в копилку полезностей: The latest in Machine Learning | Papers With Code
Миссия Papers with Code — создать бесплатный и открытый ресурс с документами по машинному обучению, кодом, наборами данных и методами и оценочными таблицами.
https://paperswithcode.com/sota
По сути это библиотека всего, что связано с машинным обучением, со ссылками на описания подходов и методов, репозитории с исходным кодом и тд.
Например, вот тут находится сборник почти всех известных методов и подходов в машинном обучении: https://paperswithcode.com/methods
А доступна библиотека 6805 датасетов: https://paperswithcode.com/datasets
Так же у ребят есть slack, git hub и другие информационные ресурсы.
Как начать составление дорожной карты машинного обучения?
Вот общая дорожная карта для изучения машинного обучения:
1. Изучите основы программирования: Начните с изучения основ программирования, таких как типы данных, переменные, операторы, управляющие структуры и функции. Вы можете выбрать любой язык программирования, который вам больше нравится, но Python является популярным выбором для машинного обучения.
2. Изучите основы статистики и линейной алгебры: Машинное обучение в значительной степени опирается на статистику и концепции линейной алгебры, такие как вероятность, среднее значение, дисперсия, корреляция, матрицы, векторы и линейные преобразования. Очень важно иметь прочную основу для изучения этих понятий.
3. Изучите основы машинного обучения: Начните с изучения основ машинного обучения, таких как контролируемое и неконтролируемое обучение, классификация, регрессия, кластеризация и уменьшение размерности. Для начала можно использовать онлайн-курсы или книги.
4. Реализация алгоритмов машинного обучения: Практикуйтесь в реализации алгоритмов машинного обучения, таких как линейная регрессия, логистическая регрессия, деревья решений, случайные леса, K-средние и нейронные сети. Для реализации этих алгоритмов можно использовать такие библиотеки, как scikit-learn или TensorFlow.
5. Практика на реальных наборах данных: Практикуйтесь в применении алгоритмов машинного обучения на реальных наборах данных, таких как набор данных по радужной оболочке глаза, набор данных "Титаник" или набор данных MNIST. Вы можете найти эти наборы данных в таких онлайн-репозиториях, как Kaggle или UCI Machine Learning Repository.
6. Выберите специализацию: Машинное обучение имеет различные специализации, такие как обработка естественного языка, компьютерное зрение, обучение с подкреплением и глубокое обучение. Выберите специализацию, которая вам интересна, и погрузитесь в нее глубже.
7. Создавайте проекты: Создавайте проекты, демонстрирующие ваши навыки машинного обучения, например, инструмент для анализа настроений, рекомендательную систему или классификатор изображений. Для демонстрации своих проектов вы можете использовать онлайн-платформы, такие как GitHub.
8. Будьте в курсе последних событий: Машинное обучение - это быстро развивающаяся область, поэтому важно быть в курсе последних исследований, тенденций и инструментов. Вы можете читать научные статьи, посещать конференции или присоединяться к онлайн-сообществам, чтобы оставаться в курсе событий.
Помните, что приведенная выше дорожная карта - это общее руководство, и вы можете адаптировать ее к своим целям и предпочтениям. Изучение машинного обучения требует времени, преданности и практики, но это может быть полезным и увлекательным путешествием.
Что такое ML System Design Doc
ML System Design документ - это по сути сводный план по построению системы машинного обучения для решения конкретного запроса бизнеса в вашей компании. Его стоит применять на этапе дизайна вашей системы, чтобы в итоге ваше решение было полезным для бизнеса, а именно: могло быть внедрено, работало после внедрения и приносило реальную пользу.
https://github.com/torchme/PostFinder/blob/main/docs/designdoc.md
Что такое датасет?
Одной из ключевых составляющих машинного обучения являются датасеты — наборы данных. «Системный Блокъ» рассказывает, какие датасеты используются для обучения моделей и где их найти.
Кратко: о чем статья?
Датасет (англ. dataset), или выборка, — это структурированный набор данных, который используется для обучения и тестирования моделей машинного обучения. С помощью датасетов модели «учатся» на примерах, чтобы потом применять полученные знания для решения реальных задач.
Датасет может состоять из данных разных типов (например, текстов, изображений, аудио- или видеоматериалов), а также разметки. Она опциональна и является дополнительной информацией для описания и классификации данных. Например, датасет ImageNet содержит 14 млн изображений, каждое сопровождается меткой класса (например, указана порода собаки или название растения на фото).
Хороший датасет — репрезентативный, то есть точный и полный, поэтому при его формировании важно учитывать разнообразие, количество и качество данных. Например, в случае изображений важны разные погодные условия и освещение, для любых данных нужно проверять их достоверность и соответствие поставленной задаче.
Для обучения моделей датасеты обычно делят на три части: тренировочную (train), валидационную (validation) и тестовую (test). На первой модель обучается, с помощью второй можно реализовать валидацию разных параметров обучения и настроек модели, а третью используют для тестирования финальной версии модели. Датасеты можно собирать и делить самостоятельно, а можно найти уже готовые для обучения наборы данных на Kaggle, HuggingFace или UCI Machine Learning Repository, а также в разных исследовательских проектах.