Подготовка данных (data preparation) и первичная обработка данных (data wrangling) включают очистку и организацию необработанных данных в консолидированный формат.

Полученный набор данных подходит для дальнейшего анализа и обучения модели машинного обучения (ML).

Это критически важный этап, основа в проектах больших данных. Большая часть времени проекта уходит на этот шаг, и качество данных влияет на обучение выбранной модели ML.

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

Подготовке данных предшествует сбор данных, поэтому мы сначала обсудим процесс сбора данных.

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

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

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

Сбор данных (data collection) включает в себя поиск и загрузку необработанных данных из одного или нескольких источников. Данные могут храниться в различных форматах, источниках и местоположениях.

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

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

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

Необходимо проявлять осторожность перед использованием таких данных, и читать документацию (часто ею оказываются файлы «readme»), если она доступна.

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

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

Внешние данные обычно можно получить через программный интерфейс (API, application programming interface) - набор четко определенных методов взаимодействия между различными компонентами программного обеспечения, часто использующийся для автоматизированного обмена данными с поставщиком данных.

Внешние поставщики также часто поставляют необходимые данные в формате CSV или других форматах (как упомянуто выше).

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

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

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

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

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

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

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

Как только данные собраны, начинается стадия подготовки и первичной обработки данных. Этот этап включает в себя две важные задачи: очистку и предварительную обработку соответственно.

Иллюстрация 2 описывает этап подготовки и первичной обработки данных и показывает две задачи, из которых он состоит.

Выполнение этих задач варьируется в зависимости от характера данных.

Иллюстрация 2. Этап подготовки и первичной обработки данных.

Иллюстрация 2. Этап подготовки и первичной обработки данных.
Иллюстрация 2. Этап подготовки и первичной обработки данных.

Подготовка данных (очистка): это начальная и наиболее распространенная задача при подготовке данных, которая выполняется для сырых необработанных данных.

Очистка данных (data cleansing) - это процесс изучения, выявления и устранения ошибок в необработанных данных. Необработанные данные обычно не являются ни достаточно полными, ни достаточно чистыми для непосредственного обучения модели ML.

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

Автоматизированные данные (записанные системами автоматически) могут иметь аналогичные проблемы из-за отказа сервера и программных ошибок.

Первичная обработка данных (предварительная обработка): эта задача выполняет преобразования и необходимые этапы обработки очищенных данных, чтобы подготовить данные для обучения модели машинного обучения.

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

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

Структурированные данные.

Подготовка данных (очистка).

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

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

В Иллюстрации 3 показаны необработанные данные перед очисткой. Данные были собраны из разных источников и представлены в табличном формате.

Каждая строка соответствует наблюдению за клиентом американского банка. Каждый столбец представляет переменную (или признак), соответствующую каждому клиенту.

Иллюстрация 3. Необработанные данные перед очисткой.

1

ID

Имя

Пол

Дата рождения

Зарплата

Прочий доход

Штат

Кредитная карта

2

1

Mr. ABC

M

12/5/1970

$50,200

$5,000

VA

Y

3

2

Ms. XYZ

M

15 Jan, 1975

$60,500

$0

NY

Y

4

3

EFG

1/13/1979

865,000

81,000

CA

N

5

4

Ms. MNO

F

1/1/1900

-

-

FL

Don't Know

6

5

Ms. XYZ

F

15/1/1975

860,500

80

Y

7

6

Mr. GHI

M

9/10/1942

NA

855,000

TX

N

8

7

Mr. TUV

M

2/27/1956

8300,000

850,000

CT

Y

9

8

Ms. DEF

F

4/4/1980

855,000

80

British

Columbia

N

Возможные ошибки в необработанных данных включают следующее:

1. Ошибка неполного значения (incompleteness error) - это ситуация, когда значения данных полностью или частично отсутствуют, что приводит к пропуску данных. Эту ошибку можно исправить с помощью альтернативных источников данных.

Отсутствующие или недоступные значения должны быть пропущены или заменены на стандартное значение «NA» (т.е. «Not Applicable» или «Not Available» - недопустимые или недоступные значения), которое можно будет удалить или заменить расчетными значениями впоследствии, на стадии исследования данных.

Наиболее распространенными расчетными значениями являются среднее арифметическое значение, медиана или мода числовой переменной, или же просто ноль.

В Иллюстрации 3 ряды 4 (ID 3), 5 (ID 4), 6 (ID 5) и 7 (ID 6)  являются неполными из-за отсутствующих значений в полях столбцов Пол, Зарплата, Прочий доход, Имя и Штат.


2. Ошибка недопустимого значения (invalidity error) - это ошибка, при которой значения находятся за пределами допустимого диапазона, что приводит к неверным данным.

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


3. Ошибка неточного значения (inaccuracy error) - это ошибка, при которой данные не являются однозначным отражением истинного значения.

В Иллюстрации 3 строка 5 неточна (она показывает «Не знаю»). На самом деле у каждого человека либо есть кредитная карта, либо нет.


4. Ошибка противоречивого значения (inconsistency error) - это ошибка, при которой значения конфликтуют с соответствующими точками данных или с реальностью. Это противоречие можно устранить путем уточнения значения в другом источнике.

В Иллюстрации 3 строка 3 (ID 2), вероятно, будет противоречивой, поскольку столбец Имя содержит обращение к женскому полу («Ms»), а в столбце Пол указан мужчина («M»).


5. Ошибка неоднородности (non-uniformity error) - это ошибка, при которой данные имеют разный, не идентичный формат. Это можно исправить путем преобразования точек данных в предпочтительный стандартный формат.

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


6. Ошибка дублирования (duplication error) - это ошибка, при которой есть дублирующие друг друга наблюдения. Это можно исправить, удалив дубликаты записей.

В Иллюстрации 3 строка 6 является дубликатом, так как в строке 3 есть данные клиента с идентичным именем и датой рождения - обе записи относятся к одному и тому же клиенту.

В Иллюстрации 4 показан тот же набор данных после завершения процесса очистки.

Иллюстрация 4. Данные после очистки.

1

ID

Имя

Пол

Дата рождения

Зарплата

Прочий доход

Штат

Кредитная карта

2

1

Mr. ABC

M

12/5/1970

USD 50200

USD 5000

VA

Y

3

2

Ms. XYZ

F

1/15/1975

USD 60500

USD 0

NY

Y

4

3

Mr. EFG

M

1/13/1979

USD 65000

USD 1000

CA

N

5

6

Mr. GHI

M

9/10/1942

USD 0

USD 55000

TX

N

6

7

Mr. TUV

M

2/27/1956

USD 300000

USD 50000

CT

Y

7

8

Ms. DEF

F

4/4/1980

CAD 55000

CAD 0

British

Columbia

N

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

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

В дополнение к проверке вручную, можно использовать автоматизированную проверку данных с помощью таких программ, как SPSS.

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

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

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

Например, если набор данных содержит более 10,000 строк, то удаление нескольких строк (приблизительно 100) может не оказать существенного влияния на проект.

Если набор данных содержит менее 1,000 строк, то каждый ряд может быть важным и, таким образом, удаление множества строк будет вредным для проекта.

Первичная обработка данных (Data Wrangling, Data Preprocessing).

Чтобы подготовить структурированные данные для анализа, их нужно предварительно обработать.

Предварительная обработка данных (Data preprocessing) в первую очередь включает преобразование и масштабирование данных.

Эти процессы осуществляются на очищенном наборе данных. На практике распространены следующие преобразования:

1. Извлечение (extraction): новую переменную можно извлечь из текущей переменной, чтобы упростить анализ и использовать ее для обучения модели машинного обучения. В Иллюстрации 4 колонка даты рождения состоит из дат, которые напрямую не подходят для анализа.

Поэтому можно получить (извлечь) дополнительную переменную «Возраст» путем расчета разницы в годах между сегодняшним днем ​​и датой рождения.


2. Агрегирование (aggregation): две или более переменных можно агрегировать (т.е. объединить) в одну переменную, чтобы консолидировать аналогичные переменные.

В Иллюстрации 4 две формы дохода (Зарплата и Прочий доход) можно суммировать в одну переменную, отражающую общий доход.


3. Фильтрация (filtration): строки данных, которые не нужны для проекта, необходимо идентифицировать и отфильтровать.

В Иллюстрации 4 строка ​​7 (ID 8) относится к неамериканскому штату (British Columbia). Тем не менее, этот набор данных предназначен для американских банковских клиентов, поэтому они должны иметь американский адрес.


4. Отбор (selection): столбцы данных, которые интуитивно не нужны для проекта, можно удалить.

Этот процесс не следует путать с отбором признаков, который объясняется позже.

В Иллюстрации 4 столбцы Имя и Дата рождения не требуются для обучения модели. Столбца ID достаточно для идентификации наблюдений, а новая извлеченная переменная Возраст заменяет столбец Дата рождения.


5. Преобразование (conversion): переменные могут быть разных типов: номинальные, порядковые, непрерывные и категориальные.

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

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

В Иллюстрации 4: Имя - номинальное значение, Зарплата и Доход - непрерывные, Пол и Кредитная карта - категориальные с 2 классами, и Штат - номинальное.

Если бы строка 7 не была исключена ранее, Зарплата в строке 7 должна была быть преобразована в доллары США. Кроме того, преобразование применяется для корректировки временной стоимости денег, часовых поясов, и в ряде других случаев.


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

Любые присутствующие выбросы необходимо сначала идентифицировать.

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

В Иллюстрации 4 строка ​​6 (ID 7) является выбросом, потому что значение заработной платы намного выше верхнего квартиля.

Строка 5 (ID 6) также является выбросом, потому что значение заработной платы намного ниже нижнего квартиля. Однако после агрегирования и создания новой переменной Общего дохода, как показано в Иллюстрации 5, строка 5 (ID 6) больше не является выбросом.

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

Межквартильный размах (IQR, interquartile range) можно использовать для идентификации выбросов в данных с любой формой распределения. IQR - это разница между 75-м и 25-м процентилями данных.

В целом, значения данных за пределами следующего рассматриваются как выбросы:

  • +1.5 \(\times\) IQR + верхний предел 3-го квартиля; и
  • -1.5 \(\times\) IQR + нижний предел 2-го квартиля.

Использование множителя 3.0 (вместо 1.5) будет указывать на экстремальные значения.

Есть несколько практических методов для устранения выбросов. Метод, при котором экстремальные значения и выбросы просто удаляются из набора данных, известен как обрезка (trimming) или усечение (truncation) данных.

Например, усеченный на 5% набор данных - это набор данных, из которого удалены 5% самых высоких и 5% самых низких значений.

Когда экстремальные значения и выбросы заменяются максимальными (для выбросов больших значений) и минимальными (для выбросов малых значений) значениями точек данных, которые не являются выбросами, этот метод известен как винсоризация (winsorization).

Иллюстрация 5. Данные после применения преобразований.

1

ID

Пол

Возраст

Общий доход

Штат

Кредитная карта

2

1

M

48

55200

VA

Y

3

2

F

43

60500

NY

Y

4

3

M

39

66000

CA

N

5

6

M

76

55000

TX

N

Масштабирование (scaling) - это процесс настройки диапазона признака путем сдвига и изменения масштаба данных.

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

Для лучшего обучения модели при использовании таких методов, как метод опорных векторов (SVM) и искусственные нейронные сети (ANN), все переменные должны иметь значения в одинаковом диапазоне, чтобы набор данных был однородным.

Важно удалить выбросы до выполнения масштабирования. Вот два наиболее распространенных способа масштабирования:

1. Нормализация (normalization) - это процесс изменения масштаба числовых переменных, в результате которого их значения помещаются в диапазон [0, 1].

Чтобы нормализовать переменную \(X\), минимальное значение (\(X_{\rm min}\)) вычитается из каждого наблюдения (\(X_i\)), и затем это значение делится на разницу между максимальным и минимальным значениями \(X\) (\(X_{\rm max} - X_{\rm min}\)) следующим образом:

\(X_{\rm (normalized)} = \dst { X_i - X_{\rm min} \over
X_{\rm max} - X_{\rm min} } \)
(1)


2. Стандартизация (standardization) - это процесс, как центрирования, так и масштабирования переменных.

Центрирование включает в себя вычитание среднего значения (\(\mu\)) переменной из каждого наблюдения (\(X_i\)), поэтому новое среднее значение составляет 0.

Масштабирование регулирует диапазон данных путем деления центрированных значений (\(X_i - \mu\)) на стандартное отклонение (\(\sigma\)) признака \(X\). Результирующая стандартизированная переменная будет иметь среднее значение 0 и стандартное отклонение 1.

\(X_{\rm (standardized)} = \dst { X_i - \mu \over \sigma } \) (2)

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

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

Пример 2. Подготовка и первичная обработка структурированных данных.

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

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

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

1

ID

Имя

Результат погашения кредита

Доход ($)

Сумма кредита ($)

Кредитный балл

Тип кредита

2

1

Mr. Alpha

No Default

34,000

10,000

685

Ипотека

3

2

Ms. Beta

No Default

-63,050

49,000

770

Студенческий кредит

4

3

Mr. Gamma

Defaulted

20,565

35,000

730

5

4

Ms. Delta

No Default

50,021

unknown

664

Ипотека

6

5

Mr. Epsilon

Defaulted

100,350

129,000

705

Автокредит

7

6

Mr. Zeta

No Default

800,000

300,000

800

Кредит на покупку лодки

8

6

Mr. Zeta

No Default

800,000

300,000

800

Кредит на покупку лодки

Вонг считает, что эти данные требуют тщательной очистки. Он делает следующие предложения:

  • Предложение 1. «Давайте оставим столбец идентификатора и удалим столбец имени из набора данных».
  • Предложение 2. «Давайте создадим новый дополнительный признак «Сумма кредита в % от дохода».

1. Данные Ms. Beta лучше всего описать как:

  • A. Ошибка недопустимого значения.
  • B. Ошибка неточного значения.
  • C. Ошибка неполного значения.

2. Данные Mr. Gamma лучше всего описать как:

  • A. Ошибка недопустимого значения.
  • B. Ошибка дублирования.
  • C. Ошибка неполного значения.

3. Данные Ms. Delta лучше всего описать как:

  • A. Ошибка недопустимого значения.
  • B. Ошибка неточного значения.
  • C. Ошибка дублирования.

4. Данные Mr. Zeta лучше всего описать как:

  • A. Ошибка недопустимого значения.
  • B. Ошибка неточного значения.
  • C. Ошибка дублирования.

5. Процесс, упомянутый в первом предложении Вонга, лучше всего описать как:

  • A. Выбор признаков.
  • B. Извлечение признака.
  • C. Разработка признака.

6. Второе предложение Вонга лучше всего описать как:

  • A. Выбор признаков.
  • B. Извлечение признака.
  • C. Разработка признака.


Решение для части 1:

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


Решение для части 2:

Ответ C верен. Это ошибка неполного значения, поскольку пропущен Тип кредита.


Решение для части 3:

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


Решение для части 4:

Ответ C верен. Строка 8 дублирует строку 7: Это ошибка дублирования.


Решение для части 5:

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

Предложение имеет смысл, поскольку поля «ID» и «Имя» не требуются для определения наблюдения.


Решение для части 6:

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

Извлечение признаков - это процесс создания (то есть извлечения) новых переменных из существующих переменных.