Методы вменения отсутствующих значений данных

В последней статье мы обсудили 3 общие и типичные ситуации, с которыми сталкиваются при обработке данных: оптимизация чтения файлов CSV с большим количеством ненужных столбцов, использование метода карты для создания столбцов новых категорий и поиск пустых строк в вашем DataFrame, которые не помечены как null.

Однако другой общей характеристикой реальных данных является наличие пропущенных значений - другими словами, неполный набор данных. Если вы раньше работали с реальными данными, вы можете понять, насколько неприятной может быть работа с отсутствующими значениями, особенно если данные будут использоваться для обучения модели. Это связано с тем, что большинство существующих моделей машинного обучения плохо работают с пропущенными значениями.

Заявление об ограничении ответственности: в связи с характером темы данная статья не соответствует формату из трех сценариев. Вместо этого он следует более описательному подходу, чем подходу, требующему большого количества кодов. Чтобы получить представление о том, как каждый метод может быть реализован в Pandas, обратитесь к этой ссылке репозитория GitHub.

Что вызывает отсутствие значений данных?

Причины пропущенных значений можно разделить на два основных типа:

A. Значение отсутствует случайно

Б. Значение отсутствует, но не случайно

А. Значение отсутствует случайно

Это когда вероятность того, что какая-либо ценность в этой функции отсутствует, одинакова. Или, другими словами, пропущенное значение не имеет ничего общего с изучаемым наблюдением. Например, когда часть информации во время обработки потеряна или неуместна, независимо и независимо от любой другой наблюдаемой информации.

Б. Значение отсутствует, но не случайно

Это когда шансы на то, что какая-либо ценность в этой функции отсутствует, не одинаковы. Или, другими словами, отсутствующие значения зависят от определенной функции, наблюдаемой в наборе данных. Например, когда оба пола спрашивают об их весе или возрасте, может быть более высокая вероятность того, что будет больше женщин с пропущенными значениями, чем мужчин. Это могло произойти в результате сокрытия информации, слишком важной для одного пола.

Но как мы можем исправить эти недостающие значения? В статистике это называется условным исчислением.

Вменение - это акт замены недостающих данных статистическими оценками пропущенных значений.

Существует довольно много методов вменения. Однако, решая, какой метод использовать, следует помнить о некоторых вещах. Мы можем сформулировать эти опасения, задав 3 вопроса:

  • Какой тип переменной (тип данных) функции?
  • Как метод вменения влияет на распределение данных?
  • В чем причина пропущенного значения?

Тип данных

Типы данных обычно можно определить как числовые и категориальные. Эти типы данных влияют на то, какой метод мы должны использовать. Например, было бы неразумно заменять категориальную переменную средним значением переменных или заменять числовую переменную категориальным методом.

Распространение данных

Существуют разные типы распределения данных, но мы сосредоточимся на наиболее распространенных: нормальное распределение и асимметричное распределение (будь то наклон вправо или влево). Метод вменения может исказить распределение, и это может снизить производительность линейной модели машинного обучения. Однако степень искажения во многом зависит от вмененного процента пропущенных значений.

Чем выше вмененный процент пропущенных значений, тем больше искажение.

Обзор набора данных

Для целей этой статьи был создан гипотетический набор данных, состоящий из 5 столбцов (город, степень, возраст, зарплата, семейное положение) и 10 строк. Предположим, что каждая строка представляет собой запись с подробными сведениями об участниках опроса. И предположим, что наша цель - предсказать, состоит человек в браке или нет, на основе других доступных характеристик / столбцов.

По мере работы с этой статьей вы можете увидеть варианты указанного выше набора данных. Это поможет упростить важный столбец для каждого метода вменения.

Давайте перейдем к типам методов вменения

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

1. Полное удаление строк или столбцов с пропущенными значениями

Это один из самых интуитивно понятных и простых методов. Как следует из этого, он включает в себя удаление всех строк или столбцов, в которых присутствуют отсутствующие значения. Этот метод можно использовать независимо от того, числовой или категориальный характер переменной.

Удаление строк

Из приведенных выше диаграмм мы видим, что после удаления строк с пропущенными значениями количество строк уменьшилось с 10 до 6, при этом были удалены все другие непропущенные значения вместе с пропущенными значениями.

Удаление столбцов

Из приведенной выше диаграммы мы видим, что количество столбцов уменьшилось с 3 до 2.

Этот метод имеет смысл использовать, когда значения отсутствуют случайным образом (т.е. нет зависимости между этой функцией и любой другой функцией в наборе данных). У этого метода есть два преимущества:

  • Никаких манипуляций с данными не требуется
  • Сохраняет переменное распределение

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

  • Это связано с тем, что удаление строк и столбцов может означать потерю важной информации о данных вместе с отсутствующими значениями.
  • Другая причина заключается в том, что при использовании вашей модели в производстве модель не будет автоматически знать, как обрабатывать недостающие данные.

При использовании этого метода следует соблюдать несколько практических правил:

  • Строки пропущенных значений могут быть удалены, если значения NULL (отсутствующие значения) составляют около 5% (или меньше) от общих данных.
  • Столбцы с пропущенными значениями могут быть полностью удалены, если значения NULL значительно больше, чем другие присутствующие значения. В этой ситуации не имеет смысла сохранять эти столбцы, поскольку они содержат мало или совсем не содержат описательной информации о данных.

2. Среднее / медианное значение и расчет режима

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

Для числовых переменных

Среднее как мера сильно зависит от выбросов или если распределение данных или столбца не является нормальным. Поэтому разумно сначала проверить распределение столбца, прежде чем решать, использовать ли среднее вменение или среднее вменение.

Среднее вменение работает лучше, если распределение имеет нормальное или гауссовское распределение, в то время как среднее вменение предпочтительнее для асимметричного распределения (правого или левого)

Используя наш пример набора данных, давайте посмотрим, как будет выглядеть результат этого метода:

Для категориальных переменных

Вменение режима означает замену отсутствующих значений режимом или значением наиболее часто встречающейся категории.

Результаты этого вменения будут выглядеть так:

Полезно знать, что приведенные выше методы вменения (т. Е. Меры центральной тенденции) работают лучше всего, если пропущенные значения отсутствуют случайным образом. В этих случаях можно справедливо предположить, что пропущенные значения, скорее всего, очень близки к значению среднего, медианы или режима распределения, поскольку они представляют собой наиболее частые / средние наблюдения.

У этого метода есть два преимущества:

  • Легко реализовать
  • Этот метод может быть интегрирован в производство или для будущего неизвестного набора данных.

Однако есть и недостатки:

  • Это искажает распределение набора данных
  • Он искажает дисперсию набора данных за счет уменьшения дисперсии; то есть новая дисперсия недооценена по сравнению с исходной дисперсией перед вменением. Это связано с тем, что этот метод создает аналогичные значения в распределении, что сокращает межквартильный размах и, в свою очередь, создает больше выбросов.
  • Это также искажает ковариацию, то есть связь этого объекта с другими объектами в наборе данных.
  • В случае категориальных переменных импутация режима искажает связь наиболее часто встречающейся метки с другими переменными в наборе данных и может привести к чрезмерному представлению наиболее часто встречающейся метки, если отсутствующие значения довольно велики.

Из-за всех этих недостатков рекомендуется использовать этот метод, когда недостающие значения составляют около 5% (или меньше) от общих данных.

3. Систематическая импутация случайной выборки

Этот метод включает замену отсутствующих значений значениями, извлеченными из исходной переменной. Его можно применять как к числовым, так и к категориальным переменным. Он также используется, когда значения отсутствуют случайно.

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

Но почему систематический, а не полностью случайный? Это потому, что мы хотим иметь возможность воспроизводить одно и то же значение каждый раз, когда используется переменная. И как? Указав случайное состояние.

Результаты этого импьютера будут выглядеть так:

В приведенном выше примере наш импьютер случайным образом выбирает 30 и 25, которые являются наиболее частыми значениями. Это имеет интуитивный смысл, поскольку более частые значения будут выбраны с большей вероятностью, чем значения, которые встречаются реже. В некотором смысле это похоже на использование импутера режима без искажения распределения переменной.

Некоторые преимущества этого метода по сравнению со средним / медианным / модовым условием включают:

  • Не искажает дисперсию
  • Не искажает распределение вне зависимости от процента замененных отсутствующих значений
  • По вышеуказанной причине он может лучше подходить для линейных моделей.

Однако у него есть несколько серьезных недостатков, которые следует учитывать:

  • Хотя у этого метода есть явное преимущество перед методом вменения среднего / медианного значения, он сравнительно не получил широкого распространения. Это могло быть из-за элемента случайности.
  • При замене отсутствующих значений в наборе тестов вмененные значения из набора поездов необходимо будет сохранить в памяти.

Другие методы, которые можно использовать, особенно если значения не пропущены случайно

4. Вменение произвольных значений

Это предполагает использование произвольного значения для замены отсутствующих значений. Их можно рассматривать как заполнители для пропущенных значений. Этот метод используется для числовых переменных.

Наиболее часто используемые числа для этого метода - -1, 0,99, -999 (или другие комбинации девяток). Решение о том, какой произвольный номер использовать, зависит от диапазона распределения ваших данных. Например, если ваши данные находятся в диапазоне от 1 до 100, было бы неразумно использовать 1 или 99, потому что эти значения могут уже существовать в ваших данных, и эти числа-заполнители обычно используются для отметки отсутствующих значений.

Результат этого импутера будет выглядеть так

Обратите внимание, что -1 было использовано, потому что этого значения нет в наборе данных. Можно также выбрать 0, 99 999 и т. Д., Если значение находится за пределами диапазона исходного набора данных.

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

5. Внесение недостающей категории

Этот метод используется для категориальных данных. При этом все отсутствующие значения в категориальном столбце помечаются как «отсутствующие».

Результат этого импутера будет выглядеть так:

Преимущество этого метода по сравнению с другими обсуждаемыми методами заключается в том, что он не делает предположений об отсутствующих значениях (т.е. будь то случайный или неслучайный или замена отсутствующего значения оценкой). Однако следует отметить, что этот метод создает дополнительную мощность для вашего столбца. Поэтому он не подходит для небольшого количества пропущенных значений, так как создает редкие метки, которые могут привести к переобучению.

6. Расчет отсутствующего индикатора

Этот метод можно использовать как для числовых, так и для категориальных переменных. Метод отсутствующего индикатора создает дополнительную двоичную переменную, которая указывает, отсутствовали ли данные для наблюдения или нет (например, 1 как отсутствующий и 0 как отсутствующий).

Этот метод обычно используется в сочетании с другими методами вменения, особенно с методами, предполагающими случайное отсутствие значения (за исключением метода полного удаления, по уважительным причинам). Создание двоичного индикатора отсутствия предполагает, что недостающие значения являются прогнозными.

Результат этого импутера будет выглядеть так:

Как видно из приведенной выше диаграммы, количество столбцов увеличилось с 3 до 4, а отсутствующие значения были заменены режимом столбца / переменной.

У этого метода есть некоторые дополнительные сложности:

  • Он расширяет пространство функций и размерность - то есть, если набор данных содержит 20 функций, и все они имеют отсутствующие значения, после добавления индикатора отсутствия для каждого столбца мы получаем набор данных из 40 функций.
  • Для удаления значений NULL все равно потребуется условное исчисление исходной переменной.
  • Это может привести к многократной коллинеарности между исходным столбцом и новым столбцом и может снизить производительность линейной модели.

Заключение

Как вы, возможно, догадались, решение, какой метод вменения использовать, означает решение, с каким искажением распределения может хорошо работать ваша модель. Это также зависит от того, какой тип данных вы хотите заменить, и от причины отсутствующих значений.

Однако пропущенные значения - не единственная характеристика реальных данных. Еще одна распространенная характеристика - это категориальные данные для моделей машинного обучения. Это также известно как категориальное кодирование. Это то, что мы обсудим в следующей публикации этой серии. Так что следите за обновлениями.

Примечание редактора. Heartbeat - это онлайн-публикация и сообщество, созданное авторами и посвященное предоставлению первоклассных образовательных ресурсов для специалистов по науке о данных, машинному обучению и глубокому обучению. Мы стремимся поддерживать и вдохновлять разработчиков и инженеров из всех слоев общества.

Являясь независимой редакцией, Heartbeat спонсируется и публикуется Comet, платформой MLOps, которая позволяет специалистам по данным и группам машинного обучения отслеживать, сравнивать, объяснять и оптимизировать свои эксперименты. Мы платим участникам и не продаем рекламу.

Если вы хотите внести свой вклад, отправляйтесь на наш призыв к участникам. Вы также можете подписаться на наши еженедельные информационные бюллетени (Deep Learning Weekly и Comet Newsletter), присоединиться к нам в » «Slack и подписаться на Comet в Twitter и LinkedIn для получения ресурсов, событий и гораздо больше, что поможет вам быстрее и лучше строить лучшие модели машинного обучения.