Пропуски бывают случайными и неслучайными — от механизма зависит, можно ли их просто заполнить.
Ключевые тезисы
- MCAR / MAR / MNAR — три механизма пропусков с разными последствиями для смещения оценок.
- Простые стратегии: медиана, мода, отдельная категория; сложные: KNN-imputer, модельное .
- Флаг «значение было пропущено» часто сам по себе является сильным .
Какую задачу решает
Пропуск — это не отсутствие информации, а информация особого рода. Прежде чем чем-то его заполнять, нужно понять механизм: значение потерялось случайно, потерялось по причине, связанной с другими признаками, или сам факт пропуска связан с целевой переменной.
Разница практическая. При случайном пропуске (MCAR) можно почти всё, включая удаление строк. При MAR помогает импьютация по другим признакам. При MNAR — например, доход не указали именно те, у кого он высокий, — любое заполнение вносит систематическое смещение, и правильный ход обычно другой: добавить флаг пропуска как отдельный .
В данных о кредитах поле «стаж на текущем месте» пусто у 12% заявителей. Заполнение медианой даёт признаку правдоподобный вид — и теряет главное: пропуск встречается у безработных и у тех, кто скрывает нестабильную занятость. Добавьте has_experience = 0/1 рядом с заполненным значением, и этот флаг с высокой вероятностью попадёт в топ важности модели. Общее правило: заполняйте, но всегда сохраняйте факт пропуска отдельным .
Подробный разбор
| Механизм | Что это значит | Пример | Можно ли заполнять |
|---|---|---|---|
| MCAR | пропуск не зависит ни от чего | сбой датчика | да, смещения не будет |
| MAR | зависит от других | молодые реже указывают доход | да, но по группам |
| MNAR | зависит от самого значения | высокие зарплаты скрывают | нет — нужен флаг и осторожность |
Проверить механизм полностью нельзя, но многое видно: сравните распределения в строках с пропуском и без. Если они различаются — это не MCAR.
- Удалить строки — только если пропусков мало (< 5%) и они MCAR.
- Константа / медиана / мода — быстро и безопасно; медиана устойчивее среднего к выбросам.
- Отдельная категория «неизвестно» — для категориальных часто лучший вариант.
- По группам: медиана дохода внутри возрастной группы — простой способ учесть MAR.
- Модель: обучить регрессию/, предсказывающую пропущенный по остальным.
Почти всегда стоит добавить бинарный was_missing. Часто сам факт пропуска информативнее подставленного значения: «не указал доход» — сильный сигнал в скоринге.
Медиана по столбцу игнорирует всё, что известно об объекте из других . MICE (Multiple Imputation by Chained Equations) идёт иначе: каждый признак с пропусками по становится целевой переменной, а остальные — предикторами, и обучается регрессия, восстанавливающая его значения. Проходы повторяются, пока значения не стабилизируются.
- Все пропуски грубо заполняются (медианой или средним) — стартовая точка.
- Для первого с пропусками восстановленные значения удаляются обратно.
- На наблюдаемой части обучается модель «этот ← все остальные», и пропуски предсказываются ею.
- То же повторяется для каждого ; цикл проходов идёт до сходимости.
from sklearn.experimental import enable_iterative_imputer # noqa: F401
from sklearn.impute import IterativeImputer
from sklearn.ensemble import HistGradientBoostingRegressor
imp = IterativeImputer(
estimator=HistGradientBoostingRegressor(),
max_iter=10, random_state=0,
)
X_train_imp = imp.fit_transform(X_train) # обучение только на train
X_test_imp = imp.transform(X_test)| Метод | Учитывает связи | Стоимость | Когда брать |
|---|---|---|---|
| Медиана / мода | нет | мгновенно | мало пропусков, нужен быстрый |
| По группам | частично | низкая | известен группирующий (MAR) |
| kNN-импутация | да, локально | средняя | небольшие таблицы, разнородные |
| MICE | да, через регрессии | высокая | много связанных числовых |
Импутер — часть модели: он обучается на train и применяется к test, иначе в обучение протекает информация из теста. И бинарный флаг was_missing полезен даже при самой аккуратной импутации.
Где применяется
- Табличные данные из реальных системПропуски есть почти всегда — вопрос лишь в том, признали вы их механизм или нет.
- Опросы и анкетыКлассический MNAR: не отвечают на чувствительные вопросы именно те, у кого ответ нестандартный.
- Данные с датчиковПропуски связаны с отказами оборудования — сам факт пропуска диагностичен.
- с нативной поддержкой, и выучивают направление для пропуска сами — часто лучше любой импьютации.
Плюсы, минусы и альтернативы
Плюсы
- Правильная работа с пропусками часто даёт больше, чем настройка модели.
- Флаг пропуска бесплатен и нередко оказывается сильным .
- Современный обрабатывает пропуски штатно, без предварительного заполнения.
Минусы
- Заполнение средним занижает и искажает .
- Удаление строк выбрасывает данные и смещает выборку, если пропуск не MCAR.
- Сложная импьютация — ещё одна модель, которую нужно валидировать и версионировать.
- Механизм пропуска обычно нельзя проверить по данным, только предположить.
Брать, если
- Пропусков больше 1–2% в значимом признаке — разбираться обязательно.
- Доля пропусков различается между классами — это сигнал, а не шум.
Не брать, если
- Не заполняйте пропуски перед бустингом «на всякий случай»: вы отнимаете у него информацию.
- Не удаляйте строки с пропусками, если их больше нескольких процентов.
Чем заменяют
Видеолекции
Тайм-кода именно на эту тему в записях нет. Но глава «Данные» разобрана в курсах целиком — с той оговоркой, что место в записи придётся искать самому.
Связанные темы
Подготовка данных
Data preprocessing75%
Предобработка данных · ДанныеПриведение сырых данных к виду, пригодному для обучения: типы, форматы, дубликаты, согласованность единиц измерения.
Outliers75%
Выбросы · ДанныеНаблюдения, резко отличающиеся от остальных. Они бывают ошибками измерения, а бывают самым ценным сигналом.
Encoding75%
Кодирование категорий · ДанныеПеревод категориальных признаков в числа: one-hot, ordinal, target encoding, хеширование, эмбеддинги.
Normalization & Standardization75%
Нормализация и стандартизация · ДанныеПриведение признаков к сопоставимым масштабам, без которого расстояния, градиенты и регуляризация работают некорректно.
Feature engineering75%
Конструирование признаков · ДанныеСоздание признаков, в которых закономерность становится линейно отделимой или просто более заметной для модели.
ML Pipelines75%
ML-пайплайны · MLOpsОформление обучения как воспроизводимой последовательности шагов вместо разрозненных ноутбуков.
Всё, что названо в описании, разобрано здесь же или в соседней теме — переходы под каждым определением.
MCAR
Пропуск полностью случаен и ни с чем не связан. Самый безобидный случай.
Разбор ниже: Три механизма пропусковMAR
Пропуск объясняется другими наблюдаемыми признаками — импьютация по ним корректна.
Разбор ниже: Три механизма пропусковMNAR
Пропуск зависит от самого пропущенного значения. Любое заполнение смещает выводы.
Разбор ниже: Три механизма пропусковФлаг пропуска
Бинарный «значение отсутствовало». Часто информативнее любого заполненного числа.
Разбор ниже: Стратегии заполненияИмпьютация по модели
Предсказание пропуска по другим признакам (, итеративная). Точнее среднего, но дороже и рискованнее.
Разбор ниже: Стратегии заполненияПрофильная компетенция для ролей: Data Scientist, Аналитик данных, Data Engineer.
Усиливает профиль: Продуктовый инженер.
Спрашивают на собеседовании: СКБ Контур — Проверка контрагентов, Т1 — Корпоративный ML, Газпром нефть — Геология и добыча, СИБУР — Предиктивное обслуживание, Росатом — Промышленный ИИ.
Разбор архитектуры, где эта тема — один из кирпичей: требования, развилки, цифры и режимы отказа.
Глава «Данные» последний раз правилась . Нашли ошибку — напишите.