4 основных шага в подготовке данных

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

По Rosaria Silipo , руководитель Data Science евангелизации в KNIME

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

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

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

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

  1. Нормализация
  2. Преобразование
  3. Вменение отсутствующего значения
  4. Повторная выборка

Наш пример: прогноз оттока


Возьмем простой пример из науки о данных: прогноз оттока. Вкратце объяснение, прогнозирование оттока направлено на различение клиентов, которым грозит отток, и других клиентов. Обычно используются данные из CRM-системы компании, включая особенности поведения клиентов, демографические данные и доход. Некоторые клиенты уходят, некоторые – нет. Эти данные затем используются для обучения модели прогнозирования, чтобы различать два класса клиентов.

Проблема заключается в проблеме бинарной классификации. Выходной класс (отток) имеет только два возможных значения: отток «да» и отток «нет». Здесь подойдет любой алгоритм классификации: дерево решений, случайный лес, логистическая регрессия и так далее. Логистическая регрессия – это своего рода исторический алгоритм, который быстро запускается и легко интерпретируется. Мы примем его, чтобы решить эту проблему.

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

Но держи лошадей, Нелли! Давайте сначала посмотрим на данные.

Четыре основных шага в подготовке данных
Рис. 1. Рабочий процесс для обучения и оценки модели логистической регрессии, включая четыре общих этапа подготовки данных ( 
щелкните, чтобы увеличить ).

Разделите данные для получения двух подмножеств данных

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

Обучающий набор будет использоваться для обучения модели   узлом Logistic Regression Learner, а тестовый набор – для оценки модели узлом Logistic Regression Predictor, за которым следует узел Scorer. Узел Logistic Regression Predictor генерирует прогнозы оттока, а узел Scorer оценивает, насколько верны эти прогнозы.

Здесь мы не включаем операцию разделения среди операций подготовки данных, потому что она на самом деле не меняет данные. Однако это только наше мнение. Если вы хотите включить секционирование в операции подготовки данных, просто измените заголовок с «Четыре» на «Пять основных шагов в подготовке данных» 🙂

1. Нормализация

 
 
Затем логистическая регрессия требует, чтобы входные данные были нормализованы в интервале [0, 1], даже лучше, если они нормализованы по Гауссу. Любой алгоритм, включая расстояния или отклонения, будет работать с нормализованными данными. Это связано с тем, что функции с большими диапазонами влияют на расчет отклонений и расстояний и могут в конечном итоге доминировать во всем алгоритме. Поскольку мы хотим, чтобы все входные функции рассматривались одинаково, требуется нормализация данных.

Например, дерево решений основывается на вероятностях и не требует нормализованных данных, но логистическая регрессия полагается на дисперсии и, следовательно, требует предварительной нормализации; многие алгоритмы кластеризации, такие как k-Means, полагаются на расстояния и поэтому требуют нормализации; нейронные сети используют функции активации, где аргумент попадает в [0,1] и, следовательно, также требует нормализации; и так далее. Вы научитесь распознавать, какие алгоритмы требуют нормализации и почему.

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

2. Преобразование

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

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

  • Индексное кодирование. Каждому номинальному значению соответствует число.
  • Одно горячее кодирование. Каждое номинальное значение создает новый столбец, ячейки которого заполняются цифрами 1 или 0 в зависимости от наличия или отсутствия этого значения в исходном столбце.

Решение индексного кодирования генерирует один числовой столбец из одного номинального столбца. Однако он вводит искусственное числовое расстояние между двумя значениями из-за функции отображения.

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

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

В нашем случае в исходном наборе данных есть два категориальных столбца:  State  и  Phone . Телефон  – это уникальный идентификатор, используемый для идентификации каждого клиента. Мы не будем использовать его в нашем анализе, поскольку он не содержит общей информации о поведении клиентов или контракте. Государство , напротив, может содержать релевантную информацию. Вполне вероятно, что клиенты из определенного штата могут быть более склонны к оттоку, например, из-за местного конкурента.

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

На противоположной стороне спектра у нас есть целевой столбец  Churn , содержащий информацию о том, ушел ли клиент (1) или нет (0). Многие алгоритмы обучения классификаторов требуют категориального целевого столбца для меток классов. В нашем случае столбец Churn изначально считался числовым (0/1) и должен быть преобразован в категориальный тип с   узлом Number To String .

3. Вменение отсутствующего значения

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

В литературе есть много стратегий для вменения пропущенных значений. Вы можете проверить детали в статье « Вменение отсутствующих значений: обзор ».

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

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

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

Однако, если мы хотим немного подумать, мы могли бы захотеть запустить небольшую статистику по набору данных, например, через   узел Data Explorer , мы могли бы оценить, насколько серьезна проблема с отсутствующим значением, если вообще существует. В качестве второго шага мы могли бы изолировать те строки с пропущенными значениями в наиболее затронутых столбцах. Из таких наблюдений может прийти идея разумной восстановительной стоимости. Мы сделали это, конечно же, после реализации стратегии пропущенного значения в узле «Недостающее значение». И действительно, представление узла Data Explorer показало, что в нашем наборе данных нет пропущенных значений. Никак нет. Ну что ж! Оставим там узел «Отсутствующее значение» для завершения.

4. Передискретизация

 
 
Теперь последний из основных вопросов: равномерно ли распределены целевые классы по набору данных?

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

Чтобы выполнить повторную выборку, вы можете либо занижить выборку класса большинства, либо передискретизировать класс меньшинства, в зависимости от того, с каким объемом данных вы имеете дело и можете ли вы позволить себе роскошь отбросить данные из класса большинства. Этот набор данных не такой уж и большой, поэтому мы решили применить передискретизацию класса меньшинства с помощью алгоритма SMOTE.

Предотвратить утечку данных

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

Обратите внимание на отсутствие узла SMOTE (Применить). Это связано с тем, что мы либо повторно применяем алгоритм SMOTE для избыточной выборки класса меньшинства в тестовом наборе, либо принимаем метрику оценки, которая учитывает дисбаланс классов, например каппа Коэна. Мы решили оценивать качество модели с помощью каппа-метрики Коэна.

Упаковка и выводы

 
 
Мы подошли к концу нашего рабочего процесса (вы можете загрузить рабочий процесс «  Четыре основных шага по подготовке данных перед обучением предиктора оттока»  из KNIME Hub). Мы подготовили обучающие данные, обучили на них алгоритм прогнозирования, подготовили тестовые данные с использованием тех же преобразований, применили к ним обученную модель и сравнили прогнозы с реальными классами. Узел  Scorer  создает ряд показателей точности для оценки качества модели. Мы выбрали каппу Коэна, поскольку она измеряет производительность алгоритмов в обоих классах, даже если они сильно несбалансированы.

У нас Каппа Коэна почти 0,4. Это лучшее, что мы можем сделать? Мы должны попытаться вернуться, настроить некоторые параметры и посмотреть, сможем ли мы получить лучшую модель. Вместо того, чтобы настраивать параметры вручную, мы могли бы даже ввести цикл оптимизации. Ознакомьтесь с бесплатной электронной книгой «  От моделирования к оценке модели», чтобы узнать о других методах подсчета баллов, которые показывают эффективность модели в более широком контексте.

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

 
Биография: Розария Силипо – не только эксперт в области интеллектуального анализа данных, машинного обучения, отчетности и хранилищ данных, она стала признанным экспертом по механизму интеллектуального анализа данных KNIME, о котором она опубликовала три книги: KNIME Beginner’s Luck, The KNIME Cookbook и буклет KNIME для пользователей SAS. Ранее Розария работала внештатным аналитиком данных во многих компаниях по всей Европе. Она также возглавляла группу разработки SAS в Визеке (Цюрих), реализовала интерфейсы преобразования речи в текст и текст в речь на C # в компании Spoken Translation (Беркли, Калифорния) и разработала ряд механизмов распознавания речи на разных языках. в компании Nuance Communications (Менло-Парк, Калифорния). Розария получила докторскую степень в области биомедицинской инженерии в 1996 году в Университете Флоренции, Италия.

Впервые опубликовано в блоге KNIME .

Ответить