Предобработка данных
Материал из MachineLearning.
| | Статья написана с использованием LLM и проверена участником Imil Baltaniazov 21:55, 11 июля 2026 (MSD) |
Предобработка данных (англ. data preprocessing) — совокупность методов и процедур преобразования исходных, «сырых» данных в форму, пригодную для последующего анализа и обучения моделей машинного обучения. Предобработка включает сбор и первичный анализ данных, очистку от пропусков, дубликатов и ошибок, обработку выбросов, масштабирование и трансформацию признаков, кодирование категориальных переменных, а также корректное разбиение выборки на обучающую, валидационную и тестовую части.
Введение
Любой алгоритм машинного обучения строит статистическую зависимость между признаками и целевой переменной на основе имеющихся данных. Если данные содержат пропуски, ошибки ввода, несогласованные форматы, выбросы или неинформативные признаки, модель либо не сможет обучиться корректно, либо унаследует присутствующие в данных искажения. Этот принцип формулируют как «мусор на входе — мусор на выходе» (англ. garbage in, garbage out): даже технически совершенный алгоритм не компенсирует низкое качество обучающей выборки.
По данным опросов специалистов по данным (в частности, опроса компании CrowdFlower 2016 года и последующих отраслевых исследований), от 60 до 80% рабочего времени аналитика или инженера машинного обучения уходит на сбор, очистку и подготовку данных, а не на построение и настройку моделей[1]. Причина в том, что реальные данные почти никогда не приходят в готовом для анализа виде: они поступают из разнородных источников (баз данных, журналов событий, датчиков, форм, внешних API), содержат ошибки ввода, пропуски, дублирующиеся записи и признаки, измеренные в разных единицах и форматах.
Предобработку удобно рассматривать как последовательность этапов, каждый из которых устраняет определённый класс проблем и одновременно может порождать новые риски — в первую очередь риск утечки данных (англ. data leakage), возникающий при нарушении порядка операций относительно разбиения выборки. Ниже эти этапы рассмотрены последовательно — от первичного анализа до построения итогового конвейера предобработки (см. раздел «Pipeline»).
Сбор и первичный анализ данных
Типы признаков
- Количественные (числовые) — непрерывные (рост, доход, температура) и дискретные (число детей, число посещений сайта).
- Категориальные — номинальные, не имеющие естественного порядка (город, цвет товара), и порядковые, для которых порядок значений имеет смысл (уровень образования, оценка удовлетворённости).
- Бинарные — частный случай категориальных с двумя возможными значениями.
- Текстовые — свободный текст, требующий отдельных методов обработки (токенизация, векторизация).
- Временные — даты и временные метки, а также построенные на них временные ряды.
- Геопространственные — координаты, адреса, географические полигоны.
Описательные статистики
Для количественных признаков рассчитываются среднее, медиана, мода, дисперсия, стандартное отклонение, размах, квантили, а также асимметрия и эксцесс, характеризующие форму распределения:
где — коэффициент асимметрии, показывающий, в какую сторону смещено распределение относительно среднего.
Для категориальных признаков рассчитываются частоты и доли встречаемости каждой категории, мода, а также кардинальность — число уникальных значений, определяющее выбор метода кодирования (см. раздел «Кодирование категориальных признаков»).
Визуализация
На этапе первичного анализа обычно строятся:
- гистограммы и графики плотности распределения — для оценки формы распределения количественных признаков;
- коробчатые диаграммы (box plot) — для наглядного отображения квартилей и потенциальных выбросов;
- диаграммы рассеяния и парные графики (pair plot) — для оценки взаимосвязей между парами признаков;
- корреляционная матрица (тепловая карта на основе коэффициентов Пирсона или Спирмена) — для выявления линейных и монотонных зависимостей между признаками;
- столбчатые диаграммы частот — для категориальных признаков;
- матрица пропусков — визуализация расположения пропущенных значений по строкам и столбцам, помогающая заметить неслучайные закономерности пропусков.
Итогом этого этапа является «профиль данных»: доля пропусков по каждому столбцу, доля дублирующихся строк, кардинальность категориальных признаков и общее представление о распределениях — эта информация определяет выбор конкретных методов очистки на следующих этапах.
Очистка данных
Пропущенные значения
Прежде чем выбирать метод обработки пропусков, полезно определить их характер по классификации Рубина[1]:
- MCAR (missing completely at random) — вероятность пропуска не зависит ни от наблюдаемых, ни от ненаблюдаемых значений;
- MAR (missing at random) — вероятность пропуска зависит от других, наблюдаемых признаков, но не от самого пропущенного значения;
- MNAR (missing not at random) — вероятность пропуска зависит от самого пропущенного значения (например, люди с высоким доходом чаще не указывают доход).
| Метод | Суть | Преимущества | Недостатки | Когда применять |
|---|---|---|---|---|
| Удаление (listwise / pairwise) | Удаление строк или столбцов, содержащих пропуски | Простота, отсутствие искусственно созданных значений | Потеря информации, смещение оценок при MAR и MNAR | Доля пропусков мала, характер пропусков близок к MCAR |
| Заполнение средним / медианой / модой | Замена пропуска соответствующей статистикой по столбцу | Быстрота и простота реализации | Занижение дисперсии признака, искажение корреляций с другими переменными | Базовый вариант при небольшой доле пропусков; медиана предпочтительна при наличии выбросов |
| Регрессионное восстановление | Прогнозирование пропущенного значения моделью регрессии по остальным признакам | Учитывает связи между признаками, точнее простых статистик | Риск переобучения, искусственное усиление существующих корреляций | Присутствует выраженная зависимость признака от других переменных |
| KNN-импутация | Замена значением (или средним значением) k ближайших по остальным признакам наблюдений | Учитывает локальную структуру данных без предположения о линейности | Вычислительно затратна на больших выборках, чувствительна к масштабу признаков | Умеренный объём данных, выраженная нелинейная структура |
| Интерполяция (линейная, сплайн) | Восстановление значения по соседним точкам упорядоченного ряда | Естественна для последовательных измерений | Неприменима без естественного порядка наблюдений | Временные ряды, регулярные последовательные измерения |
| Множественное восстановление (MICE) | Многократная генерация правдоподобных значений с последующим усреднением результатов моделирования | Корректно отражает неопределённость, вносимую восстановлением пропусков | Высокая вычислительная сложность, сложность реализации | Исследовательские задачи, где важна статистическая корректность итоговых оценок |
Дубликаты
Различают:
- явные дубликаты — строки, полностью или по ключевым столбцам совпадающие со значениями другой строки; обнаруживаются прямым сравнением;
- неявные (нечёткие) дубликаты — записи, относящиеся к одному и тому же объекту, но различающиеся из-за опечаток, регистра символов или различий в формате (например, «ООО Ромашка» и «Ромашка, ООО»). Для их обнаружения применяются меры строковой близости (расстояние Левенштейна, коэффициент Жаккара) и алгоритмы связывания записей (record linkage).
Перед удалением дубликатов необходимо явно определить ключ, по которому строки считаются повторами: полное совпадение всех столбцов и совпадение по бизнес-ключу дают разные результаты и по-разному влияют на объём и структуру выборки.
Ошибки в данных
К типичным ошибкам относятся: опечатки и несогласованные форматы (даты в разных форматах, разный регистр текстовых значений), значения, выходящие за пределы допустимого диапазона (отрицательный возраст, возраст 200 лет), логические противоречия между полями (дата рождения позже даты смерти) и несогласованность единиц измерения (килограммы и фунты в одном столбце). Такие ошибки выявляются с помощью правил валидации, регулярных выражений и проверок согласованности между связанными полями.
Выбросы
Выброс — наблюдение, значительно отклоняющееся от основной массы данных; причиной может быть ошибка измерения или ввода данных, либо редкое, но реально существующее событие. Различение этих двух случаев определяет дальнейшую стратегию обработки.
Обнаружение выбросов
Метод межквартильного размаха (IQR). Межквартильный размах определяется как
а наблюдения, выходящие за границы
считаются потенциальными выбросами (правило Тьюки).
Метод z-оценки. Для приблизительно нормально распределённого признака вычисляется
и наблюдения с (иногда используется порог 2,5) относят к выбросам. Метод чувствителен к отклонению распределения от нормального и к присутствию самих выбросов, искажающих оценки
и
.
Для многомерного случая, когда наблюдение аномально лишь в сочетании нескольких признаков, применяются расстояние Махаланобиса, а также специализированные алгоритмы — Isolation Forest и Local Outlier Factor (LOF).
Стратегии обработки
- Удаление наблюдений — оправдано при явной ошибке измерения, но приводит к потере части данных и может исказить выборку при удалении редких, но валидных событий.
- Капинг (винзоризация) — замена значений за пределами выбранного порога (например, 1-го и 99-го процентилей) на значение самой границы; сохраняет объём выборки, ограничивая влияние крайних значений.
- Преобразование — применение логарифмического или степенного преобразования (см. следующий раздел), сжимающего масштаб и уменьшающего влияние больших значений без их удаления.
- Сохранение как информативного сигнала — в задачах обнаружения аномалий или мошенничества выбросы часто представляют собой именно искомое явление; в этом случае их не устраняют, а выделяют отдельным бинарным признаком-флагом.
Преобразование признаков
Масштабирование (нормализация)
Min-max масштабирование приводит значения к фиксированному диапазону, обычно :
Z-стандартизация приводит признак к нулевому среднему и единичной дисперсии:
Робастное масштабирование использует медиану и межквартильный размах вместо среднего и стандартного отклонения и устойчиво к выбросам:
Масштабирование существенно для алгоритмов, основанных на расстояниях (метод k ближайших соседей, метод опорных векторов, k-средних), и для моделей, обучаемых градиентными методами (линейные модели, нейронные сети), поскольку признаки в разных масштабах приводят к разной скорости сходимости и разному вкладу в функцию расстояния. Модели на основе деревьев решений (одиночные деревья, случайный лес, градиентный бустинг) инвариантны к монотонным преобразованиям масштаба и, как правило, не требуют этого этапа.
Степенные преобразования
Логарифмическое преобразование уменьшает правостороннюю асимметрию распределения; требует неотрицательных значений (единица в аргументе добавляется, чтобы избежать логарифма нуля).
Преобразование Бокса — Кокса[1] определяется как
и требует строго положительных значений признака; оптимальный параметр обычно подбирается методом максимального правдоподобия.
Преобразование Йео — Джонсона[1] обобщает преобразование Бокса — Кокса на случай нулевых и отрицательных значений:
Цель обоих преобразований — приблизить распределение признака к нормальному или симметричному, что важно для моделей, чувствительных к форме распределения признаков (линейная регрессия, методы, основанные на предположении о нормальности остатков).
Дискретизация
- Равноширинное разбиение — диапазон значений делится на интервалы одинаковой ширины.
- Равночастотное (квантильное) разбиение — границы интервалов подбираются так, чтобы в каждый интервал попадало примерно одинаковое число наблюдений.
- Разбиение с учётом целевой переменной — границы определяются на основе критериев, связанных с целевой переменной (например, разбиения, соответствующие узлам решающего дерева, или минимизация энтропии).
Дискретизация снижает чувствительность модели к шуму в исходных значениях, помогает линейным моделям учитывать нелинейные зависимости и часто применяется как предварительный шаг перед WOE-кодированием (см. следующий раздел).
Кодирование категориальных признаков
Большинство алгоритмов машинного обучения требуют числового представления признаков, поэтому категориальные переменные преобразуются в числа так, чтобы по возможности сохранить их информативность и не внести ложные отношения порядка там, где их нет.
| Метод | Идея | Преимущества | Недостатки | Типичное применение |
|---|---|---|---|---|
| One-Hot Encoding | Каждая категория представляется отдельным бинарным столбцом-индикатором | Не вносит ложного порядка между категориями, хорошо работает с линейными моделями и нейронными сетями | Рост размерности и разреженность при высокой кардинальности признака | Номинальные признаки с небольшим числом уникальных значений |
| Label Encoding | Каждой категории присваивается целое число | Компактность, отсутствие роста размерности | Вносит искусственный порядок между категориями, некорректно для номинальных признаков в линейных моделях | Порядковые признаки; деревья решений и ансамбли на их основе, не чувствительные к произвольному порядку кодов |
| Target (Mean) Encoding | Категория заменяется средним значением целевой переменной по этой категории, обычно со сглаживанием: | Компактно передаёт связь категории с целевой переменной, эффективно при высокой кардинальности | Высокий риск утечки данных и переобучения без перекрёстного расчёта | Признаки высокой кардинальности (идентификаторы, почтовые индексы) при достаточном объёме выборки |
| Частотное кодирование | Категория заменяется частотой (долей) её встречаемости в обучающей выборке | Простота реализации, не использует целевую переменную, что снижает риск утечки | Категории с одинаковой частотой становятся неразличимы | Признаки высокой кардинальности, когда важна распространённость категории, а не связь с целью |
| WOE (Weight of Evidence) | Категория заменяется логарифмом отношения долей положительного и отрицательного классов внутри группы: | Даёт монотонную по логарифму шансов шкалу, естественно сочетается с логистической регрессией и предварительным биннингом | Определён только для бинарной целевой переменной, риск утечки без перекрёстного расчёта | Кредитный скоринг, логистическая регрессия в задачах бинарной классификации |
Для target encoding и WOE статистики необходимо рассчитывать исключительно по обучающей части данных (или по обучающей части каждого фолда при кросс-валидации) — подробнее см. раздел «Pipeline».
Инженерия признаков
Помимо преобразования существующих признаков, качество модели часто определяется созданием новых — на основе доменных знаний, взаимодействий между признаками (произведения, отношения), агрегатов по группам, извлечения компонентов из дат (день недели, признак праздника), а также признаков, полученных из текста или геоданных. Поскольку это широкая самостоятельная область со своим набором методов, она подробно рассматривается в отдельной статье — см. Инженерия признаков.
Уменьшение размерности
Метод главных компонент
Метод главных компонент (PCA) находит ортогональные направления максимальной дисперсии данных. Для центрированной матрицы признаков строится ковариационная матрица
а главные компоненты являются собственными векторами этой матрицы, удовлетворяющими уравнению
упорядоченными по убыванию собственных значений , соответствующих объяснённой дисперсии. Для проекции обычно выбирается минимальное число компонент, суммарно объясняющих заданную долю дисперсии (например, 95%). Поскольку метод чувствителен к масштабу признаков, перед его применением данные, как правило, стандартизируют. Подробнее см. Метод главных компонент.
Отбор признаков
- Фильтрационные методы — оценка признаков независимо от модели с помощью коэффициента корреляции, взаимной информации, критерия хи-квадрат или F-статистики.
- Оберточные методы — оценка подмножеств признаков по качеству итоговой модели, например рекурсивное исключение признаков (RFE), вычислительно затратны.
- Встроенные методы — отбор как часть процесса обучения: L1-регуляризация (Lasso), обнуляющая коэффициенты неинформативных признаков, или важность признаков в древесных моделях.
Подробнее см. Отбор признаков.
Разделение выборок
Train / validation / test
Трёхчастное разбиение выборки отделяет данные для настройки параметров модели (обучающая выборка), для подбора гиперпараметров и выбора модели (валидационная выборка) и для итоговой несмещённой оценки качества (тестовая выборка). Типичные пропорции — 60/20/20, 70/15/15 или 80/10/10 в зависимости от объёма исходных данных.
Стратификация
При несбалансированных классах случайное разбиение может дать непропорциональное распределение классов между частями выборки. Стратифицированное разбиение сохраняет исходное соотношение классов (или, в задаче регрессии, распределение целевой переменной по бинам) во всех частях.
Кросс-валидация
K-fold кросс-валидация делит выборку на частей; каждая часть поочерёдно выступает валидационной, а оставшиеся
— обучающими; итоговая метрика усредняется по всем разбиениям, что даёт более устойчивую оценку, чем единственное разбиение. Стратифицированная k-fold версия дополнительно сохраняет пропорции классов в каждом фолде. Leave-one-out — частный случай при
, вычислительно затратный, но применимый для очень малых выборок.
Временная кросс-валидация
Для временных рядов случайное перемешивание недопустимо: оно приводит к использованию будущих наблюдений для предсказания прошлых (заглядывание в будущее, look-ahead bias). Применяются:
- расширяющееся окно (walk-forward) — обучающая выборка последовательно растёт, тестирование всегда происходит на следующем по времени отрезке;
- скользящее окно — обучающая выборка фиксированного размера сдвигается вперёд по времени.
В обоих случаях порядок наблюдений строго сохраняется.
Pipeline: построение конвейера предобработки
Конвейер предобработки объединяет последовательность шагов (импутация → обработка выбросов → преобразование → кодирование → масштабирование → уменьшение размерности) вместе с обучением модели в единый объект, гарантирующий, что к обучающим и новым данным применяются идентичные преобразования.
Исходные данные
│
▼
Разбиение на train / validation / test
│
▼
[только train] → подбор параметров предобработки
(среднее/медиана для импутации, min/max или μ/σ для масштабирования,
статистики target encoding, компоненты PCA и т.д.)
│
▼
Применение уже подобранных преобразований к train, validation и test
│
▼
Обучение модели на преобразованном train
│
▼
Оценка на validation (подбор гиперпараметров) и на test (итоговая оценка)
Предотвращение утечки данных
Ключевой принцип: любой шаг предобработки, «обучающийся» на данных, — расчёт среднего или медианы для импутации, минимума/максимума или среднего/стандартного отклонения для масштабирования, статистик target encoding, компонент PCA, отбор признаков по связи с целевой переменной — должен настраиваться исключительно на обучающей части выборки (или на обучающей части текущего фолда при кросс-валидации) и затем лишь применяться, без повторной настройки, к валидационным и тестовым данным. В противном случае информация из валидационной или тестовой выборки просачивается в обучение, завышая оценку качества модели и не отражая её реального поведения на новых данных.
При использовании кросс-валидации это означает, что все параметрические шаги предобработки должны находиться внутри цикла кросс-валидации и пересчитываться заново для каждого фолда, а не применяться единожды ко всей выборке до разбиения. Программные средства вроде класса Pipeline и ColumnTransformer в библиотеке scikit-learn созданы именно для того, чтобы обеспечить эту дисциплину автоматически[1].
Чек-лист и распространённые ошибки
Чек-лист
- Изучены типы и статистики всех признаков, построены визуализации распределений и пропусков.
- Оценена доля и предполагаемый характер пропущенных значений (MCAR / MAR / MNAR) перед выбором метода импутации.
- Проверено наличие явных и неявных дубликатов.
- Выбросы обнаружены, и выбрана стратегия обработки, соответствующая их природе (ошибка измерения или редкое валидное событие).
- Способ масштабирования выбран с учётом используемого алгоритма (дерево решений против линейной модели или нейронной сети).
- Категориальные признаки закодированы способом, не создающим ложный порядок и не порождающим утечку через целевую переменную.
- Разбиение на train / validation / test выполнено до вычисления любых статистик для предобработки.
- Для несбалансированных классов использована стратификация.
- Для временных данных использована временная кросс-валидация без перемешивания.
- Все шаги предобработки объединены в единый воспроизводимый конвейер (pipeline).
- Проверено отсутствие прямой или косвенной утечки целевой переменной в признаки.
Распространённые ошибки
- Вычисление статистик масштабирования или импутации на всей выборке до её разбиения на train/test — классический источник утечки данных.
- Применение target encoding без перекрёстного расчёта статистик внутри обучающей выборки.
- Удаление выбросов без анализа их природы, приводящее к потере редких, но информативных наблюдений.
- Выбор метода импутации без учёта характера пропущенности (MCAR/MAR/MNAR).
- Использование Label Encoding для номинальных признаков без учёта того, что линейные модели интерпретируют коды как порядок.
- Перемешивание временных данных при формировании фолдов кросс-валидации.
- Чрезмерная очистка данных, устраняющая естественную вариативность и информативные сигналы вместе с шумом.
См. также
- Инженерия признаков
- Метод главных компонент
- Отбор признаков
- Кросс-валидация
- Переобучение
- Категориальный признак
- Обнаружение выбросов
- Импутация пропущенных данных
- Нормализация данных
Литература
- Hastie T., Tibshirani R., Friedman J. The Elements of Statistical Learning: Data Mining, Inference, and Prediction. — 2nd ed. — New York: Springer, 2009.
- Kuhn M., Johnson K. Feature Engineering and Selection: A Practical Approach for Predictive Models. — Boca Raton: CRC Press, 2019.
- García S., Luengo J., Herrera F. Data Preprocessing in Data Mining. — Springer, 2015.
- Han J., Kamber M., Pei J. Data Mining: Concepts and Techniques. — 3rd ed. — Morgan Kaufmann, 2011.
- Little R.J.A., Rubin D.B. Statistical Analysis with Missing Data. — 3rd ed. — Wiley, 2019.
- Box G.E.P., Cox D.R. An Analysis of Transformations // Journal of the Royal Statistical Society, Series B. — 1964. — Vol. 26, No. 2. — P. 211—252.
- Yeo I.-K., Johnson R.A. A New Family of Power Transformations to Improve Normality or Symmetry // Biometrika. — 2000. — Vol. 87, No. 4. — P. 954—959.
- Micci-Barreca D. A Preprocessing Scheme for High-Cardinality Categorical Attributes in Classification and Prediction Problems // ACM SIGKDD Explorations Newsletter. — 2001. — Vol. 3, No. 1. — P. 27—32.
- Press G. Cleaning Big Data: Most Time-Consuming, Least Enjoyable Data Science Task, Survey Says // Forbes. — 2016.
- scikit-learn developers. Preprocessing data // scikit-learn documentation. — URL: https://scikit-learn.org/stable/modules/preprocessing.html

