Предобработка данных
Материал из 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) | Категория заменяется величиной | Даёт монотонную шкалу, естественно сочетается с логистической регрессией и предварительным биннингом, хорошо агрегируется в Information Value для оценки силы признака | Определён только для бинарной целевой переменной, требует сглаживания при нулевом числе наблюдений одного из классов в группе, риск утечки без перекрёстного расчёта статистик | Кредитный скоринг, логистическая регрессия в задачах бинарной классификации
Для target encoding и WOE статистики необходимо рассчитывать исключительно по обучающей части данных (или по обучающей части каждого фолда при кросс-валидации) — подробнее см. раздел «Pipeline». Инженерия признаковПомимо преобразования существующих признаков, качество модели часто определяется созданием новых — на основе доменных знаний, взаимодействий между признаками (произведения, отношения), агрегатов по группам, извлечения компонентов из дат (день недели, признак праздника), а также признаков, полученных из текста или геоданных. Поскольку это широкая самостоятельная область со своим набором методов, она подробно рассматривается в отдельной статье — см. Инженерия признаков. Уменьшение размерностиМетод главных компонентМетод главных компонент (PCA) находит ортогональные направления максимальной дисперсии данных. Для центрированной матрицы признаков
а главные компоненты являются собственными векторами этой матрицы, удовлетворяющими уравнению
упорядоченными по убыванию собственных значений Отбор признаков
Подробнее см. Отбор признаков. Разделение выборокTrain / validation / testТрёхчастное разбиение выборки отделяет данные для настройки параметров модели (обучающая выборка), для подбора гиперпараметров и выбора модели (валидационная выборка) и для итоговой несмещённой оценки качества (тестовая выборка). Типичные пропорции — 60/20/20, 70/15/15 или 80/10/10 в зависимости от объёма исходных данных. СтратификацияПри несбалансированных классах случайное разбиение может дать непропорциональное распределение классов между частями выборки. Стратифицированное разбиение сохраняет исходное соотношение классов (или, в задаче регрессии, распределение целевой переменной по бинам) во всех частях. Кросс-валидацияK-fold кросс-валидация делит выборку на Временная кросс-валидацияДля временных рядов случайное перемешивание недопустимо: оно приводит к использованию будущих наблюдений для предсказания прошлых (заглядывание в будущее, look-ahead bias). Применяются:
В обоих случаях порядок наблюдений строго сохраняется. Pipeline: построение конвейера предобработкиКонвейер предобработки объединяет последовательность шагов (импутация → обработка выбросов → преобразование → кодирование → масштабирование → уменьшение размерности) вместе с обучением модели в единый объект, гарантирующий, что к обучающим и новым данным применяются идентичные преобразования.
Исходные данные
│
▼
Разбиение на train / validation / test
│
▼
[только train] → подбор параметров предобработки
(среднее/медиана для импутации, min/max или μ/σ для масштабирования,
статистики target encoding, компоненты PCA и т.д.)
│
▼
Применение уже подобранных преобразований к train, validation и test
│
▼
Обучение модели на преобразованном train
│
▼
Оценка на validation (подбор гиперпараметров) и на test (итоговая оценка)
Предотвращение утечки данныхКлючевой принцип: любой шаг предобработки, «обучающийся» на данных, — расчёт среднего или медианы для импутации, минимума/максимума или среднего/стандартного отклонения для масштабирования, статистик target encoding, компонент PCA, отбор признаков по связи с целевой переменной — должен настраиваться исключительно на обучающей части выборки (или на обучающей части текущего фолда при кросс-валидации) и затем лишь применяться, без повторной настройки, к валидационным и тестовым данным. В противном случае информация из валидационной или тестовой выборки просачивается в обучение, завышая оценку качества модели и не отражая её реального поведения на новых данных. При использовании кросс-валидации это означает, что все параметрические шаги предобработки должны находиться внутри цикла кросс-валидации и пересчитываться заново для каждого фолда, а не применяться единожды ко всей выборке до разбиения. Программные средства вроде класса Pipeline и ColumnTransformer в библиотеке scikit-learn созданы именно для того, чтобы обеспечить эту дисциплину автоматически[1]. Чек-лист и распространённые ошибкиЧек-лист
Распространённые ошибки
См. также
Литература
|

