Заполнение пропусков в данных
Когда мы измеряем признаки объектов, некоторые из признаков могут отсутствовать. В этом случае вектор признаков будет содержать пропуски (missing values). Например, если объект описывает человека по дан ным заполняемой анкеты, то человек мог не заполнять отдельные поля или сделать это неразборчиво. При этом большинство моделей машинного обучения требуют для обработки полный вектор признаков без пропусков.
Простейшим выходом при работе с пропусками могло бы быть исключение всех объектов, у которых хотя бы один из признаков не указан. Этот приём подходит, если число объектов с пропущенными значениями невелико относительно общего объема выборки. Если же таких объектов много, то нужно выработать метод заполнения пропущенных значений (missing data imputation). Рассмотрим популярные методы для различных типов данных.
Пропуски в категориальных и бинарных признаках
Для категориальных признаков, принмающих одно из дискретных значений, таких как марка машины, профессия и город проживания человека пропуски можно заполнять:
-
максимально частой категорией (в статистике это называется модой распределения, mode imputation)
-
новой категорией [пропуск]
Второй способ, очевидно, лучше, когда число категорий велико, и нет оснований во всех неопределённых случаях предпочитать самую частую категорию.
Более продвинутая техника заключается в предсказании пропущенной категории отдельным классификатором, обученным предсказывать значение признака с пропусками по оставшимся известным признакам. Это позволит заполнять значения не константой, а переменной величиной в зависимости от других характеристик объекта. Например, если человек не указал город проживания, но указал место работы, то его местоположение можно восстановить с некоторой точностью.
Пропуски в веществен ных признаках
Для вещественных признаков пропуски можно заполнять
Выборочные статистики считаются по присутствующим значениям признака в других объектах. Медиана более предпочтительна, поскольку является мерой оценки центра распределения, устойчивой к наличию выбросов (robust to outliers), в отличие от среднего.
Оцените, насколько сильно может сместиться среднее и медиана при внесении одного очень большого или очень малого наблюдения в выборку.
Часто, однако, признаки неправильно заполнять значением "в среднем", поскольку сам факт того, что значение пропущено, может говорить о нестандартности реального значения признака. Например, человек мог не указать величину своей зарплаты, если ему кажется, что она слишком маленькая или, наоборот, слишком большая. Для таких ситуаций нужно предсказывать значение пропущенного признака по другим признакам, решая задачу регрессии. Либо просто подставлять условное среднее или медиану при условии другого известного признака, связанного с рассматриваемым.
Можно создать дополнительный бинарный признак, характеризующий, было ли значение первоначального признака известно заранее или было пропущено с последующим заполнением. Это позволит модели машинного обучения различать эти две ситуации и относиться к автоматически заполненному значению признака с большим недоверием.
При заполнении условной модой/средним/медианой можно также генерировать признак условного стандартного отклонения, чтобы подсказать модели, с каким уровнем неопределённости признак был предсказан.
Программные способы заполнения пропущенных значений в данных представлены в библиотеках pandas
[3], sklearn
[4] и feature-engine
[5]