Работа с данными как основа машинного обучения (ML)

Если компания хочет разработать AI-ассистента, который будет обрабатывать запросы клиентов и генерировать ответы даже на нетипичные вопросы, эту задачу сложно решить с помощью традиционных методов разработки.
  • Классическая разработка с техниками ООП не позволяет предусмотреть все сценарии поведения человека.
  • Традиционные методы анализа данных слишком ресурсоёмкие и медленные. Они созданы для работы с небольшими наборами данных. Если использовать их с большими данными, они «съедят» не только вычислительные ресурсы, но и время аналитиков.
Чтобы извлечь пользу из данных, эффективно автоматизировать задачи и улучшить качество принятия решений, нужно воспользоваться машинным обучением.
На практике технологии AI очень связаны с облачными вычислениями. Обучение моделей требует очень много ресурсов. Небольшие компании и стартапы зачастую не могут оперативно развернуть инфраструктуру и окружение, которые необходимы для обучения моделей. Зато облачные провайдеры предоставляют подходящую инфраструктуру и возможность динамически масштабировать вычислительные мощности. Поэтому облако идеально подходит, если объёмы данных и требования к вычислениям выходят за рамки возможностей вашей on-premise модели.
Пришло время углубиться в методы создания AI-решений — машинное обучение ― и обозначить, как в целом выглядит процесс работы с данными.

Работа с данными

Представьте, что вы разрабатываете архитектуру решений крупного маркетплейса. Руководство поставило перед командой задачу ― создать систему рекомендаций, которая будет мотивировать пользователей совершать дополнительные покупки. Она будет предлагать клиентам товары на основе их истории покупок и поведения на сайте.
С этого момента разворачивается целый процесс, который включает работу бизнес-подразделений, IT-команды, DS-команды. Схематично это будет выглядеть как восемь шагов и итерациями при необходимости.

Шаг 1. Формирование бизнес-требований и технологического стека

Нужно чётко определить, чего хочет достичь бизнес (постановка бизнес-цели), с помощью какого решения вы собираетесь их достичь (функциональные требования) и как вы будете его реализовывать (согласование со стейкхолдерами).
Первым делом бизнес и IT-команды должны договориться о критериях успешности проекта. Важно заранее определить, как будет измеряться эффект от разработки и внедрения решения. Критерии успеха для нашего примера можно определить так:
  • увеличение среднего чека на определённый процент,
  • увеличение конверсии на определённое количество пунктов,
  • положительные отзывы клиентов о персонализированных рекомендациях.
После этого разрабатываются функциональные требования. На этом этапе команда определяет, какие технологии использовать для реализации, какие потребуются интерфейсы для интеграции, и прогнозирует дальнейшее масштабирование аппаратной и программной инфраструктуры.
Ещё команде важно учитывать ограничения при разработке:
  • Ограничение по времени. Например, решение должно создавать рекомендации для клиента за считанные миллисекунды, а это требует эффективного кеширования данных и быстрого доступа к моделям.
  • Ограничение по ресурсам. Машинное обучение для AI-сервисов требует больших ресурсов, и именно из-за этого компании часто мигрируют или сразу разрабатывают свои решения в облаке. В нашем примере явно потребуется использование ресурса графических процессоров (GPU) для обучения моделей, которые будет разрабатывать DS-команда (команда data scientists).
  • Ограничения в данных. Какие данные доступны на данный момент и какие дополнительные данные нужно будет собирать. Например, нужно решить, как интегрировать новые источники данных в существующие или в новые полигоны.
Так, в маркетплейсе для начала определяются основные функции будущего решения. Их всего три:
  1. Учёт истории покупок. Решение должно рекомендовать товары на основе истории покупок клиентов. Для этого требуется доступ к базе данных транзакций, где хранятся данные о заказах. И нужно определить, какие инструменты вы будете использовать для работы с данными. Например, реляционную или нереляционную базу данных, ORM или другие механизмы работы с БД?
  2. Учёт поведения клиентов на сайте. Решение должно учитывать поведение клиентов на сайте — какие страницы они просмотрели и какие товары добавили в корзину. Чтобы это реализовать, вам понадобится выбрать механизм, с помощью которого вы будете отслеживать и анализировать поведение пользователей. Можно использовать UTM-метки для отслеживания источников трафика и поведения на страницах, а также инструменты веб-аналитики — например, Яндекс Метрику. Ещё вы можете использовать собственное решение на основе событийного трекинга — например, инструмент на JavaScript для отслеживания кликов и действий.
  3. Взаимодействие с фронтендом онлайн-магазина. Решение можно интегрировать во фронтенд онлайн-магазина. Чтобы реализовать это требование, необходимо определить способ передачи данных между бэкендом и фронтендом. Можно использовать REST API. Этот способ хорошо подходит для приложений с простыми запросами и ответами в формате JSON или XML. Ещё один вариант — GraphQL. Это более гибкий способ работы с API: он позволяет запрашивать все нужные данные в одном запросе, в то время как REST API потребуется несколько вызовов. Работа GraphQL сокращает количество запросов и уменьшает объём передаваемых данных. Если вам необходимо обеспечить связь между фронтендом и бэкендом в режиме реального времени, можно использовать веб-сокеты. Этот способ подойдёт, например, если вы планируете отображать изменения в корзине в реальном времени. Не стоит забывать и про новые компоненты для решения — API Gateway, который будет управлять запросами, маршрутизацией, обеспечивать безопасность, а также интеграцию с различными сервисами (например, аутентификацией и мониторингом).
Когда технология реализации понятна, требования и выбранные технологии согласовываются и обсуждаются с ключевыми заинтересованными сторонами — руководством компании, командами маркетинга, разработки и безопасности и так далее. Важно убедиться, что все стороны понимают, как будет работать решение, и согласны с целями и ограничениями проекта. Это также включает согласование технологического стека, инструментов компетенций, которые будут использоваться.

Шаг 2. Сбор данных

На этапе сбора данных начинается активная работа: здесь вовлечены специалисты, ответственные за архитектуру решения, а также DS-команда — инженеры и исследователи данных.
Инженеры собирают «сырые» данные — всё, что потенциально может содержать полезную информацию. Они отвечают за обработку и интеграцию данных из различных источников, создают пайплайны данных, которые автоматизируют процесс извлечения данных и их загрузку в хранилища — например, в Apache Airflow. И настраивают подключение к базам данных, откуда будут извлекаться данные. В примере с маркетплейсом это данные о заказах и поведении пользователей.
Для работы с неструктурированными данными инженеры могут использовать СУБД (например, MongoDB или Cassandra), а также поисковый движок Elasticsearch. Также эти специалисты обеспечивают качество данных: удаляют дубликаты, заполняют пропущенные значения и проверяют целостность данных.
Исследователи данных тесно взаимодействуют с инженерами данных, чтобы гарантировать, что все необходимые данные собраны правильно и в достаточном количестве. Исследователям нужно убедиться, что пул данных подходит для дальнейшего моделирования, а после первичного анализа они могут вернуться к инженерам с запросом на дополнительные данные и расширение круга источников.

Шаг 3. Подготовка данных

Этап подготовки данных является ключевым в процессе, так как качество данных напрямую влияет на точность и эффективность моделей машинного обучения.
Кто участвует на этом этапе
Инженеры и исследователи данных работают вместе, чтобы очистить, преобразовать и подготовить данные к дальнейшему анализу и моделированию.
Инженеры данных отвечают за автоматизацию процесса очистки и трансформации данных. Они создают скрипты и пайплайны, которые очищают данные, преобразуют их в нужный формат и готовят к использованию в моделях машинного обучения.
Исследователи анализируют данные после очистки, чтобы убедиться в их готовности для моделирования. Они также участвуют в создании новых признаков (feature engineering), которые могут улучшить точность моделей. Их работа включает выявление важных признаков и преобразование данных для улучшения предсказательных способностей модели.
Результатом должен быть готовый датасет (от англ. dataset) — набор данных, который используется для анализа, обучения моделей машинного обучения или исследований. Он представляет собой структуру, содержащую записи данных, организованные в табличном виде или в других форматах, таких как изображения, текст, временные ряды.
Пример датасета в табличном виде. Вы можете использовать этот датасет для обучения модели машинного обучения для прогнозирования спроса в зависимости от различных факторов.
Скачать датасет
Используемый софт на этом этапе
  • Python и R — основные языки программирования для обработки и подготовки данных. Для манипуляции данными, очистки и создания новых признаков на R используются библиотеки Pandas и NumPy или Tidyverse. Библиотека машинного обучения на Python под названием Scikit-learn тоже предоставляет инструменты для обработки данных, такие как One-Hot Encoding, Label Encoding, StandardScaler (для стандартизации данных) и SimpleImputer (для заполнения пропусков).
  • Apache Spark. Если данные слишком велики для обработки в памяти, может быть использован Spark для выполнения распределённой очистки данных и создания признаков на кластере.
  • Excel или Google Sheets. Для более простых задач очистки и анализа данных могут использоваться табличные процессоры Excel или Google Sheets, особенно если набор данных небольшой.
  • Инструменты очистки данных, например Trifacta. Для визуальной очистки данных и преобразования их в нужный формат. Они предоставляют более удобный интерфейс для работы с данными и могут автоматизировать многие аспекты подготовки данных.

Шаг 4. Анализ данных

На этапе анализа данных исследователи и аналитики проводят глубокое изучение собранных и подготовленных данных с использованием статистических методов и инструментов визуализации. Цель этого этапа — выявить закономерности, тренды и взаимосвязи в данных, которые могут быть полезны для дальнейшего моделирования и принятия решений. С этого этапа процесс называется data mining.
Кто участвует на этом этапе
Исследователи данных проводят статистический анализ данных для выявления паттернов и трендов, которые могут улучшить точность модели и понимание данных. Они также создают визуализации, которые помогают лучше понять данные и представить результаты анализа.
Аналитики данных тоже могут участвовать в анализе данных, фокусируясь на бизнес-инсайтах, которые можно извлечь из данных. Они помогают интерпретировать результаты анализа с точки зрения бизнеса и предоставляют рекомендации для дальнейших действий.
Используемый софт на этом этапе
  • В Python библиотеки Pandas, NumPy и SciPy используются для выполнения статистических расчётов, а Matplotlib и Seaborn — для визуализации данных. В языке R исследователи данных могут использовать ggplot2 для построения графиков и dplyr для манипуляций с данными.
  • Jupyter Notebook и RStudio. Основные IDE анализа данных. Jupyter Notebooks поддерживают Python, а RStudio — R, и обе среды позволяют сочетать код с визуализациями и текстовыми комментариями для лучшего документирования анализа.
  • Tableau и Power BI. Инструменты для визуализации данных, которые позволяют исследователям и аналитикам создавать интерактивные дашборды и отчёты для представления результатов анализа и их интерпретации бизнес-пользователями. Несмотря на широкое использование специализированных инструментов, Excel по-прежнему является популярным инструментом для быстрого анализа и визуализации данных, особенно для небольших наборов данных или проведения базового анализа.
  • Apache Spark. Для анализа больших данных исследователи могут использовать Spark с другими библиотеками, такими как MLlib и GraphX, для выполнения сложных вычислений и построения графиков в распределённой среде.
  • D3.js. Для более сложных и интерактивных визуализаций данных, особенно в веб-приложениях, может быть использована библиотека D3.js на JavaScript. Этап анализа данных позволяет исследователям и аналитикам выявить ключевые закономерности и тренды в данных, которые могут быть использованы для построения более точных моделей и принятия обоснованных бизнес-решений. Визуализация данных играет важную роль в этом процессе, помогая лучше понять структуру данных и представить результаты анализа другим участникам проекта.

Шаг 5. Моделирование

Этап моделирования является ключевым для нашего урока. На этом этапе исследователи и инженеры по машинному обучению (ML Engineers) работают вместе над созданием, обучением и тестированием моделей, которые будут использоваться для решения задач прогнозирования.
Чтобы сделать предсказание о каком-либо объекте, машине (модели), перед этим изучают его характеристики — признаки. Модель осваивает взаимосвязи между этими признаками и дальше сама может предсказывать любое из них на основе остальных. Признак, который команда пытается предсказать, называют целевым признаком, целевой переменной или просто таргетом.
Кто участвует на этом этапе
Исследователи данных отвечают за выбор подходящих моделей, настройку гиперпараметров и обучение моделей на исторических данных. Они также участвуют в тестировании и валидации моделей, чтобы убедиться, что они работают правильно и обеспечивают высокую точность предсказаний.
Инженеры по машинному обучению занимаются подготовкой инфраструктуры и среды для обучения моделей, оптимизацией их производительности и развёртыванием моделей в продакшн-среде. Они обеспечивают автоматизацию процессов обучения и тестирования, а также интеграцию моделей в существующие системы.
Основные шаги на этапе моделирования
Выбор модели:
  • Определение подходящей модели. Выбирается тип рекомендательной системы: коллаборативная фильтрация, модель на основе содержимого (content-based filtering) и гибридные модели. Коллаборативная фильтрация использует информацию о предпочтениях других пользователей для рекомендации товаров, а модели на основе содержимого полагаются на характеристики самих товаров.
  • Сравнение моделей. Исследователи данных могут протестировать несколько моделей, чтобы выбрать ту, которая наилучшим образом подходит для задачи — «модель-чемпион». Это может включать использование библиотек, таких как Scikit-learn, TensorFlow, Keras или PyTorch для реализации и оценки различных моделей.
Тренировка модели:
  • Обучение на исторических данных. Модель обучается на данных о прошлых покупках клиентов, чтобы понять, какие товары могут быть интересны пользователям в будущем. Важно выбрать правильные признаки (features) для обучения модели, чтобы она могла эффективно делать предсказания. На этом этапе может использоваться K-fold cross-validation или другие техники для оценки стабильности модели.
  • Настройка гиперпараметров. Исследователи данных и инженеры по машинному обучению проводят настройку гиперпараметров модели (например, количество соседей в KNN или регуляризационные параметры), чтобы улучшить производительность модели. Для автоматизации этого процесса могут использоваться инструменты, такие как Grid Search или Random Search.
Тестирование и валидация:
  • Оценка на тестовых данных. После обучения модель проверяется на новых, не использованных ранее данных (тестовом наборе). Это позволяет оценить, насколько хорошо модель справляется с задачей предсказания и не переобучилась ли она на тренировочных данных.
  • Использование метрик. Для оценки модели могут использоваться различные метрики, такие как точность (accuracy), precision, recall, F1-score, RMSE и другие, в зависимости от задачи. Эти метрики помогают понять, насколько модель хороша в предсказаниях и где её можно улучшить.
  • Кросс-валидация. Дополнительно может быть использована кросс-валидация для проверки того, как модель работает на разных подмножествах данных, что помогает снизить вероятность переобучения и повысить общую точность модели.
Используемый софт на этом этапе
  • Для разработки моделей широко используется Python с библиотеками Scikit-learn, TensorFlow, Keras и PyTorch. В языке R можно использовать сaret, randomForest и xgboost. Облачные платформы предоставляют масштабируемую инфраструктуру для обучения и развёртывания моделей. Эти платформы поддерживают автоматизацию процесса обучения, тестирования и гиперпараметрической оптимизации.
  • MLflow — платформа с открытым исходным кодом для управления всем жизненным циклом моделей машинного обучения, в том числе и отслеживание экспериментов и версий моделей. MLflow позволяет сохранять параметры обучения, метрики и результаты, что важно для воспроизводимости и оптимизации модели.
  • Hyperopt, Optuna — библиотеки для автоматической настройки гиперпараметров моделей с использованием методов оптимизации, таких как байесовская оптимизация.
Для нашего решения подойдут несколько типов рекомендательной системы. Коллаборативная фильтрация использует данные о предпочтениях других пользователей для рекомендации товаров. Например, если пользователи A и B купили похожие товары, то система может порекомендовать пользователю A товары, купленные пользователем B, и наоборот.
Content-based filtering будет использовать характеристики самих товаров для рекомендаций. Например, если пользователь часто покупает электронные устройства, система будет предлагать другие устройства из этой категории.
Гибридные модели комбинируют подходы коллаборативной фильтрации и моделей на основе содержимого для улучшения точности рекомендаций.
Теперь, когда модель настроена, остаются последние шаги. Процесс близится к логическому завершению, ради чего вообще налаживалось машинное обучение, — принятию решений на основании данных. В дальнейшем модель требует только поддержания и мониторинга.

Шаг 6. Оценка модели и решения

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

Шаг 7. Принятие решений

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

Шаг 8. Мониторинг

Весь процесс работы с данными завершается этапом мониторинга: инженеры и исследователи по машинному обучению, следят за производительностью и корректностью работы модели после её развёртывания в продакшн-среде. Целью мониторинга является обеспечение стабильной работы модели, своевременное выявление проблем, а также поддержание актуальности модели в условиях новых данных.
Ещё регулярный мониторинг включает оценку того, как модель продолжает влиять на бизнес-метрики: средний чек, конверсию и удовлетворённость клиентов. Это помогает убедиться, что модель по-прежнему приносит пользу и не требует значительных изменений. В некоторых случаях полезно собирать обратную связь от конечных пользователей системы, чтобы понять, насколько они довольны рекомендациями или предсказаниями модели.
Кто участвует на этом этапе
Инженеры отвечают за настройку и поддержание инфраструктуры мониторинга, отслеживание производительности модели и автоматизацию процессов обновления модели при необходимости. Исследователи анализируют данные мониторинга, чтобы оценить, как хорошо модель справляется с задачей в реальных условиях, и участвуют в процессе обновления и дообучения модели, если её производительность начинает снижаться.
Используемый софт на этом этапе
  • Prometheus и Grafana
    С помощью этих инструментов настраивается сбор и хранение метрик производительности модели, таких как время отклика, точность предсказаний, частота ошибок и другие показатели, которые могут указывать на проблемы с моделью. Настраиваются логи работы модели, включая ошибки и предупреждения для отслеживания потенциальных проблем.
  • Apache Airflow
    Поддержание актуальности модели в зависимости от характера данных и скорости их изменения может потребоваться регулярное дообучение модели на новых данных. Это обычно автоматизируется с помощью пайплайнов данных, которые периодически обновляют модель. Если в данных появляются новые признаки или категории, инженеры и исследователи должны адаптировать модель, чтобы она могла правильно обрабатывать эти новые данные.

CRISP-DM

Описанный выше процесс часто используют в общепринятых стандартах и методологиях. Его всегда можно адаптировать под свой проект. Так, одна из адаптаций восьми шагов работы с данными утвердилась в стандарт CRISP-DM (cross-industry standart process for data mining).
✏️ CRISP-DM — межотраслевой стандартный процесс исследования данных, который особенно используется в моделях исследования данных, в частности data mining.
В этой методологии определяется модель жизненного цикла исследования данных, которая состоит из шести относительно знакомых фаз:
  • Определение бизнес-целей (business understanding),
  • Начальное изучение данных (data understanding),
  • Подготовка данных (data preparation),
  • Моделирование (modeling),
  • Оценка (evaluation),
  • Внедрение (deployment).

Задание 1

Модель для прогнозирования спроса на товары в интернет-магазине теряет точность из-за устаревших данных. Какой подход наилучший для поддержания точности модели?
Хотя увеличение объёма данных может улучшить модель, этого недостаточно, если данные не обновляются. Это поможет в краткосрочной перспективе, но не решит проблему устаревших данных.
Этот подход позволяет модели адаптироваться к новым данным и поддерживать высокую точность. Регулярное переобучение — ключ к стабильной работе модели.
Зачастую модель можно улучшить путём дообучения и начинать с нуля не требуется. Перезапуск модели потребует значительных ресурсов.
Вычислительные мощности важны для быстрой работы модели, но они не решат проблему устаревших данных. Модель будет работать быстрее, но не точнее.

Задание 2

Вы разрабатываете систему для предсказания количества заказов на основе исторических данных. Какой признак является целевым?
Это полезный признак для анализа, но он не является целевым. Модель не предсказывает дату заказа, а скорее использует её как один из факторов для прогнозирования.
Идентификатор пользователя может помочь в персонализации модели, но это не целевой признак. Модель не предсказывает конкретного пользователя, а работает с общими данными.
Целевой признак — это то, что модель должна предсказать. В данном случае это количество заказов в будущем.
Это важный показатель для анализа заказов, но он не является целевым признаком в задаче прогнозирования общего количества заказов.

Задание 3

Вы работаете над подготовкой данных для модели машинного обучения. Какие из следующих методов являются корректными шагами в процессе подготовки данных? Выберите все правильные ответы.
Обработка пропущенных значений — важный шаг, так как пропуски могут негативно влиять на результат модели. Их можно удалить или заполнить значениями.
Масштабирование признаков помогает сделать данные более совместимыми с алгоритмами, чувствительными к масштабу данных (например, при использовании методов кластеризации или градиентного спуска).
Удаление целевого признака недопустимо, так как целевой признак — это то, что модель должна предсказать. Удаление этой переменной сделает обучение модели невозможным.
Удаление дубликатов улучшает качество данных, устраняя повторы, которые могут исказить результаты.
Преобразование категориальных признаков необходимо, чтобы модель могла работать с категориальными данными, которые должны быть преобразованы в числовой формат (например, с помощью One-Hot Encoding).
Игнорирование выбросов может привести к некорректным предсказаниям, так как выбросы могут исказить обучаемую модель. С ними нужно работать (например, удалять или корректировать).

Итоги

Работа с данными представляется в виде процесса, состоящего из нескольких этапов. Эти этапы можно адаптировать под проект.
  1. Формализация требований. Бизнес определяет цели и критерии проекта. Команда должна зафиксировать ожидания заказчика и спроецировать бизнес-задачи в цикл работ.
  2. Сбор данных из различных источников — определяется релевантность данных для анализа.
  3. Подготовка данных к анализу. Сырые данные часто содержат ошибки, пропущенные значения, дубликаты и другие проблемы, которые могут повлиять на результаты анализа, поэтому данные важно подготовить.
  4. Анализ данных. Используются статистические методы и алгоритмы для извлечения нужной информации из данных. Анализ включает в себя как статистику (средние значения, медианы и стандартные отклонения), так и сложные методы, такие как кластеризация, регрессия и другие виды анализа.
  5. Моделирование. Разрабатываются, тестируются и валидируются модели, которые прогнозируют изменения или объясняют текущие данные. Модели создаются с помощью методов машинного обучения.
  6. Оценка модели. Оценивается производительность обученной модели с помощью различных метрик качества. Они также проверяют, насколько внедрение модели помогает достичь бизнес-целей вроде увеличения среднего чека и конверсии. Результаты анализа используются для принятия решений о дальнейшем применении модели и её улучшении.
  7. Принятие решений — цель всего процесса. Это могут быть стратегические решения, оптимизация рабочих процессов, разработка новых продуктов или улучшение старых. На этом этапе модели развёртываются в продакшн-среду с использованием контейнеризации и интеграции моделей в решения и сервисы.
  8. Мониторинг. Используются системы мониторинга, такие как Prometheus и Grafana, для отслеживания производительности и качества работы модели.