Что такое импутация данных?
Импутация данных — это процесс замены отсутствующих данных на замещающие значения.
В реальном мире наборы данных почти никогда не бывают идеальными. Очень часто встречаются пропущенные значения, обозначаемые как , , или просто заполнители, такие как или . Импутация данных — это стратегия, которую мы используем для обработки этих пропущенных значений разумным образом, вместо того чтобы просто удалять строки или столбцы, которые их содержат.
Почему это необходимо? («Зачем»)
Большинство алгоритмов машинного обучения предназначены для работы с полными наборами данных. Если вы попытаетесь скормить модели данные с пропущенными значениями, вы, скорее всего, получите ошибку.
У вас есть три основных варианта при обнаружении пропущенных данных:
- Удалить строки/столбцы с пропущенными данными (листинговое удаление): Это просто, но опасно. Вы можете потерять значительное количество ценной информации и внести смещение (bias) в ваш набор данных.
- Оставить пропущенные значения как есть: Это не вариант для большинства моделей.
- Импутировать пропущенные значения: Это предпочтительный подход, так как он позволяет сохранить все точки данных и другую информацию в наборе данных.
Главная цель импутации — максимально сохранить целостность набора данных и его статистические свойства.
Распространенные методы импутации данных («Как»)
Выбор метода импутации зависит от типа данных (числовые vs. категориальные) и характера пропусков.
Для числовых признаков:
-
Импутация средним/медианой:
- Как: Заменить пропущенные значения на среднее или медиану доступных значений в этом столбце.
- Плюсы: Очень просто и быстро.
- Минусы: Искажает исходное распределение данных и уменьшает дисперсию. Также игнорирует взаимосвязи между переменными. Медиана более устойчива к выбросам.
-
Импутация модой (также и для категориальных данных):
- Как: Заменить пропущенные значения на наиболее часто встречающееся значение (моду) в этом столбце.
- Плюсы: Просто.
- Минусы: Может значительно перепредставить наиболее распространенную категорию.
-
Импутация константой:
- Как: Заменить все пропущенные значения фиксированным, заранее определенным значением (например, или ).
- Плюсы: Просто.
- Минусы: Алгоритм может ошибочно придать этому константному значению особый смысл, которого на самом деле нет.
-
Импутация методом k-ближайших соседей (KNN):
- Как: Для пропущенного значения в строке алгоритм находит ‘k’ других строк (соседей), которые наиболее похожи на основе других доступных признаков. Затем пропущенное значение импутируется с использованием среднего (для числовых) или моды (для категориальных) этих соседей.
- Плюсы: Более сложный подход, так как использует информацию из похожих точек данных.
- Минусы: Вычислительно затратный на больших наборах данных, так как требует вычисления расстояний между всеми точками.
-
Итеративная импутация (продвинутый метод):
- Как: Это мощный метод, при котором каждый признак с пропущенными значениями моделируется как функция от других признаков. Модель (например, BayesianRidge, Decision Trees и т.д.) обучается предсказывать пропущенные значения в столбце на основе всех других столбцов. Это делается итеративно для каждого признака, с каждым раундом импутация улучшается.
- Плюсы: Очень точный, так как захватывает сложные взаимосвязи между переменными.
- Минусы: Вычислительно очень затратный и может привести к переобучению, если не быть осторожным.
Для категориальных признаков:
- Импутация модой (наиболее частым значением): Как описано выше.
- Импутация новой категорией (например, «Неизвестно»):
- Как: Рассматривать сам факт пропуска как новую категорию. Заменить все пропущенные значения меткой, такой как или .
- Плюсы: Просто и может быть очень эффективно, если «пропущенность» сама по себе информативна (например, то, что люди пропускают вопрос, может быть сигналом).
- Минусы: Увеличивает размерность данных.
Важные соображения и лучшие практики
-
Поймите характер пропусков: Это крайне важно. Являются ли данные…
- Полностью пропущенными случайно (MCAR)? То, что значение пропущено, не связано ни с какими другими наблюдаемыми или ненаблюдаемыми данными (например, анкета потерялась в почте).
- Пропущенными случайно (MAR)? Пропущенность связана с другими наблюдаемыми данными, но не с самим пропущенным значением (например, пожилые люди чаще могут скрывать свой возраст, но их настоящий возраст не является прямой причиной).
- Пропущенными не случайно (MNAR)? Пропущенность связана с самим пропущенным значением (например, люди с высокими доходами реже их указывают).
- Выбор метода импутации может зависеть от того, с каким из этих типов вы имеете дело.
-
Не импутируйте тестовые данные с помощью статистик тестовой выборки: Это критически важный момент для избежания утечки данных (data leakage). Вы должны вычислять значения для импутации (как среднее, медиана или параметры модели) ТОЛЬКО на обучающем наборе. Затем вы используете эти вычисленные значения для импутации как обучающего набора, так и тестового набора. Никогда не вычисляйте значения для импутации на тестовом наборе.
-
Добавляйте индикаторы пропущенных значений: Полезный прием — создать новый бинарный признак (столбец), который выступает в качестве флага, указывающего, было ли значение импутировано в конкретной строке ( для импутированного, для исходного). Это иногда может помочь модели, давая ей сигнал о том, что исходное значение отсутствовало.
Сравнение
| Метод | Лучше всего для | Плюсы | Минусы |
|---|---|---|---|
| Среднее/Медиана | Числовые | Просто, Быстро | Искажает распределение, Игнорирует связи |
| Мода (Наиболее частый) | Категориальные | Просто | Может перепредставить моду |
| Константа | Все | Просто | Модель может придать константе undue importance |
| KNN Импутация | Числовые, Категориальные | Использует схожесть строк | Вычислительно медленный |
| Итеративная импутация | Числовые, Категориальные | Очень точный, учитывает связи | Очень медленный, риск переобучения |
| Новая категория | Категориальные | Просто, захватывает “пропущенность” | Увеличивает количество признаков |
В итоге, импутация данных — это критически важный этап предобработки, который позволяет специалистам по данным эффективно работать с неполными данными, что приводит к созданию более робастных и точных моделей машинного обучения. Неверно выбранный метод может приводить к созданию артефактов.