Сбор данных для машинного обучения: этапы, методики и рекомендации

Сбор данных для машинного обучения: этапы, методики и рекомендации

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

Что такое сбор данных?

Сбор данных — это методическая практика, нацеленная на получение значимой информации с целью построения согласованного и полного датасета для конкретной цели бизнеса, например, для принятия решений, ответов на исследовательские вопросы или стратегического планирования. Это первый и неотъемлемый этап связанных с данными проектов и задач, в том числе и business intelligence, машинного обучения, а также аналитики big data.

Сбор данных играет ключевую роль и в различных этапах управления продуктами, от product discovery до маркетинга продукта. Однако в нём используются методики и процедуры, отличающиеся от применяемых в машинном обучении, а потому это не входит в рамки нашего поста.

Сбор данных как первый этап процесса принятия решений на основе машинного обучения.
Сбор данных как первый этап процесса принятия решений на основе машинного обучения.

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

Сбор данных/интеграция данных/потребление данных

Сбор данных часто путают с потреблением и интеграцией данных, которые тоже являются важными процессами стратегии управления данными. Хотя все эти три процесса связаны с получением, между ними есть чёткие различия.

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

Интеграция данных происходит на более поздних этапах потока управления данными. Она преобразует коллекции сырых данных, собранных по разным системам, в единую схему и консолидирует их в общий репозиторий. Обычно весь поток полностью автоматизирован и состоит из трёх основных этапов: извлечения (extraction), преобразования (transformation) и загрузки (loading) данных (сокращённо ETL или ELT, в зависимости от порядка операций.)

Конечная цель сбора данных заключается в накоплении всей ценной информации в одном месте, обеспечении её целостности, качества, доступности всей компании и готовности к BI, статическому анализу данных или машинному обучению.

Под потреблением данных (data ingestion) понимается получение данных из множества источников и их перенос в целевую систему без преобразований. То есть это может быть частью интеграции данных или отдельным процессом, нацеленным на перенос информации в её исходном виде.

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

И интеграция, и потребление данных требуют создания конвейеров данных — последовательностей автоматизированных операций по перемещению данных из одной системы в другую. Для выполнения этой задачи нужен специалист — дата-инженер или разработчик ETL.

Сбор данных же может выполняться широким спектром специалистов в рамках их повседневных обязанностей под надзором специалистов в предметной сфере и/или дата-саентистов. Давайте рассмотрим основные этапы, из которых он состоит.

Этапы сбора данных

Основная причина сбора данных — это получение ответов на важные вопросы бизнеса. Например, вы хотите узнать, насколько успешен ваш бизнес по сравнению с конкурентами, какой спрос на ваш продукт или услугу ждать через месяц или как повысить удовлетворённость пользователей. Согласно PwC Customer Loyalty Survey 2022, четыре из пяти людей готовы поделиться личной информацией (например, возрастом или датой рождения), чтобы повысить удобство для себя.

Ключевые вопросы для организации сбора данных.
Ключевые вопросы для организации сбора данных.

Чёткое формулирование того, что вы хотите узнать — отправная точка начала сбора данных. Дальше вам предстоит сделать следующие шаги.

  • Определить, какую информацию вам нужно собирать.
  • Найти источники релевантных данных.
  • Выбрать способы и инструменты сбора данных.
  • Решить, какой объём данных будет достаточным.
  • Подготовить технологию хранения данных.

Ниже мы подробнее рассмотрим каждый этап и поделимся своим опытом сбора данных.

Типы данных: что собирать

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

Допустим, на практике мы работали с компаниями, делавшими упор на сборе

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

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

Ещё один важный аспект — это тип собираемой информации. С точки зрения data science, всевозможные виды данных разделяются на три большие группы: структурированные, слабоструктурированные и неструктурированные.

Ключевые различия между структурированными, слабоструктурированными и неструктурированными данными.
Ключевые различия между структурированными, слабоструктурированными и неструктурированными данными.

Структурированные данные — это хорошо упорядоченная информация, намеренно помещённая в таблицы со строками и столбцами. Примерами таких данных могут быть списки инвентаризации или электронные таблицы транзакций и их атрибутов, например времени и места покупки, цены, способа оплаты, скидки и так далее. Такие таблицы создают фундамент для business intelligence, традиционного анализа данных и прогнозирования временных последовательностей (если данные связаны с одним и тем же элементом и собираются в разные моменты времени).

Структурированные данные моделируются так, чтобы по ним легко можно было выполнять поиск и они занимали минимальное пространство на накопителях. Они находятся в специальных репозиториях, называемых реляционными или SQL-базами данных, потому что для обработки таблиц и извлечения записей специалисты используют structured query language (SQL).

Слабоструктурированные данные не так строго отформатированы, как табличные, но сохраняют в себе идентифицируемые элементы (тэги и другие маркеры), упрощающие поиск. К этой категории относятся форматы файлов JSON, CSV и XML. Их можно собирать в NoSQL-базы данных наподобие MongoDB или Cassandra.

Неструктурированные данные занимают 80-90% всей сферы данных. Как понятно из названия, они не подходят под традиционные схемы и включают в себя широкий спектр примеров — от текстов и аудиозаписей до сигналов датчиков.

Обычно неструктурированные данные легко получить, но с ними сложно работать. Они требуют много пространства для хранения и сложных, вычислительно затратных методик машинного обучения, например, обработки естественного языка (NLP) или распознавания изображений для обработки. Неудивительно, что используется лишь 0,5% от этого потенциально ценного ресурса. К счастью, ситуация постепенно меняется к лучшему благодаря эволюции инструментов big data и архитектур хранения, способных обрабатывать крупные датасеты вне зависимости от их типа (ниже мы рассмотрим различные типы репозиториев данных).

Источники данных: откуда их собирать

Во время сбора данных информация извлекается из различных источников, которые для компании могут быть внутренними или внешними.

Внутренние источники, также называемые первичными, сохраняют информацию внутри компании, охватывая такие области, как финансы, операции, персонал, взаимодействие с клиентами и поддержку. Примеры внутренних источников данных:

  • Система enterprise resource planning (ERP);
  • Централизованная система бронирования и система управления собственностью отеля;
  • Система управления доходами;
  • Система обслуживания пассажиров авиакомпании;
  • ПО customer relationship management (CRM);
  • Веб-сайт онлайн-торговли компании;
  • Кол-центры;
  • Системы IIoT, отслеживающие состояние оборудования, и многое другое.

Также сюда включаются анкеты сотрудников и клиентов, бумажные и электронные опросники, а также различные виды распечаток документов.

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

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

Наш опыт показывает, что для создания точных прогнозов вам совершенно точно нужны и внутренние, и внешние источники. Для создания алгоритма прогнозирования стоимости номеров семейного отеля мы объединили его собственные данные о бронировании с информацией о конкурентах того же размера, расположенных в том же регионе.

Способы и инструменты сбора данных

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

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

Извлечение данных при помощи интерфейсов программирования приложений

Application programming interface (API) — это слой ПО, позволяющий программам взаимодействовать друг с другом. Для прямого доступа к своим данным большинство современных платформ раскрывают публичные или приватные API. Благодаря API система может автоматически собирать интересующий вас контент.

В отличие от веб-скрейпинга, подключения к API не представляют юридических трудностей, потому что их нельзя установить без разрешения источника данных, который может накладывать ограничения на количество запросов и типы доступного контента. Также он определяет формат данных, но чаще всего вам придётся иметь дело с файлами JSON, которые обычно используются в современных REST API.

Оптическое распознавание символов

Optical character recognition (OCR) — это технология, распознающая печатный или рукописный текст в отсканированных документах, изображениях PDF и других файлах, а затем преобразующая его в машиночитаемый электронный вид. Она позволяет не только быстро оцифровывать бумажные документы, но и извлекать ценный контент из различных документов, делая его доступным для дальнейшей обработки.

Полнофункциональные системы наподобие ABBYY FineReader PDF и OCR-решения Google используют машинное обучение для анализа структуры документа и распознавания текста вне зависимости от его языка.

Автоматизация процессов

Robotic process automation (RPA) — это тип ПО, предназначенный для выполнения повторяющихся и монотонных повседневных операций, обычно выполняемых людьми. Среди прочего, RPA-боты способны выполнять некоторые действия, связанные со сбором данных, например, открывать электронные письма и вложения, собирать статистику в социальных сетях, извлекать данные из предварительно указанных полей в документах, считывать требуемые данные из баз данных и электронных таблиц, и так далее.

Традиционные RPA-инструменты способны работать только со структурированными и слабоструктурированными данными. Когда необходимо обрабатывать неструктурированные данные (которые, как мы помним, составляют 80-90% потенциально полезного контента), требуются более сложные решения на основе ИИ.

Интеллектуальная обработка документов

Intelligent document processing (IDP) включает в себя:

  • OCR для извлечения текста из сканов,
  • RPA для выполнения монотонных манипуляций со структурированными и слабоструктурированными данными,
  • методики машинного обучения, в частности, компьютерное зрение и NLP, для классификации документов на основании текстов, изображений или визуальной структуры, извлечения значимой информации, очистки, упорядочивания и разметки неструктурированных данных с целью их подготовки для обучения моделей машинного обучения.

IDP может использоваться для сбора и очистки данных из заявлений о страховых случаях, медицинских форм, счетов, договоров и других документов, минимизируя вмешательство человека.

Веб-скрейпинг

Веб-скрейпинг — это автоматизированный способ сбора, фильтрации и структурирования данных с веб-сайтов. Обычно веб-скрейперы или боты обходят множество веб-страниц, собирая цены, подробности о товарах, комментарии пользователей и многое другое.

Стоит заметить, что не каждый вид веб-скрейпинга легален. Вы можете свободно скрейпить собственный веб-сайт и, в большинстве случаев, собирать публично доступные данные в Интернете (если они не скрыты за логином).

Однако некоторые типы данных защищены нормами права. В основном это касается личных данных — фамилий, паспортных данных, контактов, мест, предпочтений в шопинге, видеозаписей людей, политических мнений и так далее. Например, принятый в ЕС закон General Data Protection Regulation (GDPR) применим к любой информации, которую можно использовать для идентификации европейского гражданина.

Кроме того, стоит помнить о том, что многие онлайн-сервисы запрещают скрейпинг. Airbnb не разрешает использовать «любых роботов, пауков, краулеров, скрейперов и других автоматизированных средств или процессов доступа или сбора данных и другого контента, а также любые иные способы взаимодействия с платформой Airbnb Platform для любых целей». Поэтому перед запуском веб-бота следует тщательно изучить правила пользования веб-сайтом.

Также можно собирать данные при помощи веб-форм, современных чат-ботов и других инструментов, или автоматически собирать их с датчиков, IoT-устройств и систем терминалов оплаты. Но как бы то ни было, сбор данных и его методики не могут быть успешными без наличия места для хранения данных.

Объём данных: сколько собирать

Иногда ответ достаточно очевиден. Например, если вы хотите провести анализ месячных или годовых показателей своего гостиничного бизнеса, то в течение заданного периода времени (месяца, года и так далее) собираете важные KPI отеля, например, среднюю стоимость номера и доход на свободный номер.

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

Конкретный объём сильно зависит от ваших целей и сложности используемого алгоритма. Прогнозировать спрос можно на основании традиционных статистических моделей. Для получения точных результатов рекомендуется собирать данные о продажах в течение не менее двух лет.

При разработке моделей машинного обучения необходимы исторические данные за много лет (самый минимум — за два-три года), дополненные текущей информацией. Суммарно датасеты, подготавливаемые для проектов машинного обучения, насчитывают тысячи примеров данных. Модели глубокого обучения потребляют ещё больше — десятки и сотни тысяч примеров. При обучении на маленьких датасетах они не дадут точных прогнозов.

Просто для справки: для прогнозирования степени заполненности номеров при помощи модели временных последовательностей на основе CNN мы выполняли обучение на исторических данных с 140 тысячами примеров данных. А для проекта анализа эмоциональной составляющей наша команда data science подготовила датасет с отзывами, содержащими 100 тысяч примеров. Однако стоит отметить, что правило «чем больше данных, тем лучше», работает только до определённой точки.

Как когда-то объяснил Александр Кондофуров, ведущий проекты data science в AltexSoft, «Первая тысяча примеров даст вам, например, точность в 70%. Каждая дополнительная тысяча тоже будет давать прирост точности, но с меньшей скоростью. Допустим, при 15 тысячах примеров вы можете достичь 90%, а 150 тысяч дадут 95%. В какой-то момент кривая роста спрямится и после этого добавление новых примеров не будет иметь никакого смысла».

Репозитории данных: где хранить собранные данные

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

Реляционные или нереляционные базы данных

Как мы говорили выше, реляционные или SQL-базы данных предназначены для структурированных или табличных данных. Среди прочего, их стоит выбирать для сбора и хранения финансовых транзакций, списков инвентаризации, предпочтений клиентов, дел сотрудников и подробностей бронирования. Согласно проведённому в 2023 году опросу Stack Overflow, самыми популярными SQL-решениями пока являются PostgreSQL, MySQL, SQLite, и Microsoft SQL Server.

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

  • основанными на документах для файлов JSON и имеющих схожую с JSON структуру (MongoDB, Amazon Document DB и Elasticsearch);
  • хранилищем данных «ключ-значение», представляющим каждый элемент данных как пару имени или ключа атрибута (гендер, цвет, цена и так далее) и его значения (мужчина, красный $100 и так далее). Самые популярные примеры этого типа — Redis и Amazon DynamoDB;
  • столбчатые, упорядочивающие данные в виде наборов столбцов, а не хранящие их в строках, как в SQL-базах данных. Хорошо известными столбчатыми технологиями являются Apache HBase и Apache Cassandra, принадлежащие к экосистеме big data Hadoop;
  • графовыми, предназначенными для графовых структур, где примеры данных соединены при помощи определённых связей, как в Neo4J, Amazon Neptune и OrientDB.

Хранилища/витрины/озёра данных

С ростом объёмов и разнообразия данных бизнес сталкивается с потребностью в централизованном месте для сбора и хранения информации. Такой единый репозиторий позволяет компаниям избегать обособленных баз данных, помогает консолидировать контент и делает его доступным различным специалистам организации. Существует две отличающиеся, возможно, даже противоположные архитектуры хранения больших датасетов — хранилище и озеро данных.

Разница между хранилищам, озёрами и витринами данных.
Разница между хранилищам, озёрами и витринами данных.

Хранилище данных (data warehouse, DW) — это, по сути, большая реляционная база данных, содержащая структурированные (а иногда слабоструктурированные) данные из всех отделов и служащая в качестве единственного источника истины для всей компании. Для извлечения информации из различных источников и упорядочивания её в единый формат DW используют процесс Extract, Transform, Load (ETL), подготавливая её для аналитики данных и BI.

Более мелкие и простые сегменты DW, предназначенные для одного направления или отдела бизнеса называются витринами данных (data mart). Они позволяют командам быстрее получать доступ к конкретным данным и анализировать их.

Озеро данных (data lake) содержит сырые данные вне зависимости от их структурированности. Эта архитектура подходит в ситуациях, когда организация собирает много информации, но пока не решила, что с ней делать. В отличие от DW, где обычно используется ETL, озёра данных работают с Extract, Load, Transform (ELT) — процессом, обеспечивающим быстрое потребление данных, но не готовящим их для применения в бизнесе.

Относительно новая архитектура под названием data lakehouse — это нечто среднее между хранилищами и озёрами, она объединяет преимущества обоих этих подходов.

Советы по сбору данных

Организуйте команду сбора данных

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

Создайте план и установите график сбора данных

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

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

Обеспечьте целостность данных

Целостность данных нужна для проверки качества данных и управления им, полноты и согласованности на каждом этапе жизненного цикла данных. Но всё это начинается с процесса сбора. Вне зависимости от того, выполняется ли он вручную или автоматически, необходимо создать чёткие пошаговые инструкции о том, как проверять вводимые данные, удалять дубликаты данных и создавать резервные копии данных. Время от времени нужно проверять следующие атрибуты собираемых данных:

  • атрибутированность — то есть наличие метаданных о том, кто и когда собрал их;
  • читаемость или разборчивость;
  • своевременность — записаны ли данные в момент их генерации;
  • оригинальность;
  • точность, или отсутствие ошибок, верное отражение наблюдений.

Учитывайте безопасность и конфиденциальность данных

Как мы говорили ранее, персональные данные защищаются GDPR и другими законами (например, Consumer Privacy Act штата Калифорния или CCPA). Согласно принципам GDPR, бизнесы должны по возможности работать с анонимными данными. В противном случае они должны сообщать людям, о которых собирается персональная информация, для каких целей она будет использоваться, как долго будет храниться и многое другое (полный список можно посмотреть здесь).

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

Разработайте и внедрите политики data governance

Если сбор данных не является единовременным событием, то установите в своей компании политики data governance. Они будут диктовать способы сбора, хранения и обработки данных, а также определять людей, которые должны иметь доступ к этому контенту. Среди прочего, стандарты data governance гарантируют, что задействованные в сборе информации люди будут выполнять его согласованно и следовать одним правилам.

Понравилась статья? Еще больше информации на тему данных, AI, ML, LLM вы можете найти в моем Telegram канале “Роман с данными”

  • Как подготовиться к сбору данных, чтобы не провалиться в процессе?
  • Как работать с синтетическими данными в 2024 году?
  • В чем специфика работы с ML проектами? И как разметить 1500 пузырьков руды на одном фото и не сойти с ума?

Обо всем этом читайте в “Роман с данными”

Начать дискуссию