Данные

Data preprocessing

Предобработка данных

актуальноТекущий рабочий стандарт

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

Ключевые тезисы

  • Все преобразования должны быть оформлены как воспроизводимый pipeline, а не как ручные шаги в ноутбуке.
  • Параметры преобразований подбираются только на train и применяются к val/test.
  • Один и тот же код предобработки должен работать в обучении и в проде.
Тема также относится к главам:Инженерия данныхНадёжность

Подробный разбор

2 подтем — раскройте любую, чтобы увидеть объяснение, формулы, примеры и интерактивные графики.

1

Пайплайн вместо ручных шагов

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

Главное правило предобработки: то, что вы сделали с train, должно автоматически повториться на test и в проде. Ручное «я тут поправил пару значений» гарантированно расходится с продакшеном.

from sklearn.pipeline import Pipeline
from sklearn.compose import ColumnTransformer
from sklearn.impute import SimpleImputer
from sklearn.preprocessing import StandardScaler, OneHotEncoder

num = Pipeline([("imp", SimpleImputer(strategy="median")),
                ("sc", StandardScaler())])
cat = Pipeline([("imp", SimpleImputer(strategy="most_frequent")),
                ("ohe", OneHotEncoder(handle_unknown="ignore"))])

prep = ColumnTransformer([("num", num, num_cols), ("cat", cat, cat_cols)])
model = Pipeline([("prep", prep), ("clf", LogisticRegression())])
model.fit(X_train, y_train)   # все параметры выучены только на train
Один объект `model` содержит и предобработку, и модель — его же сохраняют в прод
На практике

handle_unknown="ignore" — не косметика: в проде обязательно появится категория, которой не было в обучении, и без этого сервис упадёт.

2

Типы, дубликаты и согласованность

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

  • Типы: числа, приехавшие строками («1 234,5»), даты как текст, булевы как «Да/Нет».
  • Дубликаты: полные копии строк раздувают вес объекта; частичные (один клиент дважды) ломают разбиение выборки.
  • Единицы измерения: рубли и тысячи рублей в одном столбце — классика после объединения источников.
  • Категории-синонимы: «Москва», «москва», «МСК» — три разных значения для модели.
Пример

В датасете автомобилей столбец price пришёл строкой с символом ? вместо пропуска. pd.to_numeric(df.price, errors="coerce") превращает ? в NaN — и только после этого видно, что пропусков 4, а не 0.

Связанные темы

Надёжность данных · Подготовка данных

Data Quality85%

Качество данных · Инженерия данных

Автоматические проверки, которые ловят поломку источника раньше, чем она попадёт в модель.

Data Contracts85%

Контракты данных · Инженерия данных

Явная договорённость между источником и потребителем: какие поля, каких типов и с какими гарантиями.

Idempotency & Exactly-once85%

Идемпотентность и гарантии доставки · Инженерия данных

Что происходит при повторной обработке события и как не задвоить данные.

Change Data Capture85%

Захват изменений (CDC) · Инженерия данных

Чтение журнала изменений базы вместо периодических полных выгрузок.

Feature Stores85%

Хранилища признаков · MLOps

Централизованное хранилище признаков, единое для обучения и онлайн-инференса.

Data leakage85%

Утечка данных · Данные

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

Data leakage85%

Утечка данных · Практика ML

Самая дорогая ошибка в ML: модель отлично работает офлайн и разваливается в проде.

Missing values75%

Пропущенные значения · Данные

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

Outliers75%

Выбросы · Данные

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

Encoding75%

Кодирование категорий · Данные

Перевод категориальных признаков в числа: one-hot, ordinal, target encoding, хеширование, эмбеддинги.

Normalization & Standardization75%

Нормализация и стандартизация · Данные

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

Feature engineering75%

Конструирование признаков · Данные

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

ML Pipelines75%

ML-пайплайны · MLOps

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