Перейти к основному содержимому Перейти к дополнительному содержимому

Подстановка значений NULL

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

В ходе автоматической предварительной обработки данных значения NULL обрабатываются путем исключения столбцов, в которых отсутствует более 50 процентов значений, и путем подстановки отсутствующих значений. Категориальные значения заполняются значением MODE, а числовые значения — средним значением.

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

Вы можете пересмотреть свои методы сбора данных, чтобы обеспечить их полноту, и при необходимости внедрить новые методы. Если вы хотите сохранить представление пустого значения, заполните значения NULL такими значениями, как «Другое» или «Неизвестно».

Как происходит подстановка

Для подстановки значений NULL обычно используются следующие методы.

Числовые значения

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

Категориальные значения

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

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

Влияние подстановки числовых значений

Числовая подстановка 1 представлена на точечном графике с линией тренда. Числовые значения находятся на оси категорий (x), а целевые значения — на оси значений (y). Кажется, что линия тренда хорошо подогнана, но она учитывает только точки данных с известными значениями x.

Числовая подстановка 1: график с известными значениями и линией тренда

График с линией тренда.

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

Числовая подстановка 2: график с известными значениями и подставленными средними значениями. Подставленные значения распределены не случайным образом. На графике появилась новая линия тренда.

График с подставленными значениями, которые вызвали отклонение линии тренда.

На графике для числовой подстановки 3 показано, как будет выглядеть линия тренда при подстановке среднего значения и случайном распределении отсутствующих значений. Другими словами, когда знание о том, присутствуют ли значения или отсутствуют, не позволяет сделать какие-либо дополнительные выводы. Линия тренда не меняется при случайном распределении отсутствующих значений. Если бы мы подставили 0 вместо среднего значения, линия тренда изменилась бы так же, как и в графике для числовой подстановки 2.

Числовая подстановка 3: график с известными значениями и случайно распределенными подставленными значениями. Линия тренда не изменилась.

График с подставленными значениями, которые не вызвали отклонение линии тренда.

Пример: определение кредитоспособности

Рассмотрим пример из реальной жизни, где x — это годовой доход заемщика, а y — сумма кредита, на которую он может рассчитывать. Предполагается, что чем больше человек зарабатывает, тем больше денег он может взять взаймы. В этом случае мы получим такой же график, как и для числовой подстановки 1, приведенной выше.

Допустим, люди, которые зарабатывают меньше денег, скорее всего, не предоставят данные о своем годовом доходе. В этом случае значение x будет отсутствовать по определенной причине. Подстановка среднего значения для этих значений приведет к искажению результатов модели, как на графике для числовой подстановки 2.

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

Еще один вариант подстановки, который следует рассмотреть: что если вместо среднего значения подставить 0? В примере с определением кредитоспособности утверждение о том, что кто-то зарабатывает 0 долларов в год, вероятно, будет неверным. В этом случае модель будет искажена, как на графике для числовой подстановки 2.

Влияние подстановки категориальных значений

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

На приведенной ниже диаграмме видна взаимосвязь между отсутствующими значениями в столбце Missing_1 и целью, при этом значения в столбце Missing_2 распределены случайным образом. Мы видим это, потому что столбец Missing_2 соответствует общему среднему значению цели. Столбец Missing_1 соответствует графику для числовой подстановки 2, а столбец Missing_2 — графику для числовой подстановки 3.

Подстановка категориальных значений: столбцы Missing_1 и Missing_2 являются примерами отсутствующих значений с закономерностями и без них.

На графике показано распределение классов A, B и C с общим средним значением и подставленными категориальными значениями.

В отличие от примера с числовыми значениями, в данном случае оба столбца Missing_1 и Missing_2 искажают выявленные закономерности. Искажаются только закономерности, выявленные для подмножества данных категории B, которая будет подстановочным значением, если при подстановке будет использоваться значение MODE, так как это самая большая категория.

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

Подробнее

Помогла ли вам эта страница?

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