Школа Больших Данных
566 subscribers
117 photos
711 links
Канал Школы Больших Данных https://www.bigdataschool.ru/ - обучение технологиям Big Data: разработка приложений и администрирование кластеров Hadoop, Kafka, Spark, NoSQL, Python, ML и DS.
Тел: +7 (495) 41-41-121
Контакты: @Bigdataschool_msk @olga_burykh
Download Telegram
#Python #MachineLearning
📎 В предыдущей статье мы говорили о том, как можно представлять разреженные матрицы. Сегодня рассмотрим их создание с примерами кода на Python с помощью библиотеки Scipy. Читайте в этой статье: как можно создать разреженные матрицы в Python, как создаются матрицы формата списка координат (COOrdinate list), сжатого хранения столбцом (Compresed Sparse Row) и строкой (Compresed Sparse Column).
@BigDataSchool_ru
https://python-school.ru/sparse-matrix-scipy/
#DataScience #MachineLearning #статьи
👨🏻‍💻Сегодня разберем, что такое глубокое обучение и почему MLOps очень важен для этих методов Machine Learning.
В чем особенности обучающих данных для моделей Deep Learning и зачем дополнять типовые MLOps-инструменты собственными разработками, избегая вредных антипаттернов.
@BigDataSchool_ru
https://www.bigdataschool.ru/blog/mlops-for-deep-learning-issues-and-antipatterns.html
#DataScience #MachineLearning #статьи
🤹🏻‍♀️Поскольку концепция MLOps стремится устранить разрывы между разработкой ML-модели и ее имплементацией в эффективный программный код, сегодня поговорим про важную идею программирования, связанную с синхронностью и асинхронностью вызовов.
Что такое асинхронное программирования, зачем это нужно в Machine Learning и какие Python-библиотеки поддерживают это.
@BigDataSchool_ru
https://www.bigdataschool.ru/blog/async-in-ml-with-python-library-asyncio.html
#DataScience #DevOps #MachineLearning
📜GraphQL для ML: возможности и примеры
GraphQL - язык запросов для API, который позволяет клиенту запрашивать только нужные данные, в отличие от традиционных REST API, которые возвращают весь набор данных ресурса, связанный с конечной точкой.
Эта технология снижает нагрузку на сеть, позволяя реализовать сложные аналитические вычисления в рамках одного запроса. Применяя GraphQL к системам машинного обучения, можно управлять ML-моделями и отслеживать их производительность с помощью единого API.
Наконец, с точки зрения производственного использования проектов Machine Learning, GraphQL позволяет экономно в плане трафика обновлять ML-модели в режиме реального времени, что крайне важно для приложений машинного обучения, которые необходимо постоянно переобучать и обновлять.
Если ML-модель должна обрабатывать много данных и различные параметры фильтрации, с потенциалом будущего развития системы машинного обучения, GraphQL будет отличным выбором.
Для примитивных CRUD-операций подойдет классический REST API, который реализует манипулирование ресурсами через основные HTTP-запросы (GET, POST, PUT, DELETE).
К примеру, используя GraphQL, разработчики могут создавать API, который позволяет пользователям гибко и эффективно взаимодействовать с ML-моделями обработки естественного языка (NLP). Предположим, NLP-приложение для понимания запросов клиентов и ответа на них. С GraphQL это приложение может запросить ML-модель, чтобы понять намерение клиента и предоставить соответствующий ответ в режиме реального времени и без дополнительных сетевых запросов.
Также GraphQL можно использовать для распознавания изображений, создав API, который позволяет пользователям запрашивать ML-модель и получать информацию об объектах или сценах на картинке.
К примеру, для идентификации растений или грибов в лесу. Еще GraphQL подойдет для создания унифицированного аналитического API, который позволит всем заинтересованным сторонам использовать единый источник доступа к согласованным данным, но несвязанным между собой семантически. Это соответствует ключевым идеям концепции непрерывного управления и сопровождения ML-систем под названием MLOps. 
Таким образом, GraphQL может быть мощным инструментом для создания и управления моделями машинного обучения с широким спектром сценариев практического использования.
Как применить его для разработки API проекта машинного обучения, рассмотрим далее.
@BigDataSchool_ru
https://www.bigdataschool.ru/blog/graphql-api-in-ml-projects.html
#machinelearning #numpy #статьи
📈Линейная регрессия — это метод машинного с учителем, который используется для предсказания непрерывной целевой переменной от одного или нескольких независимых признаков.
В основе метода - предположение, предполагает о том, что существует линейная связь между признаками и целевой переменной. Эта связь моделируется с помощью линейной функции. Модель линейной регрессии пытается найти лучшую прямую, которая может описывать зависимость между независимыми признаками и зависимой переменной. Это делается с помощью поиска оптимальных коэффициентов, которые могут быть использованы для описания линейной функции. Эта модель может быть использована как для предсказания, так и для анализа влияния признаков на целевую переменную.
Линейная регрессия может использоваться для решения различных задач.
Примерами успешного применения этого метода могут служить такие задачи как: прогнозирование продаж, прогнозирование цены на недвижимость, анализ влияния факторов на уровень заболеваемости и т.д. Однако, она не эффективна для решения задач, где не существует линейной связи между признаками и целевой переменной.
Основная идея подбора коэффициентов в линейной регрессии — нахождение лучшей прямой, которая может описать зависимость между зависимой и целевой переменной.
Формула линейной регрессии может быть записана следующим образом:
y = β0 + β1×1 + β2×2 + … + βnxn
где y — предсказываемая зависимая переменная, x1, x2, …, xn — независимые переменные, β0, β1, β2, …, βn — коэффициенты регрессии.
Цель — найти оптимальные значения коэффициентов β0, β1, β2, …, βn, которые минимизируют сумму квадратов ошибок.
Это может быть сделано с помощью методов оптимизации, к примеру таких как градиентный спуск или метод наименьших квадратов.
Далее рассмотрим именно второй метод.
@BigDataSchool_ru
https://python-school.ru/blog/linearregression-ols/
#python #machinelearning #статьи
📐Логистическая регрессия — это алгоритм машинного обучения, который используется для решения задачи бинарной классификации, то есть разделения данных на два класса. Она получила свое название благодаря тому, что использует логистическую функцию для прогнозирования вероятности принадлежности объекта к одному из классов.
По своей сути логистическая регрессия просто берет уравнение линейной регрессии и использует его как параметр сигмовидной функции.
В целом, логистическая регрессия — это мощный инструмент для решения задач бинарной и многоклассовой классификации в Python. Она проста в использовании и предоставляет множество метрик для оценки качества работы модели.
Плюсы логистической регрессии:
1. Это относительно простой алгоритм, который требует небольшого количества вычислительных ресурсов и может быть эффективно использован для решения большого количества задач классификации.
2. Интерпретируемость: логистическая регрессия позволяет понимать, какие переменные влияют на классификацию и каким образом.
3. Работает хорошо на небольших наборах данных: логистическая регрессия показывает хорошие результаты на небольших наборах данных.
4. Небольшая вероятность переобучения: логистическая регрессия склонна к менее переобучению, поскольку она не имеет множества параметров, которые нужно оптимизировать.

Минусы логистической регрессии:
1. Требуется нормализация признаков: логистическая регрессия требует нормализации признаков, чтобы гарантировать, что признаки вносят одинаковый вклад в модель.
2. Работает плохо на сложных задачах:  может работать плохо на задачах с большим количеством признаков или сложной структурой данных.
3. Линейность: логистическая регрессия работает только с линейными границами решений, что ограничивает ее способность решать сложные задачи классификации.
4. Низкая точность: логистическая регрессия может показывать низкую точность, если классы не являются линейно разделимыми.
@BigDataSchool_ru
https://python-school.ru/blog/logisticregression/
#python #machinelearning #статьи
🖍️Модели для классификации: k ближайших соседей
В области Data science и машинного обучения существует множество алгоритмов для решения задач классификации. Один из наиболее распространенных алгоритмов — это k ближайших соседей, который используется для классификации объектов на основе их близости к другим объектам в обучающей выборке.
Алгоритм k ближайших соседей основан на принципе близости объектов в пространстве признаков. Он состоит в следующем: для каждого объекта из тестовой выборки находим k ближайших соседей из обучающей выборки, и классифицируем объект на основе классов его соседей. Класс, который наиболее часто встречается среди соседей, и будет классом, к которому относится исходный объект.
В Python существует множество библиотек, которые позволяют использовать алгоритм k ближайших соседей для решения задач классификации. Одной из самых популярных является библиотека Scikit-learn.
Преимущества алгоритма k ближайших соседей в задачах классификации заключаются в его простоте и интуитивности. Однако, он может быть неэффективен в случаях, когда обучающая выборка имеет большое количество атрибутов или объектов, поскольку поиск ближайших соседей может быть очень ресурсоемким.
Кроме того, выбор оптимального значения k может оказаться нетривиальной задачей. Слишком маленькое значение k может привести к переобучению модели, тогда как слишком большое значение k может привести к недообучению модели.
Для решения этих проблем существуют различные техники, как перекрестная проверка и оптимизация параметров.
В Python можно легко реализовать алгоритм k ближайших соседей с помощью библиотеки Scikit-learn.

Далее мы попробуем реализовать его.
@BigDataSchool_ru
https://python-school.ru/blog/knnclassifier/
#DataScience #MachineLearning #статьи
💬Что такое дрейф данных, чем это опасно и как его обнаружить
В отличие от многих других информационных систем, проекты машинного обучения очень сильно зависят от данных.
Если производственные данные, которые поступают в ML-модель, радикально отличаются от тех, на которых она обучалась, встроенные в нее алгоритмы становятся неэффективны. Этот эффект называется дрейф данных и обычно случается из-за изменения поведения исследуемых объектов в реальном мире с течением времени или изменения меры оценки качества модели. Как правило, при этом статистические свойства входных данных меняются, что приводит к сдвигу в их распределении. Если вовремя не обнаружить дрейф данных, т.е. до того, как он негативно повлияет на результаты моделирования, прогнозы Machine Learning будут ошибочными. Например, риэлторская компания Zillion, базирующаяся в Сиэтле, в результате дрейфа данных своих ML-моделей понесла убытки в размере около $300 миллионов из-за ошибочных прогнозов цен после резких изменений на рынке недвижимости из-за пандемии COVID-19.
Поскольку дрейф данных обычно вызван изменением их статистических свойств, для обнаружения этого явления используются статистические тесты, такие как тест Колмогорова-Смирнова, индекс стабильности распределения, тест Кульбака-Лейблера, тест Дженсена-Шеннона, метрика Вассерштейна, критерий хи-квадрат и Z-тест. Автоматизировать выполнение этих тестов позволяют современные MLOps-инструменты, одним из которых является Python-библиотека мониторинга ML-моделей с открытым исходным кодом, разработанная компанией Evidently. ai.
Далее рассмотрим, как она работает.
@BigDataSchool_ru
https://www.bigdataschool.ru/blog/what-is-evidently-library-for-mlops.html
#DataScience #MachineLearning #статьи
Управленческий MLOps: 2 подхода к разработке системы Machine Learning
В концепции MLOps, которая стремится  сократить разрыв между различными специалистами, участвующими в процессах разработки, развертывания и эксплуатации систем машинного обучения, можно выделить 2 подхода:
1️⃣фокус на продукте (Product first)
2️⃣фокус на модели Machine Learning (Model first).
Мышление, ориентированное на продукт, фокусируется на конечной цели, которая заключается в предоставлении пользователям ценной прогностической информации. Конечной целью является предоставление полезных и высококачественных прогнозных данных для принятия управленческих решений. Поэтому понимание ключевых бизнес-требований, потребностей пользователей и желаемых результатов является главным на старте создания ML-системы. Согласно MLOps-концепции при этом также следует учитывать масштаб команды, включая бизнес-пользователей, аналитиков данных, специалистам по Data Science, разработчиков и DevOps-инженеров.
Мышление, ориентированное на продукт, требует активного сотрудничества, доверия к данным и понимания вариантов использования, а также:
согласование моделей машинного обучения с общим продуктом или услугой, реализация которых обеспечивает денежный поток
приоритизация функций ML-продукта, которые оказывают наибольшее влияние на пользователей и бизнес
обеспечение бесшовной интеграции компонентов ML-системы с другой ИТ-инфраструктурой
постоянная доработка и улучшение на основе отзывов пользователей и бизнес-данных.

Обратной стороной продуктового мышления является техническое — мышление, ориентированное на модель, которое отдает приоритет разработке и оптимизации ML-алгоритмов. Этот подход направлен на достижение высокой производительности и точности моделей, а также их эффективное обслуживание. Особое внимание в подходе Model first уделяется оптимизации алгоритмов и архитектуре с концентрацией на возможностях модели, а не на пользовательском опыте и бизнес-потребностях.
Это смещение фокуса в технологии приводит к концептуальному дрейфу модели, когда ML-система построена вокруг инструментов, а не решаемой проблемы. Тем не менее, мышление, ориентированное на модель, отлично подходит для улучшения существующей, а не для построения новой ML-системы.
Можно сказать, что подход Model first работает хорошо в следующих ситуациях:
R&D, когда в ходе фундаментальных исследований ищутся возможности новых алгоритмов
поиск сложных взаимосвязей и закономерности в больших данных, что тоже носит исследовательский характер
пользовательские модели, когда бизнес-задача настолько новая, что нужно много экспериментировать, построив несколько моделей, чтобы определить потенциал и ограничения будущего продукта
Proof-of-Concept, когда нужно продемонстрировать заинтересованным сторонам потенциал ML-модели c с помощью простого доказательства концепции.
Все эти MLOps-процессы отличаются друг от друга, и используют различные метрики оценки эффективности, что мы и рассмотрим дальше.
@BigDataSchool_ru
https://bigdataschool.ru/blog/mlops-and-product-management-for-ml.html